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

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

DEFINES = AutoDefines -DUSE_READLINE -DWINESTAT

/*
 * 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)'

COMMONSUBDIRS = \
	controls \
	etc \
	include \
	rc \
	loader \
	misc \
	multimedia \
	objects \
	test \
	windows

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

LIBSUBDIRS = \
	toolkit

WINEDIR = $(LIBDIR)/wine

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

/*
 * WARNING: if1632.o must be the first object file because its code must be
 *          linked at the lowest possible addresses.
 */
EMUOBJS = \
	if1632.o \
	debugger.o \
	memory.o \
	miscemu.o \
	opcodes.o \
	readline.o

LIBOBJS = \
	toolkit.o

#ifndef WINELIB
SUBDIRS = $(COMMONSUBDIRS) $(EMUSUBDIRS)
OBJS = $(COMMONOBJS) $(EMUOBJS)
#else
SUBDIRS = $(COMMONSUBDIRS) $(LIBSUBDIRS)
OBJS = $(COMMONOBJS) $(LIBOBJS)
#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

#ifdef USE_XPM
XPM_LIB = -lXpm
#else
XPM_LIB =
#endif

MakeSubdirs($(SUBDIRS))
DependSubdirs($(SUBDIRS))
AllTarget(wine.sym)

#ifndef WINELIB
NormalProgramTarget(wine,$(EMUOBJS) $(COMMONOBJS),$(DEPXLIB),$(XPM_LIB) $(XLIB),$(SYSLIBS))
#else
NormalLibraryTarget(wine,$(LIBOBJS) $(COMMONOBJS))
#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
	$(RM) `find . -name Makefile -print`
	echo "/* autoconf.h generated automatically.  Run Configure */" >autoconf.h
	echo "#error You must run Configure before you can build the makefiles." >>autoconf.h
