untermud/DOC/
untermud/DOC/U/
untermud/DOC/U/U-examples/
untermud/DOC/internals/
untermud/DOC/wizard/
untermud/MISC/
untermud/MISC/dbchk/
untermud/RWHO/
untermud/RWHO/rwhod/
# Untermud makefile 
.AUTODEPEND
BCCROOT = $(MAKEDIR)\..
CC = $(BCCROOT)\bin\bcc32
LD = $(BCCROOT)\bin\ilink32
AR = $(BCCROOT)\bin\tlib
YACC = yacc
WINZIP = C:\apps\Winzip\wzzip

# The suffix appended to executables.  
# This should be set for Cygwin and Windows.
EXE = .exe 
#EXE =

# Compiler directives for debugging
!ifdef DEBUG
DEBUG_CFLAGS = -v -y -Od -r- 
DEBUG_LFLAGS = -v 
!else
DEBUG_CFLAGS = -v- -O2 -$(PROCESSOR_LEVEL) 
DEBUG_LFLAGS = -v- 
!endif
INCDIRS = -I$(BCCROOT)\include

# Compiler/linker directives for linking static or dynamic
!ifdef STATIC
STATIC_CFLAGS =
LIBS      = import32.lib cw32mt.lib ws2_32.lib
!else
STATIC_CFLAGS = -tWR
LIBS      = import32.lib cw32mti.lib ws2_32.lib
!endif
BCC32STARTUP = c0x32.obj

MSGS= -q -w -w-pia -w-par -w-sig -w-use -w-pin
DEFS= -DWIN32 -DWIN32_LEAN_AND_MEAN -D_NO_VCL  
OPTIM= $(STATIC_CFLAGS) $(DEBUG_CFLAGS) -tWM -tWC  
CFLAGS= $(OPTIM) $(DEFS) $(MSGS)
LFLAGS = -Tpe -ap -c -Gn $(DEBUG_LFLAGS) 

# Include directories 
INCS = -I.\ -I.\U $(INCDIRS)
DBMLIBS = gdbm.lib ndbm.lib dbm.lib


#if building with combat, include this
#COMBAT=
COMBAT = combat.c

HDR = config.h mud.h comp.h vars.h look.h match.h cmd.h sbuf.h trans.h sym.h xact.h \
	combat.h os.h
SRC = mud.c $(COMBAT) cron.c net.c do_go.c do_look.c login.c trans.c version.c \
	run.c sym.c activ.c vars.c cmd.c xact.c xmit.c cache.c bool.c util.c \
	match.c obj.c sbuf.c list.c rot.c alloc.c errors.c misc2.c misc.c os.c
# .obj versions of above
OBJ = $(SRC:.c=.obj)
XTRA = README README_2.0a README_COMBAT CHANGES COPYRIGHT Makefile INSTALL_NOTES \
       untermud-2.4-orig.tar.gz makefile.bor makefile.vc \
       bootup buildh buildd buildg bootup.cmd buildh.cmd buildd.cmd buildg.cmd

CMDLIB = CMD\cmd.lib
CMDSRC = CMD\_dump.c CMD\_echo.c CMD\_wall.c CMD\_force.c CMD\_if.c CMD\_mark.c \
	CMD\_rand.c CMD\build.c CMD\destroy.c CMD\do.c CMD\drop.c CMD\examine.c \
	CMD\go.c CMD\inv.c CMD\kill.c CMD\look.c CMD\news.c CMD\page.c \
	CMD\passwd.c CMD\quit.c CMD\read.c CMD\say.c CMD\take.c CMD\use.c \
	CMD\which.c CMD\telep.c CMD\wear.c CMD\whisper.c CMD\wizard.c
CMDOBJ = $(CMDSRC:.c=.obj)
CMDXTRA = CMD\README

DBLIB = DB\db.lib
DBSRC = DB\oif.c DB\expr.c DB\dbmchunk.c DB\dbmconf.c DB\gdbmchunk.c \
	DB\gdbmconf.c DB\hashconf.c DB\hashdir.c
DBOBJ = $(DBSRC:.c=.obj)
DBXTRA = DB\README DB\dumpdb.c DB\loaddb.c DB\comp.c DB\bigrams.c \
	DB\config DB\startup DB\minimal_db.oif
DBUTIL = misc.obj alloc.obj obj.obj sbuf.obj list.obj


ULIB = U\u.lib
UHDR = U\u.h
USRC = U\bltin.c U\uinterp.y U\u_util.c U\b_cmd.c U\b_echo.c U\b_err.c \
	U\b_lst.c U\b_match.c U\b_misc.c U\b_int.c U\b_oid.c U\b_rnd.c \
	U\b_time.c U\b_str.c
UOBJ = U\bltin.obj U\uinterp.obj U\u_util.obj U\b_cmd.obj U\b_echo.obj U\b_err.obj U\b_lst.obj \
	U\b_match.obj U\b_misc.obj U\b_int.obj U\b_oid.obj U\b_rnd.obj \
	U\b_time.obj U\b_str.obj
UXTRA = U\README

