# Makefile for tinymuck # #NB Check for comments beginning "#NB" before trying to build! #NB Which variant do you want? #VARIANT ?= BASE VARIANT ?= HOLO # This requires gcc, or an ANSI compiler which implements some gcc # extensions, to build. In particular, the muck uses nested functions # and nonlocal gotos. #NB Pick whatever looks likliest from the CC and CCFLAGS lines below. #NB The comments may or may not be useful in suggesting combinations. # Generic systems using GCC (first CC line if profiling, second if not) # # CC = gcc -g -p -DPROF -Wno-missing-prototypes # CC = gcc -g # CCFLAGS = -pipe -Wno-comment # IBM RT C compiler: # # CC= cc # CCFLAGS=-g # Dec 3100 C compiler and other MIPS machines # # CC= cc # CCFLAGS=-g # NeXT # # CC = cc -g # CCFLAGS = -W -Wreturn-type -Wunused -Wwrite-strings -DNOSYSCALLS # wgcc is a script of mine that runs gcc with lots of -W options. CCPROG != ( ( wgcc --version ) > /dev/null 2>&1 && echo wgcc ) || echo gcc CC = $(CCPROG) -g CCFLAGS = -pipe -Wno-comment #NB Uncomment these to get my hacks to make it run on NeXTStep 2.x. # EXTRAC = bsd-malloc.c # EXTRAO = bsd-malloc.o # for RCS only GET= co CLEAN= rcsclean MV= -mv -f RM= -rm -f ROOT= .. MAKE= make LINT= lint MKTAGS= ctags MKDEPEND=mkdep $(CFLAGS) $(CSRC) $(SSRC) #MKDEPEND=${MKDEPEND} -- ${CFLAGS} -- ${CSRC} ${SSRC} SRC_PREFIX= #NB -DMMMALLOC here says to use Mark Moreas' malloc library. #NB See also LIBS, below. # DEFS = -DMMMALLOC CFLAGS = ${CCFLAGS} ${DEFS} # Destination for binaries DEST=${ROOT}/game MISCSRC = Makefile ChangeLog COPYING CSRC = $(EXTRAC) boolexp.c case.c compile.c create.c daemon.c db.c\ dbck.c debug.c disassem.c edit.c game.c hashtab.c help.c hostnames.c\ inst.c interface.c interp.c lib.c log.c look.c malloc.c match.c md5.c\ move.c p_array.c p_conversions.c p_create.c p_descriptor.c p_file.c\ p_for.c p_interaction.c p_logic.c p_objects.c p_operands.c p_property.c\ p_stack.c p_strings.c p_tests.c p_time.c player.c predicates.c\ property.c pw-a.c pw-b.c pw-crypt.c quota.c random.c recycle.c regexp.c\ regexp_m.c rob.c set.c speech.c str-core-plain.c str.c stringutil.c\ time.c unparse.c usernames.c utils.c wiz.c SSRC = sanity.c unparse.c utils.c db.c decompress.c log.c COBJ = $(EXTRAO) boolexp.o case.o compile.o create.o daemon.o db.o\ dbck.o debug.o disassem.o edit.o game.o hashtab.o help.o hostnames.o\ inst.o interface.o interp.o lib.o log.o look.o malloc.o match.o md5.o\ move.o p_array.o p_conversions.o p_create.o p_descriptor.o p_file.o\ p_for.o p_interaction.o p_logic.o p_objects.o p_operands.o p_property.o\ p_stack.o p_strings.o p_tests.o p_time.o player.o predicates.o\ property.o pw-a.o pw-b.o pw-crypt.o quota.o random.o recycle.o regexp.o\ regexp_m.o rob.o set.o speech.o str-core-plain.o str.o stringutil.o\ time.o unparse.o usernames.o utils.o wiz.o SOBJ = sanity.o unparse.o utils.o db.o decompress.o log.o DATAFILES = data/help.text CLEANFILES = core netmuck.core PREDEPEND = VARFILES = #NB -lmmmalloc here is the library for -DMMMALLOC, above. # LIBS = -lmmmalloc -lm LIBS = -lcrypt -lm OBJ = ${COBJ} ${MOBJ} default: netmuck copytolog $(DATAFILES) netmuck: ${COBJ} ${MV} netmuck netmuck~ ${CC} ${CFLAGS} -o netmuck ${COBJ} ${LIBS} ${RM} netmuck~ CLEANFILES += netmuck $(COBJ) all: netmuck copytolog decompress sanity tags copytolog: copytolog.o $(CC) -o copytolog copytolog.o CLEANFILES += copytolog copytolog.o bigram: bigram.o $(CC) -o bigram bigram.o CLEANFILES += bigram bigram.o sanity: $(SOBJ) ${RM} sanity ${CC} ${CFLAGS} -o sanity sanity.o unparse.o utils.o db.o decompress.o log.o ${LIBS} CLEANFILES += sanity sanity.o unparse.o utils.o db.o decompress.o log.o decompress: decompress.o ${RM} decompress ${CC} ${CFLAGS} -o decompress decompress.o ${LIBS} CLEANFILES += decompress index: index.o ${CC} ${CFLAGS} -o index index.o ${LIBS} config.h: base.config.h $(VARIANT)/patch.config.h cp base.config.h config+.h && patch config+.h < $(VARIANT)/patch.config.h && mv config+.h config.h CLEANFILES += config.h config+.h config+.h.orig PREDEPEND += config.h VARFILES += config.h params.h: base.params.h $(VARIANT)/patch.params.h cp base.params.h params+.h && patch params+.h < $(VARIANT)/patch.params.h && mv params+.h params.h CLEANFILES += params.h params+.h params+.h.orig PREDEPEND += params.h VARFILES += params.h unparse.c: base.unparse.c $(VARIANT)/patch.unparse.c cp base.unparse.c unparse+.c && patch unparse+.c < $(VARIANT)/patch.unparse.c && mv unparse+.c unparse.c CLEANFILES += unparse.c unparse+.c unparse+.c.orig PREDEPEND += unparse.c VARFILES += unparse.c data/help.text: data/base.help.text $(VARIANT)/patch.help.text cp data/base.help.text data/help+.text && patch data/help+.text < $(VARIANT)/patch.help.text && mv data/help+.text data/help.text CLEANFILES += data/help.text data/help+.text data/help+.text.orig VARFILES += data/help.text stringutil.o: crctable PREDEPEND += crctable crctable: gencrc ./gencrc edb88320 > crctable CLEANFILES += crctable gencrc: gencrc.o $(CC) -o gencrc gencrc.o CLEANFILES += gencrc gencrc.o .PHONY: variant variant: $(VARFILES) .PHONY: predepend predepend: $(PREDEPEND) .PHONY: depend depend: $(PREDEPEND) $(MKDEPEND) CLEANFILES += .depend .PHONY: clean clean: ${RM} $(CLEANFILES) # DO NOT DELETE THIS LINE -- make depend depends on it.