# DikuMUD makefile CC = gcc #CC = gcc-3 #CC = gcc-4 CFLAGS = -g -O2 -pipe -Wall -W -Wno-parentheses -Wno-unused -fno-builtin-log LIBS= -lcrypt # The suffix appended to executables. # This should be set for Cygwin and Windows. EXE = .exe #EXE = HEADERS = comm.h db.h handler.h interpreter.h limits.h maildef.h \ os.h spells.h structs.h utils.h prototypes.h CFILES= comm.c act.comm.c act.informative.c act.movement.c act.obj1.c \ act.obj2.c act.offensive.c act.other.c act.social.c act.wizard.c \ handler.c db.c interpreter.c utility.c spec_assign.c shop.c \ limits.c mobact.c fight.c modify.c weather.c spells1.c spells2.c \ spell_parser.c reception.c constants.c spec_procs.c signals.c \ board.c mar_fiz_maz.c magic.c changes.c # .o versions of above OFILES= $(CFILES:.c=.o) OTHERSTUFF= mail.c os.c UTILITIES= insert_any.c repairgo.c list.c syntax_checker.c \ sign.c update.c delplay.c # documentation DOCS= actions.doc defs.doc license.doc running.doc time.doc combat.doc \ do_mail look.doc shops.doc values.doc comm.doc handler.doc macro.doc \ skills.doc database.doc interpreter.doc newstruct.doc spell_info.doc \ dbsup.doc levels.doc readme spells.doc PDOCS= $(patsubst %,doc/%,$(DOCS)) # data - zones, help, mobs, objects, rooms, etc. DATA= actions help_table news readme tinyworld.wld board.messages info \ pcobjs.obj tinyworld.mob tinyworld.zon credits messages players \ tinyworld.obj wizlist help motd poses tinyworld.shp PDATA= $(patsubst %,lib/%,$(DATA)) # Files in the standard distribution DISTFILES= $(CFILES) $(HEADERS) $(PDOCS) $(PDATA) $(UTILITIES) \ $(OTHERSTUFF) nightrun opstart readme INSTALL_NOTES \ makefile makefile.bor makefile.dgm makefile.vc makefile.lcc PDIST= $(patsubst %,diku-alfa/%,$(DISTFILES)) RELEASE=dist TARGETS= dmserver$(EXE) list$(EXE) delplay$(EXE) insert_any$(EXE) repairgo$(EXE) \ syntax_checker$(EXE) update$(EXE) sign$(EXE) OTARGETS= list.o delplay.o insert_any.o repairgo.o syntax_checker.o \ update.o sign.o all: $(TARGETS) dmserver$(EXE) : $(OFILES) $(CC) $(CFLAGS) -o dmserver $(OFILES) $(LIBS) list$(EXE) : list.o $(CC) $(CFLAGS) -o list list.o delplay$(EXE) : delplay.o $(CC) $(CFLAGS) -o delplay delplay.o insert_any$(EXE) : insert_any.o $(CC) $(CFLAGS) -o insert_any insert_any.o repairgo$(EXE) : repairgo.o $(CC) $(CFLAGS) -o repairgo repairgo.o syntax_checker$(EXE) : syntax_checker.o $(CC) $(CFLAGS) -o syntax_checker syntax_checker.o update$(EXE) : update.o $(CC) $(CFLAGS) -o update update.o sign$(EXE) : sign.o $(CC) $(CFLAGS) -o sign sign.o clean: -rm -f *.d $(OFILES) $(TARGETS) $(OTARGETS) splint : -splint -warnposix -weak *.c > splint.log dist: ln -s ./ diku-alfa tar czvf diku-alfa-$(RELEASE).tar.gz $(PDIST) rm diku-alfa # pull in dependency info for *existing* .o files OBJDEPENDS := $(OFILES) delplay.o list.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