MISCSRC = MISC\bonk.c MISC\oif2set.c
MISCOBJ = $(MISCSRC:.c=.obj)
MISCXTRA = $(MISCSRC:.c=.doc)
MISCDBCHKSRC = MISC\dbchk\dbchk.c MISC\dbchk\dbchk_cache.c
MISCDBCHKOBJ = $(MISCDBCHKSRC:.c=.obj)

#if building without RWHO support, change RWHOLIB to nothing:
#RWHOLIB =
RWHOLIB = RWHO\rwho.lib
RWHOHDR = RWHO\rwho.h
RWHOSRC = RWHO\updat.c RWHO\clilib.c
RWHOOBJ = $(RWHOSRC:.c=.obj)
RWHOXTRA = RWHO\mudwho.c RWHO\mwhoforvm RWHO\HOW_TO RWHO\rwhodoc RWHO\README

# RWHO daemon
RWHOD = RWHO\rwhod
RWHODSRC = $(RWHOD)\mwhod.c
RWHODOBJ = $(RWHODSRC:.c=.obj)
RWHODXTRA = $(RWHOD)\mwhod.doc $(RWHOD)\README

# Files in the standard distribution
DISTFILES = $(SRC) $(HDR) $(XTRA) 
!ifndef RELEASE
RELEASE=dist
!endif

# Dependency information
OBJDEPENDS = $(OBJ) $(CMDOBJ) $(DBOBJ) $(UOBJ) $(RWHOOBJ) \
	DB\dumpdb.obj DB\loaddb.obj DB\comp.obj DB\bigrams.obj \
	RWHO\mudwho.obj $(MISCOBJ) $(MISCDBCHKOBJ) $(RWHODOBJ)

ALLLIBS = $(CMDLIB) $(DBLIB) $(ULIB) $(RWHOLIB)
TARGETS = mud$(EXE) mudwho$(EXE) dumpdb$(EXE) loaddb$(EXE) bigrams$(EXE) \
	comp$(EXE) bonk$(EXE) oif2set$(EXE) dbchk$(EXE) mwhod$(EXE)

all: $(TARGETS)

mud$(EXE) : $(OBJ) $(CMDLIB) $(DBLIB) $(ULIB) $(RWHOLIB) $(DBMLIBS)
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

mudwho$(EXE) : RWHO\mudwho.obj getopt.lib
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 
 
dumpdb$(EXE) : DB\dumpdb.obj $(DBUTIL) $(DBLIB) getopt.lib $(DBMLIBS)
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

loaddb$(EXE) : DB\loaddb.obj $(DBUTIL) $(DBLIB) getopt.lib $(DBMLIBS)
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

comp$(EXE) : DB\comp.obj 
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

bigrams$(EXE) : DB\bigrams.obj
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

$(CMDLIB) : $(CMDOBJ)
	@echo "making CMD library..."
	-@del $< 2>NUL
	$(AR) $< /a $**

$(DBLIB) : $(DBOBJ)
	@echo "making DB library..."
	-@del $< 2>NUL
	$(AR) $< /a $**

$(ULIB) : $(UOBJ) 
	@echo "making U library..."
	-@del $< 2>NUL
	$(AR) $< /a $**

U\uinterp.c y.tab.h : U\uinterp.y 
	$(YACC) -d U\uinterp.y
	-move y.tab.c U\uinterp.c

$(RWHOLIB) : $(RWHOOBJ)
	@echo "making RWHO library..."
	-@del $< 2>NUL
	$(AR) $< /a $**

mwhod$(EXE) : $(RWHODOBJ) getopt.lib
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

bonk$(EXE) : MISC\bonk.obj
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

oif2set$(EXE) : MISC\oif2set.obj
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

dbchk$(EXE) : $(MISCDBCHKOBJ) $(DBUTIL) $(DBLIB) getopt.lib $(DBMLIBS)
	$(LD) $(LFLAGS) $(BCC32STARTUP) $**, $<,, $(LIBS) 

clean :
	@echo "Cleaning..."
	@-del *.tds *.TR2 *.map $(TARGETS) $(ALLLIBS)  DB\dumpdb.obj DB\loaddb.obj \
	DB\comp.obj DB\bigrams.obj U\uinterp.c y.tab.h  RWHO\mudwho.obj \
	$(OBJDEPENDS) 2>NUL
	@echo "Done."

dist : $(DISTFILES)
	@echo "Building distribution..."
	@-md untermud
	@&copy /y $** untermud 1>NUL
	@echo .svn > ex.tmp
        @xcopy CMD untermud\CMD /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy MISC untermud\MISC /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy DB untermud\DB /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy DOC untermud\DOC /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy HELP untermud\HELP /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy RWHO untermud\RWHO /I /E /Y /Q /EXCLUDE:ex.tmp 
        @xcopy U untermud\U /I /E /Y /Q /EXCLUDE:ex.tmp 
        @del ex.tmp
	@$(WINZIP) -Pr untermud-$(RELEASE).zip untermud 1>NUL 2>NUL
	@rd /s /q untermud
	@echo "Done."

.c.obj:
	$(CC) $(CFLAGS) $(INCS) -c -n$(@D) $<