# Must be GNU Make! DATESTAMP = $(shell /bin/date "+%y.%m.%d") DEPLINE = $(shell /bin/grep -n -e '^\#--- Comment for make deps ---' GNUmakefile | awk -F: '{print $$1}') CC = gcc #g++ MAKE = make #gmake PRODBIN = ../bin PRODOWN = wiley.users PRODMODE = 0750 BINDIR = bin IDENTDIR = libident-0.19 NEED_CRYPT = -lcrypt #Linux needs this #NEED_COMPAT = -lcompat #BSD needs this NEED_MATH = -lm #math for tracking and such SQL_INC = -DUSE_PGSQL -I/usr/include/postgresql SQL_LIB = -L/usr/lib/postgresql -lpq -lecpg ID_DEP = $(IDENTDIR)/libident.a ID_INC = # ID_LIB = -L$(IDENTDIR) -lident IMC_INC = -DIMC -DIMCWILEY I3_INC = -DI3 HOSTTYPE = $(shell arch) ifeq "$(HOSTTYPE)" "x86_64" M_ARCH = -m64 else M_ARCH = -m32 endif W_ERROR = -Werror W_ANSI = #-pedantic W_UBER = -Wall W_FORMAT = -Wformat -Wformat-security -Wmissing-format-attribute W_MESSY = -Wmissing-braces -Wparentheses -Wshadow -Wredundant-decls W_TYPE = -Wcast-qual -Wcast-align -Wchar-subscripts -Wreturn-type -Wswitch -Wwrite-strings W_EXTRA = -Wunused -Wuninitialized #-Wunreachable-code W_NITPICK = -Wpointer-arith -Winline ifeq ($(CC), gcc) W_CONLY = -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes endif W_FLAGS = $(W_ERROR) $(W_ANSI) $(W_UBER) $(W_FORMAT) $(W_MESSY) $(W_TYPE) $(W_EXTRA) $(W_NITPICK) $(W_CONLY) OPT_FLAG = -pipe -O3 #-Wuninitialized ADDL_DEBUG = #-DTIME_DEBUG DEBUG_FLAG = -ggdb3 EFENCE = #-lpthread -lefence PROF_FLAG = #-pg INC = -Iinclude $(ID_INC) $(IMC_INC) $(I3_INC) #$(SQL_INC) LIB = $(ID_LIB) $(NEED_MATH) $(NEED_CRYPT) $(NEED_COMPAT) $(EFENCE) #$(SQL_LIB) UTILSLIB = $(NEED_MATH) $(NEED_CRYPT) $(NEED_COMPAT) $(EFENCE) CFLAGS = $(W_FLAGS) $(DEBUG_FLAG) $(OPT_FLAG) $(PROF_FLAG) $(M_ARCH) $(INC) LDFLAGS = $(DEBUG_FLAG) $(OPT_FLAG) $(PROF_FLAG) VER = $(addprefix include/, version.h) OLDV = $(shell perl -ne '$$i = $$1 if /Version\s+\d\.(\d+)w3-beta/i; END { $$i = 0 if !defined $$i; print "$$i\n";}' < $(VER)) VERSION = $(shell echo $(OLDV) + 1 | bc) tOBJ = mob_actions.o spec_procs.o breath_weapons.o tracking.o \ act_comm.o act_info.o act_move.o act_obj.o act_off.o \ act_other.o act_skills.o act_social.o act_wiz.o \ board.o bug.o comm.o constants.o db.o fight.o handler.o \ hash.o interpreter.o limits.o magic.o magic_utils.o \ modify.o multiclass.o opinion.o random.o reception.o \ shop.o signals.o sound.o spell_parser.o \ spells.o trap.o utils.o weather.o whod.o events.o \ ban.o sha256.o imc.o i3.o OBJ = $(addprefix obj/, $(tOBJ)) tIDOBJ = id_close.o id_open.o id_parse.o \ id_query.o ident.o support.o version.o IDOBJ = $(addprefix obj/, $(tIDOBJ)) all : version depend bin bin : $(BINDIR)/sign $(BINDIR)/bounce $(BINDIR)/genpasswd $(BINDIR)/mkworld $(BINDIR)/wileymud testhost : @echo "$(HOSTTYPE)" @echo "$(M_ARCH)" $(BINDIR)/wileymud : $(ID_DEP) $(OBJ) @echo Heave Ho! Load the beastie! $(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIB) @ls -l $(BINDIR) $(BINDIR)/mkworld : obj/mkworld.o @echo Make the world editing program... $(CC) $(LDFLAGS) -o $@ $< $(UTILSLIB) $(BINDIR)/sign : obj/sign.o @echo Make the downtime notice program... $(CC) $(LDFLAGS) -o $@ $< $(UTILSLIB) $(BINDIR)/genpasswd : obj/genpasswd.o @echo Make the password generation program... $(CC) $(LDFLAGS) -o $@ $< $(UTILSLIB) $(BINDIR)/bounce : obj/bounce.o @echo Make the port bouncer program... $(CC) $(LDFLAGS) -o $@ $< $(UTILSLIB) $(ID_DEP): $(IDOBJ) (cd $(IDENTDIR);$(MAKE) linux) .PHONY : depend depend : @echo 'Building dependancies' @find . -name \*.c -a -type f -print0 | grep -z -Z -v convert | xargs -0 -P 1 -r $(CC) $(CFLAGS) -MM >.deps @echo 'Self-Modifying GNUmakefile' @head -$(DEPLINE) GNUmakefile >.new_makefile @cat .deps | perl -ne '{ s!^([^:]+):!obj/$$1:!; print $$_; }' >>.new_makefile @mv -f GNUmakefile .old_makefile @mv -f .new_makefile GNUmakefile @echo 'Now do "make bin"!' .PHONY : version version : @echo '/* Auto-generated -- DO NOT EDIT */' > $(VER) @echo '#ifndef _VERSION_H' >> $(VER) @echo '#define _VERSION_H' >> $(VER) @echo '' >> $(VER) @echo "#define VERSION_STR \\\\" >> $(VER) @echo "\"\\\\r\\\\n*** Welcome to WileyMUD III, Quixadhal's Version 1.$(VERSION)w3-beta ($(DATESTAMP)) ***\\\\r\\\\n\"" >> $(VER) @echo "#define VERSION_BASE \"WileyMUD III\"" >> $(VER) @echo "#define VERSION_BUILD \"1.$(VERSION)b\"" >> $(VER) @echo '#endif /* _VERSION_H */' >> $(VER) @echo New version file generated. .PHONY : spotless spotless : @echo -n Wiping away all generated files... @find . -name \*.o -a -type f -print0 | xargs -0 -P 1 -r rm -f @find . -name \*.a -a -type f -print0 | xargs -0 -P 1 -r rm -f @rm -f tags @rm -f $(BINDIR)/sign $(BINDIR)/bounce $(BINDIR)/genpasswd $(BINDIR)/mkworld $(BINDIR)/wileymud @echo done. .PHONY : clean clean : @echo -n Wiping away intermediate clutter... @find . -name \*.o -a -type f -print0 | xargs -0 -P 1 -r rm -f @find . -name \*.a -a -type f -print0 | xargs -0 -P 1 -r rm -f @rm -f tags @echo done. .PHONY : tags tags : @echo -n Making tag files... @find . -name \*.[ch] -a -type f -print0 | grep -z -Z -v convert | xargs -0 -P 1 -r ctags @echo done. .PHONY : install install : bin @echo -n Installing into production environment... @-mv $(PRODBIN)/wileymud $(PRODBIN)/wileymud.old @cp -vp $(BINDIR)/wileymud $(BINDIR)/sign $(BINDIR)/bounce $(BINDIR)/genpasswd $(BINDIR)/mkworld $(PRODBIN)/ @chown $(PRODOWN) $(PRODBIN)/wileymud $(PRODBIN)/sign $(PRODBIN)/bounce $(PRODBIN)/genpasswd $(PRODBIN)/mkworld @chmod $(PRODMODE) $(PRODBIN)/wileymud $(PRODBIN)/sign $(PRODBIN)/bounce $(PRODBIN)/genpasswd $(PRODBIN)/mkworld @cp -vp utils/wileyloop.sh $(PRODBIN)/wileyloop @chown $(PRODOWN) $(PRODBIN)/wileyloop @chmod $(PRODMODE) $(PRODBIN)/wileyloop @echo done. %c : %pgc ecpg $(INC) -c $< -o $@ obj/%o : %c $(CC) $(CFLAGS) -c $< -o $@ obj/sign.o obj/mkworld.o obj/genpasswd.o obj/bounce.o : obj/%o : utils/%c $(CC) $(CFLAGS) -c $< -o $@ #--- Comment for make deps --- obj/act_social.o: act_social.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/multiclass.h include/act_social.h obj/shop.o: shop.c include/global.h include/bug.h include/comm.h \ include/handler.h include/db.h include/interpreter.h include/utils.h \ include/constants.h include/act_comm.h include/multiclass.h \ include/act_social.h include/act_wiz.h include/spec_procs.h \ include/shop.h obj/opinion.o: opinion.c include/global.h include/bug.h include/utils.h \ include/spells.h include/constants.h include/comm.h include/db.h \ include/multiclass.h include/opinion.h obj/comm.o: comm.c include/global.h include/i3.h include/imc.h \ include/imccfg.h include/bug.h include/utils.h include/interpreter.h \ include/handler.h include/db.h include/modify.h include/whod.h \ include/multiclass.h include/weather.h include/mudlimits.h \ include/spells.h include/spell_parser.h include/sound.h include/fight.h \ include/mob_actions.h include/act_other.h include/signals.h \ include/ban.h include/board.h include/comm.h obj/i3.o: i3.c include/global.h include/bug.h include/utils.h \ include/multiclass.h include/comm.h include/constants.h include/modify.h \ include/interpreter.h include/version.h include/i3.h obj/act_off.o: act_off.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/mudlimits.h include/opinion.h \ include/multiclass.h include/constants.h include/spec_procs.h \ include/fight.h include/act_skills.h include/act_move.h \ include/spell_parser.h include/act_info.h include/breath_weapons.h \ include/act_off.h obj/weather.o: weather.c include/global.h include/bug.h include/utils.h \ include/comm.h include/handler.h include/interpreter.h include/db.h \ include/weather.h obj/limits.o: limits.c include/global.h include/bug.h include/spells.h \ include/comm.h include/db.h include/spell_parser.h include/constants.h \ include/utils.h include/multiclass.h include/fight.h include/reception.h \ include/interpreter.h include/handler.h include/act_obj.h \ include/act_other.h include/mudlimits.h obj/whod.o: whod.c include/version.h include/global.h include/bug.h \ include/db.h include/comm.h include/utils.h include/interpreter.h \ include/multiclass.h include/whod.h obj/bounce.o: utils/bounce.c obj/genpasswd.o: utils/genpasswd.c obj/mkworld.o: utils/mkworld.c obj/sign.o: utils/sign.c include/global.h include/bug.h obj/utils.o: utils.c include/global.h include/bug.h include/spells.h \ include/constants.h include/db.h include/opinion.h include/comm.h \ include/hash.h include/multiclass.h include/handler.h include/fight.h \ include/act_info.h include/reception.h include/act_off.h \ include/magic_utils.h include/mudlimits.h include/act_skills.h \ include/utils.h obj/multiclass.o: multiclass.c include/global.h include/bug.h include/utils.h \ include/comm.h include/db.h include/interpreter.h include/handler.h \ include/spells.h include/mudlimits.h include/opinion.h \ include/constants.h include/multiclass.h obj/act_comm.o: act_comm.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/constants.h include/mudlimits.h \ include/multiclass.h include/board.h include/act_comm.h obj/board.o: board.c include/global.h include/bug.h include/utils.h \ include/comm.h include/db.h include/interpreter.h include/multiclass.h \ include/modify.h include/handler.h include/act_info.h include/board.h obj/sound.o: sound.c include/global.h include/bug.h include/comm.h \ include/interpreter.h include/handler.h include/db.h include/spells.h \ include/trap.h include/utils.h include/sound.h obj/ban.o: ban.c include/global.h include/utils.h include/comm.h \ include/modify.h include/interpreter.h include/db.h include/bug.h \ include/ban.h obj/magic.o: magic.c include/global.h include/bug.h include/utils.h \ include/comm.h include/handler.h include/mudlimits.h include/db.h \ include/constants.h include/spells.h include/spell_parser.h \ include/multiclass.h include/fight.h include/opinion.h \ include/reception.h include/magic_utils.h include/act_off.h \ include/act_obj.h include/act_info.h obj/act_other.o: act_other.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/mudlimits.h include/constants.h \ include/spell_parser.h include/reception.h include/multiclass.h \ include/fight.h include/spec_procs.h include/act_skills.h \ include/act_comm.h include/modify.h include/act_other.h obj/act_move.o: act_move.c include/global.h include/utils.h include/bug.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/trap.h include/constants.h include/whod.h \ include/multiclass.h include/fight.h include/reception.h \ include/magic_utils.h include/spell_parser.h include/act_info.h \ include/act_skills.h include/act_move.h obj/hash.o: hash.c include/global.h include/bug.h include/comm.h \ include/utils.h include/hash.h obj/magic_utils.o: magic_utils.c include/global.h include/bug.h \ include/utils.h include/comm.h include/db.h include/spells.h \ include/handler.h include/mudlimits.h include/fight.h \ include/spell_parser.h include/multiclass.h include/magic_utils.h obj/sha256.o: sha256.c include/sha256.h obj/spec_procs.o: spec_procs.c include/global.h include/bug.h include/utils.h \ include/act_comm.h include/act_info.h include/act_move.h \ include/act_obj.h include/act_off.h include/act_social.h \ include/act_wiz.h include/board.h include/comm.h include/constants.h \ include/db.h include/handler.h include/hash.h include/interpreter.h \ include/mudlimits.h include/modify.h include/multiclass.h \ include/opinion.h include/reception.h include/shop.h include/spells.h \ include/spell_parser.h include/fight.h include/breath_weapons.h \ include/mob_actions.h include/tracking.h include/spec_procs.h obj/handler.o: handler.c include/global.h include/bug.h include/utils.h \ include/comm.h include/db.h include/interpreter.h include/spells.h \ include/spell_parser.h include/constants.h include/fight.h \ include/modify.h include/multiclass.h include/opinion.h \ include/act_wiz.h include/handler.h obj/fight.o: fight.c include/global.h include/bug.h include/utils.h \ include/comm.h include/handler.h include/interpreter.h include/db.h \ include/constants.h include/spells.h include/spell_parser.h \ include/mudlimits.h include/random.h include/act_move.h \ include/reception.h include/multiclass.h include/act_wiz.h \ include/act_skills.h include/opinion.h include/spec_procs.h \ include/mob_actions.h include/act_off.h include/fight.h obj/tracking.o: tracking.c include/global.h include/bug.h include/utils.h \ include/act_move.h include/comm.h include/constants.h include/db.h \ include/handler.h include/hash.h include/interpreter.h \ include/multiclass.h include/opinion.h include/spells.h include/fight.h \ include/modify.h include/tracking.h obj/random.o: random.c include/global.h include/bug.h include/utils.h \ include/comm.h include/i3.h include/random.h obj/constants.o: constants.c include/global.h include/bug.h \ include/mudlimits.h include/trap.h include/constants.h obj/modify.o: modify.c include/global.h include/bug.h include/utils.h \ include/interpreter.h include/handler.h include/db.h include/comm.h \ include/multiclass.h include/modify.h obj/mob_actions.o: mob_actions.c include/global.h include/bug.h \ include/utils.h include/act_obj.h include/act_off.h include/comm.h \ include/constants.h include/db.h include/handler.h include/hash.h \ include/mudlimits.h include/multiclass.h include/opinion.h \ include/spells.h include/spell_parser.h include/fight.h include/trap.h \ include/act_skills.h include/spec_procs.h include/tracking.h \ include/mob_actions.h obj/spell_parser.o: spell_parser.c include/global.h include/bug.h \ include/utils.h include/comm.h include/db.h include/interpreter.h \ include/handler.h include/spells.h include/constants.h include/act_off.h \ include/random.h include/multiclass.h include/fight.h include/act_info.h \ include/spell_parser.h obj/act_wiz.o: act_wiz.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/mudlimits.h include/constants.h \ include/spell_parser.h include/board.h include/whod.h \ include/reception.h include/spec_procs.h include/multiclass.h \ include/act_skills.h include/act_info.h include/fight.h include/hash.h \ include/weather.h include/modify.h include/tracking.h include/act_wiz.h obj/events.o: events.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/mudlimits.h include/constants.h \ include/spell_parser.h include/fight.h include/spec_procs.h \ include/opinion.h include/hash.h include/events.h obj/signals.o: signals.c include/global.h include/bug.h include/utils.h \ include/comm.h include/whod.h include/signals.h obj/breath_weapons.o: breath_weapons.c include/global.h include/bug.h \ include/utils.h include/act_off.h include/comm.h include/db.h \ include/mudlimits.h include/multiclass.h include/spells.h \ include/breath_weapons.h obj/support.o: libident-0.19/support.c libident-0.19/ident.h obj/lookup-tester.o: libident-0.19/lookup-tester.c libident-0.19/ident.h obj/ident-tester.o: libident-0.19/ident-tester.c libident-0.19/ident.h obj/id_close.o: libident-0.19/id_close.c libident-0.19/ident.h obj/ident.o: libident-0.19/ident.c libident-0.19/ident.h obj/version.o: libident-0.19/version.c obj/id_parse.o: libident-0.19/id_parse.c libident-0.19/ident.h obj/id_query.o: libident-0.19/id_query.c libident-0.19/ident.h obj/id_open.o: libident-0.19/id_open.c libident-0.19/ident.h obj/reception.o: reception.c include/global.h include/bug.h include/comm.h \ include/handler.h include/db.h include/interpreter.h include/utils.h \ include/spells.h include/multiclass.h include/act_social.h \ include/spec_procs.h include/reception.h obj/act_obj.o: act_obj.c include/global.h include/bug.h include/utils.h \ include/comm.h include/interpreter.h include/handler.h include/db.h \ include/spells.h include/trap.h include/constants.h \ include/spell_parser.h include/multiclass.h include/mudlimits.h \ include/fight.h include/act_info.h include/act_obj.h obj/imc.o: imc.c include/sha256.h include/global.h include/bug.h \ include/utils.h include/multiclass.h include/comm.h include/constants.h \ include/modify.h include/imc.h include/imccfg.h obj/db.o: db.c include/global.h include/i3.h include/imc.h include/imccfg.h \ include/bug.h include/utils.h include/comm.h include/handler.h \ include/mudlimits.h include/opinion.h include/hash.h include/constants.h \ include/spells.h include/spell_parser.h include/reception.h \ include/weather.h include/modify.h include/fight.h include/act_social.h \ include/spec_procs.h include/multiclass.h include/board.h \ include/interpreter.h include/ban.h include/db.h obj/spells.o: spells.c include/global.h include/bug.h include/utils.h \ include/comm.h include/db.h include/interpreter.h include/handler.h \ include/constants.h include/multiclass.h include/act_move.h \ include/spells.h include/spell_parser.h include/fight.h obj/bug.o: bug.c include/global.h include/utils.h include/comm.h \ include/multiclass.h include/db.h include/bug.h obj/act_skills.o: act_skills.c include/global.h include/bug.h include/utils.h \ include/comm.h include/constants.h include/db.h include/handler.h \ include/interpreter.h include/multiclass.h include/spells.h \ include/spell_parser.h include/fight.h include/spec_procs.h \ include/act_info.h include/act_skills.h obj/interpreter.o: interpreter.c include/global.h include/i3.h include/imc.h \ include/imccfg.h include/bug.h include/comm.h include/version.h \ include/db.h include/utils.h include/mudlimits.h include/constants.h \ include/act_comm.h include/act_info.h include/act_move.h \ include/act_obj.h include/act_off.h include/act_other.h \ include/act_skills.h include/act_social.h include/act_wiz.h \ include/spells.h include/spell_parser.h include/modify.h include/whod.h \ include/events.h include/random.h include/board.h include/multiclass.h \ include/handler.h include/reception.h include/tracking.h include/ban.h \ include/interpreter.h obj/trap.o: trap.c include/global.h include/bug.h include/utils.h \ include/spells.h include/comm.h include/db.h include/opinion.h \ include/constants.h include/fight.h include/reception.h \ include/spell_parser.h include/multiclass.h include/handler.h \ include/act_info.h include/trap.h obj/act_info.o: act_info.c include/global.h include/bug.h include/version.h \ include/utils.h include/comm.h include/interpreter.h include/handler.h \ include/db.h include/spells.h include/mudlimits.h include/trap.h \ include/hash.h include/constants.h include/spell_parser.h include/whod.h \ include/multiclass.h include/modify.h include/act_wiz.h \ include/act_skills.h include/spec_procs.h include/tracking.h \ include/act_info.h