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

#if defined(i386FreeBsd)
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 \
	misc \
	objects \
	test \
	windows

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

LIBSUBDIRS = \
	toolkit

WINEDIR = $(LIBDIR)/wine

COMMONOBJS = \
	controls.o \
	misc.o \
	objects.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 \
	loader.o \
	memory.o \
	miscemu.o \
	readline.o

LIBOBJS = \
	toolkit.o

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

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

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

#ifndef WINELIB
NormalProgramTarget(wine,$(EMUOBJS) $(COMMONOBJS),$(DEPXLIB),$(XLIB),$(SYSLIBS))
#else
NormalLibraryTarget(wine,$(LIBOBJS) $(COMMONOBJS))
#endif

depend::

install::
