# Makefile for TinyMUSH 2.0
#
# Search for the text 'CONFIGURATION SECTION' and make any changes needed
# there.

# UnterMUD database layer.
UDB_SRC	= udb.c udb_alloc.c udb_attr.c udb_cache.c udb_chunk.c udb_misc.c
UDB_OBJ	= udb.o udb_alloc.o udb_attr.o udb_cache.o udb_chunk.o udb_misc.o
UDB_INC	= udb.h udb_defs.h

# Everything needed to use the database in standalone mode.
SA_SRC	= sa-db.c sa-db_rw.c sa-boolexp.c sa-unparse.c sa-compress.c \
	  sa-pred.c sa-stringu.c sa-conf.c sa-log.c sa-object.c
SA_OBJ	= sa-db.o sa-db_rw.o sa-boolexp.o sa-unparse.o sa-compress.o \
	  sa-pred.o sa-stringu.o sa-conf.o sa-log.o sa-object.o

# Distribution source files
D_SRC	= create.c game.c help.c look.c match.c move.c player.c predicates.c \
	  rob.c set.c speech.c wiz.c walkdb.c timer.c boolexp.c log.c cque.c \
	  unparse.c eval.c command.c wild.c netcommon.c functions.c \
	  db.c db_rw.c compress.c stringutil.c object.c conf.c flags.c htab.c
D_OBJ	= create.o game.o help.o look.o match.o move.o player.o predicates.o \
	  rob.o set.o speech.o wiz.o walkdb.o timer.o boolexp.o log.o cque.o \
	  unparse.o eval.o command.o wild.o netcommon.o functions.o \
	  db.o db_rw.o compress.o stringutil.o object.o conf.o flags.o htab.o
D_INC	= copyright.h flags.h help.h htab.h interface.h match.h functions.h \
	  command.h rwho_clilib.h  config.h db.h externs.h mudconf.h misc.h

# Networking source files
NET_SRC	= bsd.c xenix.c
NET_OBJ	= bsd.o xenix.o
NET_INC	= interface.h fifo.h

# GNU malloc package
ALC_SRC	= malloc.c
ALC_OBJ	= malloc.o
ALC_INC	= getpagesize.h

# RWHO source files
WHO_SRC	= rwho_clilib.c
WHO_OBJ	= rwho_clilib.o
WHO_FLG	= -DRWHO_IN_USE
RWHO_FL	= -DLOCAL_RWHO_SERVER

# NDBM source files (not included with TinyMUSH)
DBM_SRC	= ndbm.c
DBM_OBJ	= ndbm.o
DBM_INC	= ndbm.h

# Version number routine
VER_SRC	= version.c
VER_OBJ	= version.o
VER_INC	= patchlevel.h
VER_FLG	= -DMUSH_BUILD_DATE="\"`date`\"" \
	  -DMUSH_BUILD_NUM="\"`sh ./buildnum.sh`\""

# ===================== CONFIGURATION SECTION ====================
#
# Select the correct C compiler.  Whatever you choose, it must be able
# to grok ANSI C (function prototypes)
#
#-----GCC if you have ANSI headers files.
#CC	= gcc
#OPTIM	= -O -Wwrite-strings -Wall -fpcc-struct-return
#DEFS	= -DWANT_ANSI

#-----GCC if you do not have ANSI header files.
CC	= gcc
OPTIM	= -O -g -W -Wreturn-type -Wunused -Wcomment -Wwrite-strings -fpcc-struct-return

#-----IBM RT C compiler:
#CC	= cc
#OPTIM	= -O -Dconst=

#-----Dec 3100 C compiler
#CC	= cc
#OPTIM	= -O -Dconst=

#-----NeXT C compiler
#CC	= cc
#OPTIM	= -O

#-----MIPS C compiler (also DEC 3xxx, Prime EXL7xxx)
#CC	= cc
#OPTIM	= -O -signed

# Libraries.  Use the second line if you want to use the resolver to get
# hostnames and your libc doesn't use it already.  If you use it, you'd
# better have your nameserver working or things may hang for a while when
# people try to login from distant sites.
#LIBS	= -lm
LIBS	= -lm -lresolv #localtime.o

# Set this to the directory where the MUSH game lives.
GAME	= /usr/mud/amber

# If you want to be able to transmit RWHO data, uncomment these lines:
WHO_S	= $(WHO_SRC)
WHO_O	= $(WHO_OBJ)
WHO_F	= $(WHO_FLG)

# If you want to allow the local RWHO command (only recommended if you are on
# the same machine or subnet as the RWHO server), uncomment these lines:
#RWHO_F	= $(RWHO_FL)

# If you want to use the GNU malloc package (recommended), uncomment
# these lines:
#ALC_S	= $(ALC_SRC)
#ALC_O	= $(ALC_OBJ)

# If you have BSD networking, uncomment these lines:
NET_S	= bsd.c
NET_O	= bsd.o

