# Shadow Warrior Makefile for Watcom Make

SRC=source
OBJ=obj
EROOT=engine
EINC=$(EROOT)\include
ELIB=$(EROOT)\obj.watcom
INC=$(SRC)
o=obj

ENGINELIB=engine.lib
EDITORLIB=build.lib

!ifdef __LOADDLL__
! loaddll wcc386 wccd386
!endif

DXROOT=c:\sdks\directx\dx81

ENGINEOPTS=-dSUPERBUILD -dPOLYMOST -dUSE_OPENGL -dDYNAMIC_OPENGL

CC=wcc386
CFLAGS= -5r -s -orb -fp5 -d2 -db &
	-i=$(INC) -i=$(EINC) -i=$(SRC)\jmact -i=$(SRC)\jaudiolib -i=$(DXROOT)\include &
	-dRENDERTYPEWIN=1 $(ENGINEOPTS)
LIBS=winmm.lib wsock32.lib dxguid.lib #opengl32.lib
WASMFLAGS=-d1
EXESUFFIX=.exe

JMACTOBJ=$(OBJ)\util_lib.$o &
	$(OBJ)\file_lib.$o &
	$(OBJ)\control.$o &
	$(OBJ)\keyboard.$o &
	$(OBJ)\mouse.$o &
	$(OBJ)\mathutil.$o &
	$(OBJ)\scriplib.$o &
	$(OBJ)\animlib.$o

#JAUDIOLIB_FX=$(OBJ)\jaudiolib_fxstub.$o
#JAUDIOLIB_MUSIC=$(OBJ)\jaudiolib_musicstub.$o
#JAUDIOLIB_FX=$(OBJ)\jaudiolib_fx_fmod.$o
JAUDIOLIB_FX=$(OBJ)\mv_mix.$o &
	  $(OBJ)\mv_mix16.$o &
	  $(OBJ)\mvreverb.$o &
	  $(OBJ)\pitch.$o &
	  $(OBJ)\multivoc.$o &
	  $(OBJ)\ll_man.$o &
	  $(OBJ)\fx_man.$o &
	  $(OBJ)\dsoundout.$o
JAUDIOLIB_MUSIC=$(OBJ)\midi.$o &
	  $(OBJ)\mpu401.$o &
	  $(OBJ)\music.$o
JAUDIOLIBOBJ=$(JAUDIOLIB_MUSIC) $(JAUDIOLIB_FX)

GAMEOBJS=$(OBJ)\actor.$o &
	$(OBJ)\ai.$o &
	$(OBJ)\anim.$o &
	$(OBJ)\border.$o &
	$(OBJ)\break.$o &
	$(OBJ)\bunny.$o &
	$(OBJ)\cache.$o &
	$(OBJ)\cd.$o &
	$(OBJ)\cheats.$o &
	$(OBJ)\colormap.$o &
	$(OBJ)\config.$o &
	$(OBJ)\console.$o &
	$(OBJ)\coolg.$o &
	$(OBJ)\coolie.$o &
	$(OBJ)\copysect.$o &
	$(OBJ)\demo.$o &
	$(OBJ)\draw.$o &
	$(OBJ)\eel.$o &
	$(OBJ)\game.$o &
	$(OBJ)\girlninj.$o &
	$(OBJ)\goro.$o &
	$(OBJ)\hornet.$o &
	$(OBJ)\interp.$o &
	$(OBJ)\interpsh.$o &
	$(OBJ)\inv.$o &
	$(OBJ)\jplayer.$o &
	$(OBJ)\jsector.$o &
	$(OBJ)\jweapon.$o &
	$(OBJ)\lava.$o &
	$(OBJ)\light.$o &
	$(OBJ)\mclip.$o &
	$(OBJ)\mdastr.$o &
	$(OBJ)\menus.$o &
	$(OBJ)\miscactr.$o &
	$(OBJ)\morph.$o &
	$(OBJ)\net.$o &
	$(OBJ)\ninja.$o &
	$(OBJ)\panel.$o &
	$(OBJ)\player.$o &
	$(OBJ)\predict.$o &
	$(OBJ)\quake.$o &
	$(OBJ)\ripper.$o &
	$(OBJ)\ripper2.$o &
	$(OBJ)\rooms.$o &
	$(OBJ)\rotator.$o &
	$(OBJ)\rts.$o &
	$(OBJ)\save.$o &
	$(OBJ)\scrip2.$o &
	$(OBJ)\sector.$o &
	$(OBJ)\serp.$o &
	$(OBJ)\setup.$o &
	$(OBJ)\skel.$o &
	$(OBJ)\skull.$o &
	$(OBJ)\slidor.$o &
	$(OBJ)\sounds.$o &
	$(OBJ)\spike.$o &
	$(OBJ)\sprite.$o &
	$(OBJ)\sumo.$o &
	$(OBJ)\swconfig.$o &
	$(OBJ)\sync.$o &
	$(OBJ)\text.$o &
	$(OBJ)\track.$o &
	$(OBJ)\usrhooks.$o &
	$(OBJ)\vator.$o &
	$(OBJ)\vis.$o &
	$(OBJ)\wallmove.$o &
	$(OBJ)\warp.$o &
	$(OBJ)\weapon.$o &
	$(OBJ)\zilla.$o &
	$(OBJ)\zombie.$o &
	$(OBJ)\saveable.$o &
	$(OBJ)\cda_win32.$o &
	$(JMACTOBJ) &
	$(JAUDIOLIBOBJ)

