# LPMud 1.4.0 makefile
CC = gcc
AR = ar
YACC = yacc
LEX = flex
# If you don't have or care to use lint/splint set this to nothing
LINT =
#LINT = splint
# The suffix appended to executables.
# This should be set for Cygwin and Windows.
#EXE = .exe
EXE =
#the value of FLAGS is passed to CFLAGS (incl. in subdirs)
RAND=RANDOM
CFLAGS = -D$(RAND) -DLEX -g -O2 -pipe -Wall -W -Wno-parentheses -Wno-unused
LDFLAGS = -g
# Include directories
INCS = -I./
# See LINT above - these flags for splint
LINTFLAGS = $(INCS) -weak -warnposixheaders +relaxtypes -retvalother
#LIBS may be defined to be any other system libraries you may require
LIBS = -lcrypt
HDR = config.h wiz_list.h sent.h security.h regexp.h object.h lnode.h \
interpret.h comm.h os.h telnet.h
SRC=lang.y lexical.l main.c lnode.c interpret.c simulate.c object.c backend.c \
comm1.c ed.c regexp.c wiz_list.c swap.c string_space.c os.c
OBJ=lang.o lexical.o main.o lnode.o interpret.o simulate.o object.o backend.o \
comm1.o ed.o regexp.o wiz_list.o swap.o string_space.o
XTRA = README CHANGES.1.4.0-A CHANGES Copyright Makefile INSTALL_NOTES IDEA \
makefile.bor makefile.vc restart_mud
MISCSRC = count_active.c
MISCOBJ = $(MISCSRC:.c=.o)
OTHER = mudlib/*
# Files in the standard distribution
DISTFILES = $(SRC) $(HDR) $(XTRA) $(OTHER) $(MISCSRC)
PDIST = $(patsubst %,lpmud/%,$(DISTFILES))
RELEASE = dist
# Dependency information
OBJDEPENDS = $(OBJ) $(MISCOBJ)
TARGETS = parse$(EXE) count_active$(EXE)
all: $(TARGETS)
parse$(EXE) : $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)
count_active$(EXE) : count_active.o
$(CC) $(LDFLAGS) -o $@ $<
lang.c y.tab.h : lang.y
$(YACC) -d lang.y
mv y.tab.c lang.c
lexical.c : lexical.l
$(LEX) lexical.l
mv lex.yy.c lexical.c
clean :
-rm -f $(TARGETS) lang.c y.tab.h lexical.c $(OBJDEPENDS) $(OBJDEPENDS:.o=.d)
dist :
ln -s ./ lpmud
-tar czvf lpmud-$(RELEASE).tar.gz $(PDIST) --exclude=.svn
rm lpmud
# pull in dependency info for *existing* .o files
-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
ifdef LINT
-$(LINT) $(LINTFLAGS) $*.c
endif
$(CC) -c $(CFLAGS) $(INCS) $*.c -o $*.o
@$(CC) -MM $(CFLAGS) $(INCS) $*.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