# If you have XENIX networking, uncomment these lines:
# The XENIX interface has not been maintained and does not work.
#NET_S	= xenix.c
#NET_O	= xenix.o

# If you don't have ndbm (or if it is broken), get ndbm.c and ndbm.h
# from an anonymous FTP site and uncomment these lines:
#DBM_S	= $(DBM_SRC)
#DBM_O	= $(DBM_OBJ)

# The makedepend command.  Used by 'make depend'.
MKDPN	= makedepend

# ================== END OF CONFIGURATION SECTION =================

# Auxiliary source files: only used by offline utilities.
AUX_SRC	= dbconvert.c mkindx.c

CFLAGS	= $(OPTIM) $(DEFS) $(WHO_F) $(RWHO_F)

#Auxiliary files
A_INST	= Makefile README NOTES HIGHLIGHTS CREDITS CHANGES
A_TXT	= badsite.txt connect.txt create_reg.txt down.txt guest.txt help.txt \
	  motd.txt news.txt newuser.txt quit.txt register.txt wizhelp.txt \
	  wizmotd.txt full.txt
A_SH	= db_load db_unload db_check buildnum.sh
A_RT	= Startmush mush.config
A_CONF	= netmush.conf alias.conf
A_MISC	= buildnum.data
A_VMS	= vms_dbm.c vms_dbm.h startmush.com compile.com link.com
AUXIL	= $(A_INST) $(A_TXT) $(A_SH) $(A_CONF) $(A_MISC) $(A_RT) $(A_VMS)

#Installation files
INSTALL_PROG	= netmush dbconvert mkindx db_load db_unload db_check $(R_SERV)
INSTALL_TARG	= $(INSTALL_PROG) *.txt *.conf
REINSTALL_TARG	= $(INSTALL_PROG) help.txt wizhelp.txt alias.conf

#compiliation source files
ALLSRC	= $(D_SRC) $(UDB_SRC) $(VER_SRC) $(NET_SRC) $(ALC_SRC) $(WHO_SRC) \
	  $(SA_SRC) $(AUX_SRC)
ALLINC	= $(D_INC) $(UDB_INC) $(VER_INC) $(NET_INC) $(ALC_INC)
SRC	= $(D_SRC) $(UDB_SRC) $(ALC_S) $(WHO_S) $(NET_S) $(DBM_S)
OBJ	= $(D_OBJ) $(UDB_OBJ) $(ALC_O) $(WHO_O) $(NET_O) $(DBM_O)

# Files in the standard distribution
DIST	= $(ALLSRC) $(ALLINC) $(AUXIL)

OUT	= netmush mkindx dbconvert

# paths is likely to remain broken
all: $(OUT)

install: $(INSTALL_TARG)
	-mkdir $(GAME)
	cp $(INSTALL_TARG) $(GAME)

reinstall: $(REINSTALL_TARG)
	cp $(REINSTALL_TARG) $(GAME)

TAGS: *.c *.h
	etags *.c *.h

mkindx: mkindx.o
	$(CC) -o mkindx mkindx.o

dbconvert: dbconvert.o $(SA_OBJ) $(UDB_OBJ) $(ALLOC_O) $(DBM_O)
	$(CC) -o dbconvert dbconvert.o $(SA_OBJ) $(UDB_OBJ) $(ALLOC_O) $(DBM_O) $(LIBS)

saber:	$(SRC)
	#load $(SRC)

makedepend: makedepend.o
	$(CC) -o makedepend makedepend.o

netmush: $(OBJ)
	$(CC) $(CFLAGS) $(VER_FLG) -c $(VER_SRC)
	-mv -f netmush netmush~
	$(CC) -o netmush $(OBJ) $(VER_OBJ) $(LIBS)

decompress: decompress.o compress.o
	-rm -f decompress
	$(CC) -o decompress decompress.o compress.o $(LIBS)

compressdb: compressdb.o compress.o
	-rm -f compressdb
	$(CC) -o compressdb compressdb.o compress.o $(LIBS)

dist.tar.Z: $(DIST)
	-rm -f buildnum.data
	echo 0 > buildnum.data
	tar cvhf - $(DIST) | compress -c > dist.tar.Z.NEW
	mv dist.tar.Z.NEW dist.tar.Z

depend: $(ALLSRC)
	$(MKDPN) -- $(CFLAGS) -- $(ALLSRC)

index: help.indx news.indx wizhelp.indx

help.indx: help.txt
	./mkindx help.txt help.indx

news.indx: news.txt
	./mkindx news.txt news.indx

wizhelp.indx: wizhelp.txt
	./mkindx wizhelp.txt wizhelp.indx

clean:
	-rm -f *.o a.out core gmon.out $(OUT) netmush~

realclean:
	-rm -f *.o a.out core gmon.out $(OUT)

# DO NOT DELETE THIS LINE -- make depend depends on it.

