# This Makefile requires GNU make. # IF YOU HAVE TROUBLE COMPILING, JUST REMOVE SOME MODULES # AND GREEK CLANGS FIRST. # # Modules # - which modules (directories in ../Modules) to compile in # MODULES=applet mbox joystick test 3d xml extern prez \ textcloud daytimedemo hypergenealogy nile notemap \ benchmark zaubertrank mind \ $(EXTRA) # # Clangs # - which clangs (directories in clang/) to compile in # GREEKCLANG=heraclitus flowing #thales # (flowing's not a GREEK clang really, but make doesn't care...) # # Architectures # - which architecture-dependent code to compile # (directories in arch/) # ARCH= # Default: none - set on command line. # Put here the shell argument line to generate the build tag for the # window title BUILD_TAG := $(shell echo "Custom CVS Build `date -u +%Y-%m-%dT%H:%M:%SZ` by `whoami`@`hostname`") # NOT COMPILED BY DEFAULT: # sound xml applet # It would be nice to use standard paths ! # #JAVA_LIB=/usr/local/java/lib JAVA_DOC=/usr/local/java/docs/api JAVADOCOPTS=-use -version -author -windowtitle "GZigZag Java API" TEMP=/tmp ZOB:=$(wildcard *.zob) $(wildcard */*.zob) \ $(foreach module,$(MODULES),$(wildcard ../Modules/$(module)/*.zob)) \ $(foreach clang,$(GREEKCLANG),$(wildcard clang/$(clang)/*.zob) $(wildcard clang/$(clang)/*/*.zob)) \ $(foreach arch,$(ARCH),$(wildcard arch/$(arch)/*.zob)) ifeq ($(findstring ztp, $(MODULES)),ztp) ZOB += $(wildcard ../Modules/ztp/*/*.zob) endif AUTOGENSRC := clang/ZZClangOps.java $(ZOB:.zob=.java) storage/Recs.java AUTOGENERATED := $(AUTOGENSRC) %.java: %.zob zob2java.pl ; perl zob2java.pl $< $@ # Can't add ZZClangOps since javac complains of doubly defined class... # maybe should use uniq? SRC0:=$(wildcard *.java) $(wildcard media/*.java) $(wildcard clang/*.java) \ $(wildcard storage/*.java) $(wildcard errors/*.java) \ $(wildcard flob/*.java) $(wildcard transform/*.java) \ $(wildcard part/*.java) \ $(foreach module,$(MODULES),$(wildcard ../Modules/$(module)/*.java)) \ $(foreach clang,$(GREEKCLANG),$(wildcard clang/$(clang)/*.java) $(wildcard clang/$(clang)/*/*.java)) \ $(foreach arch,$(ARCH),$(wildcard arch/$(arch)/*.java)) \ $(AUTOGENSRC) ifeq ($(findstring ztp, $(MODULES)),ztp) SRC0 += ../Modules/ztp/*/*.java endif SRC:=$(shell echo $(SRC0) | perl -pe 's/\s+/\n/g' - | sort | uniq | tee /tmp/foo) jikes := $(shell which jikes) # DEBUG=-g ifeq (,$(JAVAC)) ifneq (,$(jikes)) JAVAC=jikes +P else JAVAC=javac endif endif JAVANCSS=/BIG/javancss9.24/javancss archcompile = set -e; for d in "$(ARCH)"; do if [ -e arch/$(ARCH)/arch.mk ] ; then $(MAKE) -f arch/$(ARCH)/arch.mk; fi; done archclean = set -e; for d in "$(ARCH)"; do if [ -e arch/$(ARCH)/arch.mk ] ; then $(MAKE) -f arch/$(ARCH)/arch.mk clean; fi; done # all must compile everywhere all: $(SRC) @echo "*** NOTE: YOU MAY HAVE TO RUN 'make' MORE THAN ONE TIME" @echo "*** TO GET EVERYTHING TO COMPILE DUE TO DEPENDENCIES" rm -f BuildInfo.java sed 's/@@@@@/$(BUILD_TAG)/' BuildInfo.java.in > BuildInfo.java.new && mv BuildInfo.java.new BuildInfo.java $(JAVAC) -deprecation $(DEBUG) -d . BuildInfo.java $(JAVAC) -deprecation $(DEBUG) -d . $(SRC) $(archcompile) # If you want to try out the opengl stuff opengl: @echo "********************************************" @echo "* requires gltt !! *" @echo "* add ../Modules/openGL to LD_LIBRARY_PATH *" @echo "********************************************" (cd ../Modules/openGL; make) $(JAVAC) -deprecation $(DEBUG) -d . ../Modules/openGL/*.java doc:: $(SRC) sh ./make-src-tree.sh $(TEMP)/zzsrc rm -Rf doc mkdir doc javadoc $(JAVADOCOPTS) -d doc -sourcepath $(TEMP)/zzsrc org.gzigzag \ org.gzigzag.clang \ org.gzigzag.module rm -Rf $(TEMP)/zzsrc zobdoc:: $(SRC) sh ./make-src-tree.sh $(TEMP)/zzsrc rm -Rf zobdoc mkdir zobdoc javadoc -doclet org.gzigzag.ZobDoc -d zobdoc \ -sourcepath $(TEMP)/zzsrc \ org.gzigzag org.gzigzag.clang org.gzigzag.module rm -Rf $(TEMP)/zzsrc # perl -pi.bak -e's||"".`cat Package.html`|e' doc/Package-org.gzigzag.html MODULESUPPORT=no JARMODULES=applet mbox joystick test 3d xml extern prez \ textcloud daytimedemo hypergenealogy nile notemap zaubertrank mind JARARCHES= JARNAME=gzigzag.jar jar: buildir=$(JARNAME).build jar: cd .. && ./makedist.sh Java/$(buildir) -$(MAKE) -C $(buildir)/Java ARCH="$(JARARCHES)" MODULES="$(JARMODULES)" all -$(MAKE) -C $(buildir)/Java MODULES="$(JARMODULES)" allRCH="$(JARARCHES)" -$(MAKE) -C $(buildir)/Java ARCH="$(JARARCHES)" MODULES="$(JARMODULES)" all $(MAKE) -C $(buildir)/Java ARCH="$(JARARCHES)" MODULES="$(JARMODULES)" all echo 'Main-Class: org.gzigzag.Main' > $(buildir)/Java/manifest set -e ; if [ "$(MODULESUPPORT)" != "no" ] ; \ then \ (cd $(buildir)/Java && jar -xvf $(MODULESUPPORT) gnu org) ;\ fi cd $(buildir)/Java && cp ../LICENSE.lgpl ../LICENSE.xpl . cd $(buildir)/Java && cp ../README README.source cd $(buildir)/Java && jar cvfm $(JARNAME) manifest fi foo xanadu gnu org README README.source LICENSE* mv $(buildir)/Java/$(JARNAME) . rm -rf $(buildir) mvdoc: doc scp -r doc/* tjl@gzigzag.sourceforge.net:/home/groups/gzigzag/www/javadoc/ %.java: %.pl perl $< $@ clean: rm -rf fi foo xanadu org rm -f $(AUTOGENERATED) rm -f BuildInfo.java clang/ZZClangOps.java $(archclean) tags: $(SRC) ctags $(SRC) CVS2CL=cvs2cl ChangeLog:: $(MAKE) -C .. ChangeLog ncss:: $(SRC) $(JAVANCSS) -function $(SRC) | perl mungencss.pl | \ sort -rnk3 -k1 >ncss-ccn sort -rnk2 -k1 ncss-ncss sort -rnk4 -k1 ncss-jvdc # $(JAVANCSS) -all $(SRC) >ncss