Files
gzz-mirror/Java/Makefile
2026-09-14 20:19:29 -04:00

186 lines
5.5 KiB
Makefile

# 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|</h1>|"</h1>".`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-ccn >ncss-ncss
sort -rnk4 -k1 <ncss-ccn >ncss-jvdc
# $(JAVANCSS) -all $(SRC) >ncss