#################################################################
#
# Makefile for TinyMUD source code...June 6, 1990
#
#################################################################
#
# Whatever you put in for $(CC) must be able to grok ANSI C.
#
# GCC:
CC=gcc
OPTIM= -g -O2 -pipe -Wall -W -Wno-parentheses -Wno-unused
# The suffix appended to executables.
# This should be set for Cygwin and Windows.
EXE = .exe
#EXE =
#
# To log failed commands (HUH's) to stderr, include -DLOG_FAILED_COMMANDS
# To restrict object-creating commands to users with the BUILDER bit,
# include -DRESTRICTED_BUILDING
# To log all commands, include -DLOG_COMMANDS
# To force fork_and_dump() to use vfork() instead of fork(), include
# -DUSE_VFORK.
# To force grow_database() to be clever about its memory management,
# include -DDB_DOUBLING. Use this only if your realloc does not allocate
# in powers of 2 (if you already have a clever realloc, this option will
# only cost you extra space).
# By default, db.c initially allocates enough space for 10000 objects, then
# grows the space if needed. To change this value, include
# -DDB_INITIAL_SIZE=xxxx where xxxx is the new value (minimum 1).
# To include code for keeping track of the number of blocks allocated,
# include -DTEST_MALLOC.
# To include code which attempts to compress string data, include -DCOMPRESS.
# To eliminate the message third parties see when a player whispers, include
# -DQUIET_WHISPER.
# To include Stephen White's gender flags and pronoun substitution code,
# include -DGENDER.
# To give set (!)WIZARD and extended WHO privs only to id #1,
# include -DGOD_PRIV. When this option is set, two other options
# become meanigful
# -DGOD_MODE Restricts host names some commands to #1
# -DGOD_ONLY_PCREATE Restricts @pcreate to player #1
# To have logs and WHO use hostnames instead of addresses, include
# -DHOST_NAME.
# To have messages for connect and disconnect, include -DCONNECT_MESSAGES.
# To use a hashed player list for player name lookups,
# include -DPLAYER_LIST.
# To disable login-time creation of players, include -DREGISTRATION.
# see GOD_ONLY_PCREATE above.
# To cause netmud to detach itself from the terminal on startup, include
# -DDETACH. The log file appears on LOG_FILE, set in config.h.
# To add the @count & @recycle command, include -DRECYCLE
# To disable core dump on errors, include -DNODUMPCORE
# To add the ROBOT flag (allowing robots to be excluded from some rooms
# at each player's request), include -DROBOT_MODE
# To use Tinker instead of Wizard, Bobble instead of Toad, and
# donate instead of sacrifice, include -DTINKER
# To prevent users from using confusing names
# (currently A, An, The, You, Your, Going, Huh?), include -DNOFAKES
# To include code for marking all things with a timestamp/usecnt,
# include -DTIMESTAMPS
#
# To Use Islandia values in config.h, include -DISLANDIA
# To Use TinyHELL values in config.h, include -DTINYHELL
#DEFS= -DGOD_PRIV -DCOMPRESS -DQUIET_WHISPER -DGENDER -DHOST_NAME \
# -DCONNECT_MESSAGES -DPLAYER_LIST -DDETACH -DREGISTRATION \
# -DGOD_ONLY_PCREATE -DROBOT_MODE -DRECYCLE -DNOFAKES \
# -DTINYHELL
DEFS= -DGOD_PRIV -DCOMPRESS -DQUIET_WHISPER -DGENDER -DHOST_NAME \
-DCONNECT_MESSAGES -DPLAYER_LIST -DROBOT_MODE \
-DRECYCLE -DTINKER -DNOFAKES -DTIMESTAMPS
CFLAGS= $(OPTIM) $(DEFS)
LDFLAGS = -g
# Everything needed to use db.c
DBFILES= db.c compress.c player_list.c stringutil.c
DBOFILES= db.o compress.o player_list.o stringutil.o
# Everything except interface.c --- allows for multiple interfaces
CFILES= create.c game.c help.c look.c match.c move.c player.c predicates.c \
rob.c set.c speech.c utils.c wiz.c \
boolexp.c unparse.c os.c $(DBFILES)
# .o versions of above
OFILES= create.o game.o help.o look.o match.o move.o player.o predicates.o \
rob.o set.o speech.o utils.o wiz.o boolexp.o \
unparse.o $(DBOFILES)
# Files in the standard distribution
DISTFILES= $(CFILES) config.h db.h externs.h interface.h match.h \
interface.c sanity-check.c extract.c dump.c decompress.c \
help.txt small.db minimal.db restart-cmu do_gripes \
restart-day restart-night tiny.docs tinymud.ps tinymud.tex \
README small.db.README \
CHANGES copyright.h announce.txt \
Makefile Makefile.bor Makefile.dgm Makefile.vc Makefile.lcc \
CHANGELOG os.h INSTALL_NOTES
PDIST= $(patsubst %,tinymud-1.5.4/%,$(DISTFILES))
RELEASE=dist
OUTFILES= netmud$(EXE) dump$(EXE) decompress$(EXE) sanity-check$(EXE) \
extract$(EXE)
all: $(OUTFILES)
netmud$(EXE): interface.o $(OFILES)
$(CC) $(LDFLAGS) -o $@ $^
dump$(EXE): dump.o unparse.o $(DBOFILES)
$(CC) $(LDFLAGS) -o $@ $^
sanity-check$(EXE): sanity-check.o utils.o $(DBOFILES)
$(CC) $(LDFLAGS) -o $@ $^
extract$(EXE): extract.o utils.o $(DBOFILES)
$(CC) $(LDFLAGS) -o $@ $^
decompress$(EXE): decompress.o compress.o
$(CC) $(LDFLAGS) -o $@ $^
clean:
-rm -f *.o *.d a.out core gmon.out $(OUTFILES)
dist:
ln -s ./ tinymud-1.5.4
tar czvf tinymud-1.5.4-$(RELEASE).tar.gz $(PDIST)
rm tinymud-1.5.4
# pull in dependency info for *existing* .o files
OBJDEPENDS := $(OFILES) game.o interface.o dump.o \
sanity-check.o extract.o paths.o decompress.o
-include $(OBJDEPENDS:.o=.d)
# compile and generate dependency info;
# more complicated dependency computation, so all prereqs listed
# will also become command-less, prereq-less targets
# sed: append directory to object target. (gcc bug?)
# sed: strip the target (everything before colon)
# sed: remove any continuation backslashes
# fmt -1: list words one per line
# sed: strip leading spaces
# sed: add trailing colons
%.o: %.c
$(CC) -c $(CFLAGS) $*.c -o $*.o
@$(CC) -MM $(CFLAGS) $*.c > $*.d
@mv -f $*.d $*.d.tmp
@sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d
@sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
sed -e 's/^ *//' -e 's/$$/:/' >> $*.d
@rm -f $*.d.tmp