# Variable definitions used to control the build process. ###################################################################### NAME = DKE VERSION = 3.0 LONG_NAME = DKE, Dynamic Wargame for Experiment based on GECCO DISTALL = $(NAME)-$(VERSION)-all DISTBIN = $(NAME)-$(VERSION)-bin DISTSRC = $(NAME)-$(VERSION)-src DISTJDOC = $(NAME)-$(VERSION)-javadoc GZIP = gzip JAVAC = javac JAR = jar JAVADOC = javadoc TAR = tar ZIP = zip JFLAGS = -g:none CLASSPATH = classes ROOTDIR = classes GAMES = dke3 SOURCE = $(SOURCE_CLIENT) $(SOURCE_COMMON) $(SOURCE_COMMUNICATION) $(SOURCE_SERVER) $(SOURCE_UTIL) $(SOURCE_DKE) $(SOURCE_DKE3) SOURCE_CLIENT = `find src/gecco/client -type f -name *.java` SOURCE_COMMON = `find src/gecco/common -type f -name *.java` SOURCE_COMMUNICATION = `find src/gecco/communication -type f -name *.java` SOURCE_SERVER = `find src/gecco/server -type f -name *.java` SOURCE_UTIL = `find src/gecco/util -type f -name *.java` SOURCE_DKE = `find src/gecco/game/dke -type f -name *.java` SOURCE_DKE3 = `find src/gecco/game/dke3 -type f -name *.java` CLASSES_CLIENT = gecco/client gecco/common gecco/communication/messages gecco/communication/client \ gecco/server/core/ActionDefinition.class gecco/util gecco/game/dke/Def.class CLASSES_SERVER = gecco/client/Action.class gecco/common gecco/communication/messages \ gecco/communication/server gecco/server gecco/util CLASSES_DKE3 = gecco/game/dke gecco/game/dke3 # This creates a space-separated list of all packages. First, 'find' # finds all .java files. Then 'cat' concatenates them to one long # stream, and feeds that to 'grep', which extracts all lines beginning # with "package". Those lines are fed to 'sed', which replaces all # occurances of the string "package " with nothing. The result is fed # to another copy of 'sed', which replaces a semicolon and anything # that follows it to the end of the line with nothing. The result is a # list of package names. Finally, 'sort' sorts the package names, # removing duplicates. PACKAGES = `cat \`find src -type f -name *.java\` | grep '^package' | sed -e 's/package //' | sed -e 's/;.*//' | sort -u` # Build targets that do the actual compiling. ###################################################################### .PHONY: all all: gecco games .PHONY: games games: $(GAMES) .PHONY: gecco gecco: mkdir -p $(CLASSPATH) $(JAVAC) $(JFLAGS) -classpath $(CLASSPATH) -d $(ROOTDIR) $(SOURCE) mkdir -p $(CLASSPATH)/gecco/client/icons mkdir -p $(CLASSPATH)/gecco/client/audio cp src/gecco/client/icons/*.gif $(CLASSPATH)/gecco/client/icons cp src/gecco/client/audio/*.wav $(CLASSPATH)/gecco/client/audio mkdir -p lib cd $(CLASSPATH); \ $(JAR) cmf ../src/gecco/server/manifest.txt ../lib/gecco-server.jar $(CLASSES_SERVER); \ $(JAR) cmf ../src/gecco/client/manifest.txt ../lib/gecco-client.jar $(CLASSES_CLIENT) .PHONY: dke3 dke3: mkdir -p $(CLASSPATH) $(JAVAC) $(JFLAGS) -classpath $(CLASSPATH) -d $(ROOTDIR) $(SOURCE_DKE) $(SOURCE_DKE3) mkdir -p lib/game/dke3/classes cd $(CLASSPATH); \ $(JAR) cf ../lib/game/dke3/classes/classes.jar $(CLASSES_DKE) $(CLASSES_DKE3) mkdir -p lib/game/dke3/images cp src/gecco/game/dke/images/*.gif lib/game/dke3/images cp src/gecco/game/dke3/images/*.gif lib/game/dke3/images mkdir -p lib/game/dke3/conf cp src/gecco/game/dke3/conf/*.conf lib/game/dke3/conf cp src/gecco/game/dke3/text/*.txt lib/game/dke3/ .PHONY: javadoc javadoc: mkdir -p javadoc $(JAVADOC) -protected -sourcepath src -d javadoc -use -author -doctitle "$(LONG_NAME)" -windowtitle "$(LONG_NAME)" -link http://java.sun.com/j2se/1.4.2/docs/api/ -overview src/overview.html $(PACKAGES) > /dev/null # Build targets that package everything up into archive files, ready # to be downloaded. ###################################################################### .PHONY: dist dist: dist-unixall dist-unixbin dist-unixsrc dist-unixjavadoc dist-winall dist-winbin dist-winsrc dist-winjavadoc .PHONY: dist-genericall dist-genericall: dist-genericbin dist-genericsrc mkdir -p dist/generic/$(DISTALL) cp -R dist/generic/$(DISTBIN)/* dist/generic/$(DISTALL) mkdir -p dist/generic/$(DISTALL)/source cp -R dist/generic/$(DISTSRC)/* dist/generic/$(DISTALL)/source .PHONY: dist-genericbin dist-genericbin: all mkdir -p dist/generic/$(DISTBIN) cp -R lib/* dist/generic/$(DISTBIN) cp text/*.txt dist/generic/$(DISTBIN) .PHONY: dist-genericsrc dist-genericsrc: mkdir -p dist/generic/$(DISTSRC) cp -R src dist/generic/$(DISTSRC) cp -R startscripts dist/generic/$(DISTSRC) cp -R text dist/generic/$(DISTSRC) cp Makefile dist/generic/$(DISTSRC) rm -rf `find dist/generic/$(DISTSRC) -type d -name CVS` .PHONY: dist-genericjavadoc dist-genericjavadoc: javadoc mkdir -p dist/generic/$(DISTJDOC) cp -R javadoc/* dist/generic/$(DISTJDOC) .PHONY: dist-unixall dist-unixall: dist-genericall mkdir -p dist/unix/$(DISTALL) cp -R dist/generic/$(DISTALL)/* dist/unix/$(DISTALL) cp startscripts/unix/*.sh dist/unix/$(DISTALL) cd dist/unix; \ $(TAR) cf $(DISTALL).tar $(DISTALL); \ $(GZIP) $(DISTALL).tar .PHONY: dist-unixbin dist-unixbin: dist-genericbin mkdir -p dist/unix/$(DISTBIN) cp -R dist/generic/$(DISTBIN)/* dist/unix/$(DISTBIN) cp startscripts/unix/*.sh dist/unix/$(DISTBIN) cd dist/unix; \ $(TAR) cf $(DISTBIN).tar $(DISTBIN); \ $(GZIP) $(DISTBIN).tar .PHONY: dist-unixsrc dist-unixsrc: dist-genericsrc mkdir -p dist/unix/$(DISTSRC) cp -R dist/generic/$(DISTSRC)/* dist/unix/$(DISTSRC) cd dist/unix; \ $(TAR) cf $(DISTSRC).tar $(DISTSRC); \ $(GZIP) $(DISTSRC).tar .PHONY: dist-unixjavadoc dist-unixjavadoc: dist-genericjavadoc mkdir -p dist/unix/$(DISTJDOC) cp -R dist/generic/$(DISTJDOC)/* dist/unix/$(DISTJDOC) cd dist/unix; \ $(TAR) cf $(DISTJDOC).tar $(DISTJDOC); \ $(GZIP) $(DISTJDOC).tar .PHONY: dist-winall dist-winall: dist-genericall mkdir -p dist/win/$(DISTALL) cp -R dist/generic/$(DISTALL)/* dist/win/$(DISTALL) cp startscripts/win/*.bat dist/win/$(DISTALL) cd dist/win; \ $(ZIP) $(DISTALL).zip `find $(DISTALL)` > /dev/null .PHONY: dist-winbin dist-winbin: dist-genericbin mkdir -p dist/win/$(DISTBIN) cp -R dist/generic/$(DISTBIN)/* dist/win/$(DISTBIN) cp startscripts/win/*.bat dist/win/$(DISTBIN) cd dist/win; \ $(ZIP) $(DISTBIN).zip `find $(DISTBIN)` > /dev/null .PHONY: dist-winsrc dist-winsrc: dist-genericsrc mkdir -p dist/win/$(DISTSRC) cp -R dist/generic/$(DISTSRC)/* dist/win/$(DISTSRC) cd dist/win; \ $(ZIP) $(DISTSRC).zip `find $(DISTSRC)` > /dev/null .PHONY: dist-winjavadoc dist-winjavadoc: dist-genericjavadoc mkdir -p dist/win/$(DISTJDOC) cp -R dist/generic/$(DISTJDOC)/* dist/win/$(DISTJDOC) cd dist/win; \ $(ZIP) $(DISTJDOC).zip `find $(DISTJDOC)` > /dev/null .PHONY: clean clean: rm -f core *~ rm -rf $(CLASSPATH) lib dist javadoc