.ERASE

##### DEFAULT BUILD MODE IS RELEASE #####

# mode is DBG or DBG
MODE = DBG

VERSION="1.40"

######### DIRECTORIES ##########

# remember to change the paths below to your settings


SVGALIB_DIR=m:\SCITECH\LIB\DOS32\WC
SRC_DIR = ..\source
OBJ_DIR = ..\object

.obj: $(OBJ_DIR)
.exe: $(OBJ_DIR)

######## NAMES OF EXECUTABLES ##########

CCEXE   =  WCC386
ASMEXE  =  WASM
LINKEXE =  WLINK

######## COMPILER FLAGS ##########

CFLAGS_D32_DBG    = /zq  /d2 /oi /w4 /DDEBUG_MSG /DDEBUG_MON /DDVE_VERSION=$(VERSION) /DDIGI_SOUND_HACK
#/DDEBUG_PROFILE
#/DDIGI_SOUND_HACK
#/DTRYING
CFLAGS_D32_REL    = /zq /oi /w4 /s /or /ot /5r /oa /ol+ /ox /ol+ /ox /DDVE_VERSION=$(VERSION) /DDIGI_SOUND_HACK
#/DCLAY_ONLY
# /et
# /zqs /as don't work ?
# /oe=10000000 /ol+ /ox /zps /as /et
# quiet /zq
# /oa   no alias checking
# /oe=1000000 expand to inline
# /ol loop optimize
# /ol+ loop + unroll
# /ox no stack overflowchecking
# /zps structure align qword
# /as integers are align even
# /et pentium profiling

ASMFLAGS_D32_DBG  = /4 /mf /zq /d1
ASMFLAGS_D32_REL  = /4 /mf /zq

CFLAGS=$(CFLAGS_D32_$(MODE))
ASMFLAGS=$(ASMFLAGS_D32_$(MODE))

MESSAGE_DBG= (DEBUG)
MESSAGE_REL= (RELEASE)
MESSAGE = $(MESSAGE_$(MODE))

LINKMODE_DBG= DEBUG ALL
LINKMODE_REL= $#
LINKMODE= $LINKMODE_$(MODE)


######## NAME OF FINAL EXECUTABLE ########

EXENAME  = VECT_$(MODE).EXE

######## LIST OF OBJECTS ########

OBJECTS  = analog.obj &
           cart_rom.obj &
           dis6809.obj &
           display.obj &
           emu6522.obj &
           emu6809.obj &
           error.obj &
           io.obj &
           keyboard.obj &
           mon_cmds.obj &
           monitor.obj &
           palette.obj &
           sequence.obj &
           soundemu.obj &
           sys_ram.obj &
           sys_rom.obj &
           util.obj &
           vdebug.obj &
           vectrex.obj &
           window.obj &
           cod6809.obj &
           exg6809.obj &
           idx6809.obj &
           pshs6809.obj &
           pshu6809.obj &
           puls6809.obj &
           pulu6809.obj &
           tfr6809.obj

LINK_OBJ1 =vectrex.obj, &
           emu6522.obj, &
           emu6809.obj, &
           analog.obj, &
           cart_rom.obj, &
           display.obj, &
           io.obj

LINK_OBJ2 =sys_ram.obj, &
           sys_rom.obj, &
           util.obj, &
           vdebug.obj, &
           sequence.obj, &
           soundemu.obj

LINK_OBJ3 =mon_cmds.obj, &
           monitor.obj, &
           dis6809.obj, &
           window.obj, &
           error.obj, &
           palette.obj, &
           keyboard.obj

LINK_OBJ4 =idx6809.obj, &
           tfr6809.obj, &
           pshs6809.obj, &
           puls6809.obj, &
           pshu6809.obj, &
           pulu6809.obj

LINK_OBJ5 =cod6809.obj, &
           exg6809.obj

LINK_LIBS =$(SVGALIB_DIR)\svga.lib, &
           $(SVGALIB_DIR)\DOS4GW\pmode.lib


######## LIST OF DEPENDENCES ########

$(EXENAME): $(OBJECTS)
        @ECHO Linking $(EXENAME) $(MESSAGE) ...

        @cd $(OBJ_DIR)

        @echo $(linkmode)             >__link__.tmp
        @echo system pmodew           >>__link__.tmp
#        @echo system dos4g            >>__link__.tmp
        @echo option map, quiet, stack=512K     >>__link__.tmp
        @echo name $(EXENAME)         >>__link__.tmp
        @echo file $(LINK_OBJ1)       >>__link__.tmp
        @echo file $(LINK_OBJ2)       >>__link__.tmp
        @echo file $(LINK_OBJ3)       >>__link__.tmp
        @echo file $(LINK_OBJ4)       >>__link__.tmp
        @echo file $(LINK_OBJ5)       >>__link__.tmp
        @echo file $(LINK_LIBS)       >>__link__.tmp

        @$(LINKEXE) @__link__.tmp
        @del __link__.tmp
        @echo Done.
        @copy *.exe ..
        @cd $(SRC_DIR)

