#
# Whatever you put in for $(CC) must be able to grok ANSI C.
#
CC = cl
LD = cl
WINZIP = C:\Applications\Winzip\wzzip

# Compiler directives for debugging
!ifdef DEBUG
DEBUG_CFLAGS = /MTd /ZI /Od /DDEBUG 
DEBUG_LFLAGS = /DEBUG /PDBTYPE:SEPT 
LIBS= libcmtd.lib kernel32.lib ws2_32.lib 
!else
DEBUG_CFLAGS = /MT /Ot /Oy /Ob2 /Gs /GF /Gy /DNDEBUG   
DEBUG_LFLAGS = 
LIBS= libcmt.lib kernel32.lib ws2_32.lib 
!endif

DEFS= /DWIN32 /DWIN32_LEAN_AND_MEAN /D_CONSOLE /D_MBCS /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /D_USE_32BIT_TIME_T
OPTIM= /nologo /W1 $(DEBUG_CFLAGS) 

CFLAGS= $(OPTIM) $(DEFS)
LFLAGS = /link /NOLOGO /NODEFAULTLIB /SUBSYSTEM:CONSOLE $(DEBUG_LFLAGS) 

HEADERS = comm.h db.h handler.h interpreter.h limits.h maildef.h \
	os.h spells.h structs.h utils.h prototypes.h

CFILES= comm.c act.comm.c act.informative.c act.movement.c act.obj1.c \
	act.obj2.c act.offensive.c act.other.c act.social.c act.wizard.c \
	handler.c db.c interpreter.c utility.c spec_assign.c shop.c \
	limits.c mobact.c fight.c modify.c weather.c spells1.c spells2.c \
	spell_parser.c reception.c constants.c spec_procs.c signals.c \
	board.c mar_fiz_maz.c magic.c changes.c os.c

# .obj versions of above
OFILES= comm.obj act.comm.obj act.informative.obj act.movement.obj \
	act.obj1.obj act.obj2.obj act.offensive.obj act.other.obj \
	act.social.obj act.wizard.obj handler.obj db.obj interpreter.obj \
	utility.obj spec_assign.obj shop.obj limits.obj mobact.obj \
	fight.obj modify.obj weather.obj spells1.obj spells2.obj \
	spell_parser.obj reception.obj constants.obj spec_procs.obj \
	signals.obj board.obj mar_fiz_maz.obj magic.obj changes.obj \
	os.obj

OTHERSTUFF= mail.c

UTILITIES= insert_any.c repairgo.c list.c syntax_checker.c \
	sign.c update.c delplay.c

# documentation
DOCS= actions.doc defs.doc license.doc running.doc time.doc combat.doc \
	do_mail look.doc shops.doc values.doc comm.doc handler.doc macro.doc \
	skills.doc database.doc interpreter.doc newstruct.doc spell_info.doc \
	dbsup.doc levels.doc readme spells.doc

# data - zones, help, mobs, objects, rooms, etc.
DATA= actions help_table news readme tinyworld.wld board.messages info \
	pcobjs.obj tinyworld.mob tinyworld.zon credits messages players \
	tinyworld.obj wizlist help motd poses tinyworld.shp

# Files in the standard distribution
DISTFILES= $(CFILES) $(HEADERS) $(DOCS) $(DATA) $(UTILITIES) \
	$(OTHERSTUFF) nightrun opstart readme INSTALL_NOTES \
	makefile makefile.bor makefile.dgm makefile.vc makefile.lcc

!ifndef RELEASE
RELEASE=dist
!endif

TARGETS= dmserver.exe list.exe delplay.exe insert_any.exe repairgo.exe \
	syntax_checker.exe update.exe sign.exe                                
OTARGETS=  list.obj delplay.obj insert_any.obj repairgo.obj syntax_checker.obj \
	update.obj sign.obj                                                   
                                                                              
all: $(TARGETS)
                                                                              
dmserver.exe : $(OFILES)
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)

list.exe : list.obj                                                           
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)
 
delplay.exe : delplay.obj
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)
                                                                              
insert_any.exe : insert_any.obj os.obj
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS) 
                                                                              
repairgo.exe : repairgo.obj                 
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)
                                                                              
syntax_checker.exe : syntax_checker.obj os.obj
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)

update.exe : update.obj                                                       
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)
                                                                              
sign.exe : sign.obj os.obj                                                          
	$(LD) $** $(LIBS) /Fe$@ $(LFLAGS)
                                                                              
clean:                                                                        
	@echo "Cleaning..."
	@-del *.pdb *.ilk *.idb $(OFILES) $(TARGETS) $(OTARGETS) 2>NUL
	@echo "Done."
                                                                              
dist: $(DISTFILES)
	@echo "Building distribution..."
	cd ..
	$(WINZIP) -pr diku-alfa-$(RELEASE).zip $(DISTFILES) 
	@echo "Done."

.c.obj:
	$(CC) $(CFLAGS) /c /Tc$(<:\=/)