#include "autoconf.h"
#include "Wine.tmpl"

#if defined(i386FreeBsd) || defined(FreeBSDArchitecture)
MAKE = gmake
CC = gcc -D__FreeBSD__
#endif

DEFINES = AutoDefines -DUSE_READLINE

/*
 * This is the second try at using Imakefiles. There are probably many
 * problems and things I haven't even considered. I do not have a fixed
 * Linux system to test them on, but thanks to Thomas Michlmayr
 * <tmichl@cosy.sbg.ac.at> for use of one of his boxes. 
 *
 * SEE BELOW ABOUT DEBUGGING AND LINUX
 *
 * Peter Galbavy, 31st Jan 1994: peter@wonderland.org
 */

#define IHaveSubdirs
#define	PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)' 'CC=$(CC)' 'MAKE=$(MAKE)'\
			'DEFINES=$(DEFINES)' 'LD=$(LD)' 'ASFLAGS=$(ASFLAGS)'

COMMONSUBDIRS = \
	controls \
	rc \
	ipc \
	loader \
	misc \
	multimedia \
	objects \
	windows

EMUSUBDIRS = \
	tools \
	debugger \
	if1632 \
	memory \
	miscemu

LIBSUBDIRS = \
	toolkit

WINEDIR = $(LIBDIR)/wine

COMMONOBJS = \
	controls/controls.o \
	ipc/ipc.o \
	loader/loader.o \
	misc/misc.o \
	multimedia/multimedia.o \
	objects/objects.o \
	rc/rc.o \
	windows/windows.o

EMUOBJS = \
	debugger/debugger.o \
	if1632/if1632.o \
	memory/memory.o \
	miscemu/miscemu.o

LIBOBJS = \
	toolkit/toolkit.o

#ifndef WINELIB
SUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS)
OBJS = $(EMUOBJS) $(COMMONOBJS)
#else
SUBDIRS = $(COMMONSUBDIRS) $(LIBSUBDIRS)
OBJS = $(LIBOBJS) $(COMMONOBJS)
#endif

#ifdef i386BsdArchitecture
SYSLIBS = -ll -lm -li386 -lgnumalloc
#endif
#if defined(i386FreeBsd) || defined(FreeBSDArchitecture)
SYSLIBS = -ll -lm -lgnumalloc
#endif
#ifdef LinuxArchitecture
SYSLIBS = -lm -lg
#endif

/* You may need to add the full path of your libXpm here */
XPM_LIB = -lXpm

#ifdef MALLOC_DEBUGGING
MALLOCLIB = -lmcheck
#else
MALLOCLIB =
#endif

MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))

#ifndef WINELIB
NormalProgramTarget(wine,$(OBJS),$(DEPXLIB),$(XPM_LIB) $(XLIB),$(MALLOCLIB) $(SYSLIBS))
AllTarget(wine.sym)
#else
NormalLibraryTarget(wine,$(OBJS))
#endif

wine.sym: wine
	nm wine|grep -v _compiled|sort >wine.sym

clean::
	$(RM) wine.sym

depend::

install::

etags::
	etags `find . -name '*.[chS]' -print`

distclean: clean
	echo "/* autoconf.h generated automatically.  Run Configure */" >autoconf.h
	echo "#error You must run Configure before you can build the makefiles." >>autoconf.h
	$(RM) config.* `find . -name Makefile -print`