# I don't believe in automation in  s...

analog.obj: analog.c analog.h anatick.cc dline.cc vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling analog.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\analog.obj analog.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

cart_rom.obj: cart_rom.c cart_rom.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling cart_rom.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\cart_rom.obj cart_rom.c  @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

dis6809.obj: dis6809.c cnt6809.h dis6809.h cod6809.h ins6809.h tab6809.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling dis6809.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\dis6809.obj dis6809.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

emu6522.obj: emu6522.c emu6522.h pia.cc vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling emu6522.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\emu6522.obj emu6522.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

emu6809.obj: emu6809.c emu6809.h msnglcpu.cc mshftcpu.cc multicpu.cc singlcpu.cc &
             cnt6809.h dis6809.h cod6809.h ins6809.h tab6809.h &
             vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling emu6809.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\emu6809.obj emu6809.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

error.obj: error.c error.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling error.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\error.obj error.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

display.obj: display.c display.h lineban.cc linelin.cc &
             lineban.cc linelin.cc &
             mlineban.cc mlinelin.cc &
             dtick.cc vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling display.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\display.obj display.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

io.obj: io.c io.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling io.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\io.obj io.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

keyboard.obj: keyboard.c keyboard.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling keyboard.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\keyboard.obj keyboard.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

mon_cmds.obj: mon_cmds.c mon_cmds.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling mon_cmds.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\mon_cmds.obj mon_cmds.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

monitor.obj: monitor.c monitor.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling monitor.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\monitor.obj monitor.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

palette.obj: palette.c palette.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling palette.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\palette.obj palette.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

sequence.obj: sequence.c sequence.h timer.h dtick.cc pia.cc seq.cc &
              msnglcpu.cc mshftcpu.cc multicpu.cc singlcpu.cc jfctgcpu.cc &
              lineban.cc linelin.cc &
              mlineban.cc mlinelin.cc &
              keyboard.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling sequence.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\sequence.obj sequence.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

soundemu.obj: soundemu.c soundemu.h vectrex.h fmfreqs.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling soundemu.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\soundemu.obj soundemu.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

sys_ram.obj: sys_ram.c sys_ram.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling sys_ram.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\sys_ram.obj sys_ram.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

sys_rom.obj: sys_rom.c sys_rom.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling sys_rom.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\sys_rom.obj sys_rom.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

util.obj: util.c util.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling util.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\util.obj util.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

window.obj: window.c window.h io.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling window.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\window.obj window.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

vdebug.obj: vdebug.c vdebug.h vectrex.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling vdebug.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\vdebug.obj vdebug.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

vectrex.obj: vectrex.c vectrex.h timer.h
        @echo $(CFLAGS) >$(OBJ_DIR)\__comp__.tmp
        @echo Compiling vectrex.obj $(MESSAGE) ...
        @$(CCEXE) -fo=$(OBJ_DIR)\vectrex.obj vectrex.c @$(OBJ_DIR)\__comp__.tmp
        @del $(OBJ_DIR)\__comp__.tmp

idx6809.obj: idx6809.asm mac6809.h reg6809.h
        @echo Assembling idx6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\idx6809.obj -fe=$(SRC_DIR)\idx6809.err idx6809.asm

tfr6809.obj: tfr6809.asm mac6809.h reg6809.h
        @echo Assembling tfr6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\tfr6809.obj -fe=$(SRC_DIR)\tfr6809.err tfr6809.asm

pshs6809.obj: pshs6809.asm mac6809.h reg6809.h
        @echo Assembling pshs6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\pshs6809.obj -fe=$(SRC_DIR)\pshs6809.err pshs6809.asm

puls6809.obj: puls6809.asm mac6809.h reg6809.h
        @echo Assembling puls6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\puls6809.obj -fe=$(SRC_DIR)\puls6809.err puls6809.asm

pshu6809.obj: pshu6809.asm mac6809.h reg6809.h
        @echo Assembling pshu6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\pshu6809.obj -fe=$(SRC_DIR)\pshu6809.err pshu6809.asm

pulu6809.obj: pulu6809.asm mac6809.h reg6809.h
        @echo Assembling pulu6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\pulu6809.obj -fe=$(SRC_DIR)\pulu6809.err pulu6809.asm

cod6809.obj: cod6809.asm mac6809.h reg6809.h
        @echo Assembling cod6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\cod6809.obj -fe=$(SRC_DIR)\cod6809.err cod6809.asm

exg6809.obj: exg6809.asm mac6809.h reg6809.h
        @echo Assembling exg6809.obj $(MESSAGE) ...
        @$(ASMEXE) $(ASMFLAGS) -fo=$(OBJ_DIR)\exg6809.obj -fe=$(SRC_DIR)\exg6809.err exg6809.asm

clean:
    cd ..\object
    del *.obj
    del *.exe
    del *.map
    cd ..\source

