Rebuild correctly when extern.h is changed.
[vms-empire.git] / Makefile
index eae6fa1..f59a87e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,35 +1,26 @@
-# %W% %G% %U% - (c) Copyright 1987, 1988 Chuck Simmons
-
 #
 #    Copyright (C) 1987, 1988 Chuck Simmons
 #
 # See the file COPYING, distributed with empire, for restriction
 # and warranty information.
 
-# Change the line below for your system.  If you are on a Sun or Vax,
-# you may want BSD.
-
-#SYS = BSD
-SYS = SYSV
+VERS=1.10
 
 # Use -g to compile the program for debugging.
 
-DEBUG = -g -DDEBUG
-#DEBUG = -O
+#DEBUG = -g -DDEBUG -Wall
+DEBUG = -O2 -Wall
 
 # Use -p to profile the program.
 #PROFILE = -p -DPROFILE
 PROFILE =
 
-# Define all necessary libraries.  'curses' is necessary.  'termcap'
-# is needed on BSD systems.
-LIBS = -ldcurses
-#LIBS = -lcurses -ltermcap
+LIBS = -lncurses
 
 # You shouldn't have to modify anything below this line.
 
-CFLAGS = $(DEBUG) $(PROFILE) -D$(SYS)
-INS   = /etc/install
+# There's a dynamic format in the object-display routines; suppress the warning
+CFLAGS = $(DEBUG) $(PROFILE) -Wno-format-security
 
 FILES = \
        attack.c \
@@ -47,7 +38,7 @@ FILES = \
        usermove.c \
        util.c
 
-SHARFILES = COPYING $(FILES) bugs README makefile empire.6 empire.h extern.h
+HEADERS = empire.h extern.h
 
 OFILES = \
        attack.o \
@@ -65,25 +56,57 @@ OFILES = \
        usermove.o \
        util.o
 
-all: empire
+all: vms-empire
+
+vms-empire: $(OFILES)
+       $(CC) $(PROFILE) -o vms-empire $(OFILES) $(LIBS)
+
+attack.o:: extern.h
+compmove.o:: extern.h
+display.o:: extern.h
+edit.o:: extern.h
+empire.o:: extern.h
+game.o:: extern.h
+main.o:: extern.h
+map.o:: extern.h
+math.o:: extern.h
+object.o:: extern.h
+term.o:: extern.h
+usermove.o:: extern.h
+util.o:: extern.h
 
-empire: $(OFILES)
-       $(CC) $(PROFILE) -o empire $(OFILES) $(LIBS)
+empire.6: vms-empire.xml
+       xmlto man vms-empire.xml
+
+vms-empire.html: vms-empire.xml
+       xmlto html-nochunks vms-empire.xml
+
+TAGS: $(HEADERS) $(FILES)
+       etags $(HEADERS) $(FILES)
 
 lint: $(FILES)
        lint -u -D$(SYS) $(FILES) -lcurses
 
+# cppcheck should run clean
+cppcheck:
+       cppcheck --inline-suppr --template gcc --enable=all --force *.[ch]
+
 clean:
-       rm -f *.o
+       rm -f *.o TAGS vms-empire
+       rm -f *.6 *.html SHIPPER.*
 
 clobber: clean
-       rm -f empire
+       rm -f vms-empire vms-empire-*.tar*
+
+SOURCES = README NEWS control empire.6 COPYING Makefile BUGS AUTHORS $(FILES) $(HEADERS) empire-logo.png
 
-sharsplit: $(SHARFILES)
-       sharsplit -m -r -o empire $(SHARFILES)
+vms-empire-$(VERS).tar.gz: $(SOURCES)
+       @ls $(SOURCES) | sed s:^:vms-empire-$(VERS)/: >MANIFEST
+       @(cd ..; ln -s vms-empire vms-empire-$(VERS))
+       (cd ..; tar -czf vms-empire/vms-empire-$(VERS).tar.gz `cat vms-empire/MANIFEST`)
+       @(cd ..; rm vms-empire-$(VERS))
 
-install: empire
-       $(INS) -o -f /usr/local/games empire
+dist: vms-empire-$(VERS).tar.gz
 
-installman: empire.6
-       $(INS) -f /usr/local/man/man6 empire.6
+release: vms-empire-$(VERS).tar.gz vms-empire.html
+       shipper -u -m -t; make clean