EDITOROBJS=$(OBJ)\jnstub.$o &
	$(OBJ)\brooms.$o &
	$(OBJ)\bldscript.$o &
	$(OBJ)\jbhlp.$o &
	$(OBJ)\colormap.$o

# RULES
.EXTENSIONS: .wasm .res .rc

.wasm:	$(SRC)
.wasm:	$(SRC)\jaudiolib
.c:	$(SRC)
.c:	$(SRC)\jmact
.c:	$(SRC)\jaudiolib
.c:	$(SRC)\util
.rc:	$(SRC)\misc

.wasm.$o:
	wasm $(WASMFLAGS) -fo=$(OBJ)\.$o $[@

.c.$o:
	$(CC) $(CFLAGS) -fo=$(OBJ)\.$o $[@

.rc.res:
	wrc -i=$(EINC) -i=$(SRC) -fo=$^*.res -r $[@
	

# TARGETS
all: sw$(EXESUFFIX) build$(EXESUFFIX) .SYMBOLIC
	%null

sw$(EXESUFFIX): $(GAMEOBJS) $(OBJ)\gameres.res $(ELIB)\$(ENGINELIB)
	wlink	NAME     $@ &
		SYSTEM   WIN95 &
		DEBUG    ALL &
		OPTION   MAP &
		FILE     { $(GAMEOBJS) $(ENGINEOBJS) } &
		RESOURCE $(OBJ)\gameres.res &
		LIBPATH  $(DXROOT)\lib &
		LIBPATH  $(ELIB) &
		LIBRARY  { $(ENGINELIB) $(LIBS) }
	
build$(EXESUFFIX): $(EDITOROBJS) $(OBJ)\buildres.res $(ELIB)\$(ENGINELIB) $(ELIB)\$(EDITORLIB)
	wlink	NAME     $@ &
		SYSTEM   WIN95 &
		DEBUG    ALL &
		FILE     { $(EDITOROBJS) } &
		RESOURCE $(OBJ)\buildres.res &
		LIBPATH  $(DXROOT)\lib &
		LIBPATH  $(ELIB) &
		LIBRARY  { $(ENGINELIB) $(EDITORLIB) $(LIBS) }

!include Makefile.deps

cwd=$+ $(%cwd) $-
enginelib editorlib: .SYMBOLIC
	%write engineoverrides.makw CFLAGS=$(ENGINEOPTS)
	cd $(EROOT)
	wmake -f Makefile.watcom OVERRIDES=$(cwd)\engineoverrides.makw $@
	cd $(cwd)

$(ELIB)\$(EDITORLIB): editorlib .SYMBOLIC
$(ELIB)\$(ENGINELIB): enginelib .SYMBOLIC

# PHONIES	
clean: .SYMBOLIC
	-del /q $(OBJ)\*
	cd $(EROOT)
	wmake -f Makefile.watcom $@
	cd $(cwd)
	
veryclean: clean .SYMBOLIC
	-del /q sw$(EXESUFFIX) build$(EXESUFFIX)
	cd $(EROOT)
	wmake -f Makefile.watcom $@
	cd $(cwd)