boolexp.o: copyright.h db.h config.h udb.h match.h mudconf.h htab.h externs.h
boolexp.o: interface.h
bsd.o: copyright.h mudconf.h config.h htab.h db.h udb.h externs.h interface.h
bsd.o: flags.h
command.o: config.h copyright.h db.h udb.h interface.h externs.h mudconf.h
command.o: htab.h command.h functions.h match.h flags.h
compress.o: config.h copyright.h mudconf.h htab.h db.h udb.h externs.h
conf.o: copyright.h mudconf.h config.h htab.h db.h udb.h flags.h externs.h
conf.o: interface.h command.h
cque.o: mudconf.h config.h copyright.h htab.h db.h udb.h interface.h externs.h
cque.o: match.h flags.h
create.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h
create.o: externs.h match.h
db.o: copyright.h mudconf.h config.h htab.h db.h udb.h externs.h
db_rw.o: copyright.h mudconf.h config.h htab.h db.h udb.h externs.h
dbconvert.o: copyright.h config.h db.h udb.h externs.h mudconf.h htab.h
eval.o: copyright.h db.h config.h udb.h externs.h mudconf.h htab.h functions.h
flags.o: copyright.h db.h config.h udb.h mudconf.h htab.h externs.h command.h
flags.o: flags.h
functions.o: copyright.h mudconf.h config.h htab.h db.h udb.h flags.h
functions.o: externs.h match.h command.h functions.h misc.h
game.o: mudconf.h config.h copyright.h htab.h db.h udb.h interface.h externs.h
game.o: match.h flags.h rwho_clilib.h
help.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
help.o: help.h
htab.o: copyright.h db.h config.h udb.h mudconf.h htab.h externs.h
log.o: copyright.h db.h config.h udb.h mudconf.h htab.h externs.h flags.h
look.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
look.o: match.h flags.h command.h
malloc.o: config.h copyright.h getpagesize.h
match.o: copyright.h config.h db.h udb.h mudconf.h htab.h externs.h match.h
mkindx.o: help.h
move.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
move.o: match.h
netcommon.o: copyright.h db.h config.h udb.h mudconf.h htab.h interface.h
netcommon.o: externs.h command.h rwho_clilib.h
object.o: copyright.h db.h config.h udb.h mudconf.h htab.h command.h externs.h
player.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h
player.o: externs.h
predicates.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h
predicates.o: externs.h match.h command.h
rob.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
rob.o: match.h
rwho_clilib.o:
sa-boolexp.o: boolexp.c copyright.h db.h config.h udb.h match.h mudconf.h
sa-boolexp.o: htab.h externs.h interface.h
sa-compress.o: compress.c config.h copyright.h mudconf.h htab.h db.h udb.h
sa-compress.o: externs.h
sa-conf.o: conf.c copyright.h mudconf.h config.h htab.h db.h udb.h flags.h
sa-conf.o: externs.h interface.h command.h
sa-db.o: db.c copyright.h mudconf.h config.h htab.h db.h udb.h externs.h
sa-db_rw.o: db_rw.c copyright.h mudconf.h config.h htab.h db.h udb.h externs.h
sa-log.o: log.c copyright.h db.h config.h udb.h mudconf.h htab.h externs.h
sa-log.o: flags.h
sa-object.o: object.c copyright.h db.h config.h udb.h
sa-object.o: udb.h
sa-object.o: mudconf.h htab.h command.h externs.h
sa-pred.o: predicates.c copyright.h mudconf.h config.h htab.h db.h udb.h
sa-pred.o: interface.h externs.h match.h command.h
sa-stringu.o: stringutil.c copyright.h mudconf.h config.h htab.h db.h
sa-stringu.o: udb.h externs.h
sa-unparse.o: unparse.c config.h copyright.h db.h udb.h mudconf.h htab.h
sa-unparse.o: externs.h interface.h flags.h
set.o: copyright.h mudconf.h config.h htab.h db.h udb.h match.h interface.h
set.o: externs.h flags.h
speech.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h
speech.o: externs.h match.h flags.h
stringutil.o: copyright.h mudconf.h config.h htab.h db.h udb.h externs.h
timer.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
timer.o: match.h command.h rwho_clilib.h
udb.o: udb_defs.h
udb.o: udb.h
udb_alloc.o: udb_defs.h
udb_attr.o: udb_defs.h
udb_cache.o: udb_defs.h
udb_chunk.o: udb_defs.h
udb_misc.o: udb_defs.h
unparse.o: config.h copyright.h db.h udb.h mudconf.h htab.h externs.h
unparse.o: interface.h flags.h
version.o: copyright.h db.h config.h udb.h mudconf.h htab.h externs.h
version.o: patchlevel.h
vms_dbm.o: vms_dbm.h
walkdb.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h
walkdb.o: externs.h match.h command.h flags.h misc.h
wild.o: copyright.h config.h db.h udb.h mudconf.h htab.h externs.h
wiz.o: copyright.h mudconf.h config.h htab.h db.h udb.h interface.h externs.h
wiz.o: match.h command.h
xenix.o: copyright.h config.h db.h udb.h interface.h externs.h mudconf.h
xenix.o: htab.h fifo.h