# Undefine this next line for release build
!define RELEASE

# Undefine this next line to use Causeway in all EXEs
#!define USE_CAUSEWAY

SRCDIR = SRC
OBJDIR = OBJ
LIBDIR = \qtools\lib;\blood\obj;\helix32;\build\lib;

.cpp.obj: .AUTODEPEND
!ifdef RELEASE
        wpp386 -we -wx -4r -mf -d1 -s -oimrt -oe=3 -dRELEASE $[@ /fo=$(OBJDIR)\$^&
!else
       wpp386 -we -wx -4r -mf -d2 $[@ /fo=$(OBJDIR)\$^&
!endif

.c.obj: .AUTODEPEND
!ifdef RELEASE
        wcc386 -we -wx -4r -mf -d2 -oimrt -oe=4 -dRELEASE $[@ /fo=$(OBJDIR)\$^&
!else
        wcc386 -we -wx -4r -mf -d2 $[@ /fo=$(OBJDIR)\$^&
!endif

.asm.obj: .AUTODEPEND
!ifdef RELEASE
	tasm -mx -m2 -q $[@ $(OBJDIR)\$^&
!else
       tasm -mx -m2 -zi $[@ $(OBJDIR)\$^&
!endif

# Specify the location of dependencies
.obj : 	$(OBJDIR)
.lib :	$(LIBDIR)
.c : 	$(SRCDIR)
.cpp : 	$(SRCDIR)
.h : 	$(SRCDIR)
.asm :	$(SRCDIR)

BLOODOBJS = &
	globals.obj &
	blood.obj &
	screen.obj &
	view.obj &
	db.obj &
	gameutil.obj &
	fire.obj &
	fframe.obj &
	sectorfx.obj &
	map2d.obj &
	asstimer.obj &
	usrhooks.obj &
	levels.obj &
	sound.obj &
	sfx.obj &
	controls.obj &
	actor.obj &
	player.obj &
	replace.obj &
	tile.obj &
	triggers.obj &
	eventq.obj &
	qav.obj &
	weapon.obj &
	gui.obj &
	seq.obj &
	mirrors.obj &
	dude.obj &
	warp.obj &
	credits.obj &
	menu.obj &
	ai.obj &
	aicult.obj &
	aigarg.obj &
	aighost.obj &
	aihand.obj &
	aihound.obj &
	airat.obj &
	aispid.obj &
	aizomba.obj &
	aizombf.obj &
	fx.obj &
	callback.obj &
	loadsave.obj &
	config.obj &
	gib.obj &
	asound.obj &
	sfxtable.obj &


MAPEDITOBJS = &
	bstub.obj &
	globals.obj &
	db.obj &
	screen.obj &
	sectorfx.obj &
	gui.obj &
	replace.obj &
	tile.obj &
	edit2d.obj &
	edit3d.obj &
	gameutil.obj &
	config.obj &
	asstimer.obj &
	sound.obj &
	usrhooks.obj &
	sfxtable.obj &


QAVEDITOBJS = &
	qavedit.obj &
	globals.obj &
	qav.obj &
	gui.obj &
	replace.obj &
	tile.obj &
	screen.obj &
	config.obj &

SEQEDITOBJS = &
	seqedit.obj &
	globals.obj &
	gui.obj &
	replace.obj &
	tile.obj &
	screen.obj &
	asstimer.obj &
	usrhooks.obj &
	sound.obj &
	config.obj &

ARTEDITOBJS = &
	artedit.obj &
	globals.obj &
	gui.obj &
	replace.obj &
	tile.obj &
	screen.obj &
	config.obj &

EDGAROBJS = &
	edgar.obj &
	globals.obj &
	gui.obj &
	replace.obj &
	tile.obj &
	screen.obj &

TABLESOBJS = &
	tables.obj &

PALTOOLOBJS = &
	paltool.obj &

CONVDB6 = &
	convdb6.obj &

APEOBJS = &
	ape.obj &

SLUTOBJS = &
	slut.obj &

REMAP = &
	remap.obj &

SHPLAY = &
	shplay.obj &

BSETUP = &
	setup.obj &

JOYTEST = &
	joytest.obj &

SPRITEST = &
	spritest.obj &
	globals.obj &
	db.obj &

STRESS = &
	stress.obj &
	globals.obj &
	tile.obj &
	gui.obj &
	screen.obj &

TV = &
	tv.obj &
	globals.obj &
	gui.obj &
	screen.obj &
	scalerow.obj &

dummy : blood.exe mapedit.exe

all : blood.exe mapedit.exe seqedit.exe artedit.exe tables.exe paltool.exe ape.exe slut.exe remap.exe shplay.exe qavedit.exe

blood.exe : $(BLOODOBJS) qtools.lib helix32.lib engine.lib blood.lnk
	wlink @$^*

mapedit.exe : $(MAPEDITOBJS) qtools.lib helix32.lib engine.lib mapedit.lnk
        wlink @$^*

qavedit.exe : $(QAVEDITOBJS) qtools.lib helix32.lib qavedit.lnk
	wlink @$^*

seqedit.exe : $(SEQEDITOBJS) qtools.lib helix32.lib seqedit.lnk
	wlink @$^*

artedit.exe : $(ARTEDITOBJS) qtools.lib helix32.lib artedit.lnk
	wlink @$^*

edgar.exe : $(EDGAROBJS) qtools.lib helix32.lib edgar.lnk
	wlink @$^*

tables.exe : $(TABLESOBJS) qtools.lib tables.lnk
	wlink @$^*

paltool.exe : $(PALTOOLOBJS) qtools.lib paltool.lnk
	wlink @$^*

convdb6.exe : $(CONVDB6) qtools.lib convdb6.lnk
	wlink @$^*

ape.exe : $(APEOBJS) qtools.lib ape.lnk
	wlink @$^*

slut.exe : $(SLUTOBJS) qtools.lib slut.lnk
	wlink @$^*

remap.exe : $(REMAP) qtools.lib helix32.lib remap.lnk
	wlink @$^*

shplay.exe: $(SHPLAY) qtools.lib helix32.lib shplay.lnk
	wlink @$^*

bsetup.exe: $(BSETUP) qtools.lib bsetup.lnk
	wlink @$^*

joytest.exe: $(JOYTEST) qtools.lib joytest.lnk
	wlink @$^*

spritest.exe: $(SPRITEST) qtools.lib spritest.lnk
	wlink @$^*

stress.exe: $(STRESS) qtools.lib stress.lnk
	wlink @$^*

tv.exe : $(TV) qtools.lib helix32.lib tv.lnk
	wlink @$^*

globals.obj : globals.cpp globals.h qtools.lib engine.lib $(SRCDIR)\*.cpp $(SRCDIR)\*.h

blood.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(BLOODOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ FILE \build\lib\mmulti.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB mact386.lib
	%append $^@ LIB engine.lib
	%append $^@ LIB audio_wf.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,


mapedit.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(MAPEDITOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ FILE \build\lib\build.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB mact386.lib
	%append $^@ LIB engine.lib
	%append $^@ LIB audio_wf.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

qavedit.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(QAVEDITOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB mact386.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

seqedit.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(SEQEDITOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB mact386.lib
	%append $^@ LIB engine.lib
	%append $^@ LIB audio_wf.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

artedit.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(ARTEDITOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB mact386.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

edgar.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(EDGAROBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

tables.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        for %i in ($(TABLESOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,


paltool.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(PALTOOLOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

convdb6.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(CONVDB6)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

ape.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(APEOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

slut.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        for %i in ($(SLUTOBJS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif

remap.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(REMAP)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

shplay.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(SHPLAY)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB audio_wf.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

bsetup.lnk : makefile
	%create $^@
	%append $^@ NAME BSETUP.EXE
        %append $^@ DEBUG ALL
        for %i in ($(BSETUP)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
	%append $^@ LIB audio_wf.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

joytest.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(JOYTEST)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

spritest.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(SPRITEST)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

stress.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(STRESS)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ LIB qtools.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,

tv.lnk : makefile
	%create $^@
	%append $^@ NAME $^&
        %append $^@ DEBUG ALL
        for %i in ($(TV)) do %append $^@ FILE $(OBJDIR)\%i
	%append $^@ FILE \helix32\hgd13.obj
	%append $^@ FILE \helix32\hgdx.obj
	%append $^@ LIB qtools.lib
	%append $^@ LIB engine.lib
!ifdef USE_CAUSEWAY
        %append $^@ SYSTEM CAUSEWAY
!endif
        %append $^@ OPTION
	%append $^@   VERBOSE,
	%append $^@   REDEFSOK,
	%append $^@   STACK=8K,
	%append $^@   MAP=$(OBJDIR)\$^&.map,


