Show Makefile syntax highlighted
# This Makefile requires GNU make.
# all must compile everywhere
all: compile rmi test
alltests: test batchtest-junit slow test-
botcompile: compile rmi
bottest: test
CVS ?= cvs
VERSION=snapshot-`date -u +%Y%m%d`
NOTEST=true
RMIC ?= rmic
dist: DISTDIR=gzz-$(VERSION)
dist:
rm -Rf $(DISTDIR)
mkdir $(DISTDIR)
$(NOTEST) || $(MAKE) test slow
$(MAKE) clean
$(MAKE) ready_to_compile doc
find . ! -type d|egrep -v '^\./(basalt|lava|C\+\+|Perl|Java|Modules)|/CVS/|#|~|\$$py\.class$$|\./gzz.*(jar|tar.gz)$$' | \
grep -vF "./$(DISTDIR)/"|xargs --replace cp --parents {} $(DISTDIR)
mkdir $(DISTDIR)/depends
cp -a $(GZZ_DEPENDS)/* $(DISTDIR)/depends
rm -R $(DISTDIR)/depends/CVS
echo $(VERSION) >$(DISTDIR)/VERSION
tar cf $(DISTDIR).tar $(DISTDIR)
gzip -9vf $(DISTDIR).tar
rm -Rf $(DISTDIR)
jar: jardir=$(JARNAME).build
jar :
rm -Rf $(jardir)
mkdir $(jardir)
$(MAKE) compile
$(NOTEST) || $(MAKE) test slow
echo 'Main-Class: $(mainclass)' > $(jardir)/manifest
(cd $(jardir) && for jar in pythonlib yaml jythonlib jython; do \
jar xvf ../$(GZZ_DEPENDS)/$$jar.jar ;\
done)
cp -a $(CLASSDIR)/* $(jardir)
find gzz -name "*.py" | while read file ; do \
mkdir -p $(jardir)/`dirname $$file` && cp $$file $(jardir)/$$file;\
done
cp Gzz.py $(jardir)
cp LICENSE.lgpl LICENSE.xpl $(jardir)
cp $(GZZ_DEPENDS)/{jython,python,yaml}.license $(jardir)
cp README $(jardir)
(cd $(jardir) && jar cvfm $(JARNAME) manifest *)
mv $(jardir)/$(JARNAME) .
rm -rf $(jardir)
CVSTAG=none
official-release : VERSION=$(shell echo $(CVSTAG) \
| sed -e 's/^rel_//' -e 's/_/./g')
official-release : gzzdir=gzz-$(VERSION)-cvs
official-release : dependsdir=depends-$(VERSION)-cvs
official-release :
rm -Rf $(gzzdir) $(dependsdir)
$(CVS) -z3 -d$(shell cat CVS/Root) checkout -r $(CVSTAG) \
-d $(gzzdir) gzz
$(CVS) -z3 -d$(shell cat $(GZZ_DEPENDS)/CVS/Root) checkout \
-r $(CVSTAG) \
-d $(dependsdir) depends
$(MAKE) -C $(gzzdir) VERSION=$(VERSION) GZZ_DEPENDS=../$(dependsdir) \
jar
mv $(gzzdir)/gzz-$(VERSION).jar .
$(MAKE) -C $(gzzdir) VERSION=$(VERSION) GZZ_DEPENDS=../$(dependsdir) \
dist
mv $(gzzdir)/gzz-$(VERSION).tar.gz .
rm -Rf $(gzzdir) $(dependsdir)
CVS2CL=cvs2cl
CVS_RSH=ssh
ChangeLog ::
CVS_RSH=$(CVS_RSH) $(CVS2CL) -U changelog-authors -l -d'2001-01-01\<now' -W 1200 -b --gmt -w --ignore ChangeLog
.PHONY : ChangeLog Manifest dist official-release
copyrighted:
python metacode/copyrighter.py "Gzz"
# 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`")
# For jar builds:
JARNAME=gzz-$(VERSION).jar
# Location of the depends/ CVS module:
ifeq (,$(GZZ_DEPENDS))
GZZ_DEPENDS=$(wildcard depends)
ifeq (,$(GZZ_DEPENDS))
GZZ_DEPENDS=../depends
endif
endif
CLASSDIR=CLASSES/
CLASSPATH =$(CLASSDIR):$(GZZ_DEPENDS)/jena.jar:$(GZZ_DEPENDS)/icu4j.jar:$(GZZ_DEPENDS)/xerces.jar:$(GZZ_DEPENDS)/HTTPClient.zip:$(GZZ_DEPENDS)/junit.jar:$(GZZ_DEPENDS)/jython.jar:$(GZZ_DEPENDS)/collections-kaffe.jar:$(shell echo $$CLASSPATH)
export CLASSPATH
Z_DIR=../Z/
Z_PRIVATE=../Z-private/
MEDIASERVER=http://himalia.it.jyu.fi/ms
POOL=gzz-base
PRIVATEPOOL=gzz-jyu-private
mainclass = gzz.control.Main
httpsync:
mkdir -p $(Z_DIR)
$(JAVA) gzz.client.Synch -dir $(Z_DIR) -url $(MEDIASERVER)/$(POOL)
sync:
mkdir -p $(Z_DIR)
./sync-remote-private.sh $(Z_DIR) $(POOL)
discard-pool:
find $(Z_DIR) -name 'b_*'|xargs rm -f
find $(Z_DIR) -name 'ps_*'|xargs rm -f
get-ms: discard-pool sync
sync-private: Z_DIR=$(Z_PRIVATE)
sync-private: POOL=$(PRIVATEPOOL)
sync-private: sync
get-ms-private: Z_DIR=$(Z_PRIVATE)
get-ms-private: POOL=$(PRIVATEPOOL)
get-ms-private: get-ms
# -taglet gzz.util.JythonDoclet
JAVADOCOPTS=-use -version -author -windowtitle "GZigZag Java API"
TEMP=/tmp
%.java: %.zob zob2java.pl ; perl zob2java.pl $< $@
TESTS=$(wildcard test/*.java test/*/*.java test/*/*/*.java test/*/*/*/*.java \
lava/test/*.java lava/test/*/*.java lava/test/*/*/*.java lava/test/*/*/*/*.java \
)
# basalt/test/*.java basalt/test/*/*.java basalt/test/*/*/*.java basalt/test/*/*/*/*.java
GENERATEDBASALT=basalt/gzz/impl/Merge1.java basalt/gzz/impl/clasm/ClasmPrimitiveSet1.java basalt/gzz/impl/PartialOrder.java basalt/gzz/impl/ExternalEditor.java basalt/gzz/impl/PlainVStreamDim.java
GENERATED=gzz/mediaserver/MediaTypes.java gzz/gfx/gl/GLRen.java
gzz/gfx/gl/GLRen.java: gfx/librenderables/*
(cd gfx/librenderables; $(MAKE) -f Makefile-javaonly ../../gzz/gfx/gl/GLRen.java)
basalt/gzz/impl/Merge1.java: basalt/gzz/impl/Merge1 gzz/impl/genmerge.pl
perl gzz/impl/genmerge.pl basalt/gzz/impl/Merge1
basalt/gzz/impl/PartialOrder.java: basalt/gzz/impl/PartialOrder gzz/impl/genmerge.pl
perl gzz/impl/genmerge.pl basalt/gzz/impl/PartialOrder
basalt/gzz/impl/ExternalEditor.java: basalt/gzz/impl/ExternalEditor gzz/impl/genmerge.pl
perl gzz/impl/genmerge.pl basalt/gzz/impl/ExternalEditor
basalt/gzz/impl/PlainVStreamDim.java: basalt/gzz/impl/PlainVStreamDim.ly basalt/gzz/impl/PlainVStreamDim-trees-nu.ly
python2.2 $(GZZ_DEPENDS)/ly.py basalt/gzz/impl/PlainVStreamDim.ly basalt/gzz/impl/PlainVStreamDim-trees-nu.ly
basalt/gzz/impl/clasm/ClasmPrimitiveSet1.java: basalt/gzz/impl/clasm/clasm-primitives.ly basalt/gzz/impl/clasm/clasm-primitives-internals.ly
python2.2 $(GZZ_DEPENDS)/ly.py basalt/gzz/impl/clasm/*.ly
# find . -name '*.java' | xargs grep -h "^package" | sort | uniq | sed 's/package //;s/;//;' | grep -v java.tex
DOCPKGS=gzz.view gzz.view.buoy gzz.client gzz.client.awt gzz.client.gl gzz.gfx.gl gzz.impl gzz.diff gzz.mediaserver.storage gzz.mediaserver gzz.util gzz.vob gzz.vob.buoy gzz gzz.media gzz.fuzzy gzz.media.impl gzz.index gzz.index.impl gzz.zzutil gzz.slices gzz.control
PP=gzz/modules/pp/*.java gzz/modules/pp/vob/*.java
BASALTSRC:= $(wildcard basalt/gzz/*.java basalt/gzz/impl/*.java)
# Tempfile
tmpfile := $(shell mktemp /tmp/fileXXXXXX)
foo := $(shell echo 1>&2 "Tempfile is $(tmpfile)")
# jikes := $(shell which jikes)
# Disable for now, since on debian jikes is at a bad version
jikes :=
# DEBUG=-g
ifeq (,$(JAVAC))
ifneq (,$(jikes))
JAVAC=jikes +P
else
JAVAC=javac
endif
endif
ifeq (,$(JAVA))
JAVA=java
endif
ifneq (,$(EDITOR))
EDITOR_OPTION=-Duser.editor=$(EDITOR)
else
EDITOR_OPTION=
endif
JAVANCSS=/BIG/javancss18.38/bin/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
rmi:
$(RMIC) -d $(CLASSDIR) gzz.modules.pp.PPActionsImpl gzz.impl.mirror.MasterImpl gzz.impl.mirror.MasterImpl.TapImpl
ready_to_compile: $(GZZ_DEPENDS)/jython.jar $(GZZ_DEPENDS)/jythonlib.jar $(GENERATED)
RAWSRC = `find gzz/ -name "*.java"` `find test/gzz/ -name "*.java"`
compile: ready_to_compile
mkdir -p $(CLASSDIR)
echo $$CLASSPATH
# $(JAVAC) -deprecation $(DEBUG) -d $(CLASSDIR) BuildInfo.java
# fix circular dependency problem in clean builds
# -deprecation
$(JAVAC) $(DEBUG) -d $(CLASSDIR) $(RAWSRC)
$(archcompile)
qc: ready_to_compile
perl changedJava.pl $(RAWSRC) | xargs $(JAVAC) $(DEBUG) -d $(CLASSDIR)
indyjar:
mkdir independent
cp -r $(CLASSDIR)/* independent/
#unzip $(GZZ_DEPENDS)/junit.jar -d independent/
unzip $(GZZ_DEPENDS)/HTTPClient.zip -d independent/
echo 'Main-Class: gzz.client.Run' > independent/manifest
jar cfm gzz-independent.jar independent/manifest -C independent/ .
rm -r independent
independent: clean indyjar
slow:
$(JAVA) -Dzdir=$(Z_DIR) -Dgzigzag.cellstr=idtext junit.textui.TestRunner TestSlow
awtslow:
$(JAVA) -Dzdir=$(Z_DIR) junit.awtui.TestRunner TestSlow
.PHONY: BuildInfo.java
BuildInfo.java :
@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
gzz/mediaserver/MediaTypes.java: gzz/mediaserver/make-mt.pl gzz/mediaserver/mime.types
cd gzz/mediaserver && ./make-mt.pl
# HIGHLY EXPERIMENTAL!!!
gcj :
gcj-3.0 --main=$(mainclass) -o gzigzag `find $(CLASSDIR) -name \*.class`
gcj-src:
gcj-3.0 --main=(mainclass) -o gzigzag $(SRC)
# doc: pegs javadoc documl docxx
doc: javadoc docxx documl
javadoc: ready_to_compile
find . -name '*.class' | xargs rm -f # Don't let javadoc see these
rm -Rf doc/javadoc
mkdir -p doc/javadoc
javadoc $(JAVADOCOPTS) -d doc/javadoc -sourcepath . $(DOCPKGS)
documl:
# $(MAKE) -C doc/uml
# $(MAKE) -C doc/uml/gl
$(JYTHON) metacode/umldoc.py doc/ doc/gl/ doc/pp/
$(JYTHON) metacode/umlpegboard.py
#RST could be a single rst file or a directory, when
#all the .rst-files in directory is compiled (non-recursive)
rst:
$(JYTHON) metacode/umldoc.py $(RST)
#keeps jython running for quick recompiling:
#after each cycle prompts a key for continue
rst-loop:
$(JYTHON) metacode/umldoc.py loop $(RST)
docxx:
doc++ -a --before-group --before-class --no-java-graphs --trivial-graphs -H -F -d doc/docxx -u `find gfx -name '*.hxx'`
pegs:
$(JYTHON) metacode/pegboard.py
lavadoc::
javadoc $(JAVADOCOPTS) -d lavadoc -sourcepath ./:lava/ gzz gzz.impl gzz.impl.errors
diadoc:: diadoc-jd diadoc-py
diadoc-jd: GrepDoclet
javadoc -sourcepath .:lava -doclet gzz.util.GrepDoclet gzz.client gzz.impl gzz >foo
diadoc2-jd: JythonDoclet
javadoc -sourcepath .:lava -doclet gzz.util.JythonDoclet gzz
diadoc-py:
python2.2 gzz/util/diadoc.py <foo
mpost leo4.mp
mpost screen.mp
mpost zzstruct.mp
GrepDoclet:
mkdir -p $(CLASSDIR)
echo $$CLASSPATH
$(JAVAC) $(DEBUG) -d $(CLASSDIR) metacode/gzz/util/GrepDoclet.java
JythonDoclet:
mkdir -p $(CLASSDIR)
echo $$CLASSPATH
$(JAVAC) $(DEBUG) -d $(CLASSDIR) metacode/gzz/util/JythonDoclet.java
clean:
$(RM) -r $(CLASSDIR)
$(RM) $(GENERATED)
$(RM) gzz-independent.jar
$(RM) -r independent/
@echo "Removing everything found in .cvsignore's"
find . -name ".cvsignore"|while read ign; do (cd `dirname $$ign` && cat .cvsignore|while read files; do rm -Rf $$files; done); done
find . -name "*.so" | xargs rm -f
find . -name "*.o" | xargs rm -f
find . -name "*.class" | xargs rm -f
tags::
ctags -R
TAGS::
if [ -f TAGS ]; then rm TAGS; fi
find gzz gfx -type d -name CVS -exec sed -e '/^[^/]/d' -e 's:^\(/[^/]*\).*:{}\1:' -e 's:/CVS/:/:' {}/Entries \;|xargs etags --append
CVS2CL=cvs2cl
ChangeLog::
$(MAKE) -C .. ChangeLog
ncss:: $(SRC)
$(JAVANCSS) -function $(SRC) | sort -rnk3 -k1 >ncss-ccn
# perl mungencss.pl | \
sort -rnk2 -k1 <ncss-ccn >ncss-ncss
sort -rnk4 -k1 <ncss-ccn >ncss-jvdc
# $(JAVANCSS) -all $(SRC) >ncss
# Please note that JUnit tests are deprecated and should be converted into
# tests written in python. See targets "test" and "test".
TESTCLASS=gzz.Test
TESTRUNNER=junit.awtui.TestRunner
TESTCOMMAND=$(JAVA) -Dzdir=$(Z_DIR) $(TESTRUNNER)
test-junit::
$(TESTCOMMAND) $(TESTCLASS)
batchtest-junit::
$(JAVA) -Dzdir=$(Z_DIR) junit.textui.TestRunner $(TESTCLASS)
JVMFLAGS= -Xms64M -Xmx128M # -Xincgc
ifeq (,$(JYTHONPATH))
JYTHONPATH=$(GZZ_DEPENDS)/jythonlib.jar:$(GZZ_DEPENDS)/pythonlib.jar:$(GZZ_DEPENDS)/yaml.jar:$(GZZ_DEPENDS)/docutils.jar
endif
ifeq (,$(JYTHON))
# python.verbose can be: "error", "warning", "message", "comment", "debug"
JYTHON=$(JAVA) $(JVMFLAGS) -Dpython.path=$(JYTHONPATH) -Dpython.verbose=message $(EDITOR_OPTION) org.python.util.jython
endif
GLLIB=LD_LIBRARY_PATH=/usr/lib:gfx
# Generate a single urn-5 identifier
urn:
$(JAVA) gzz.util.URN5Namespace
runjython:
$(GLLIB) $(JYTHON) $(DBG)
ifeq (,$(Z))
Z=-t
endif
test:: # Use: make test TEST=test/gzz/vob/vobmatcher.test, to run a single test.
$(GLLIB) $(JYTHON) test/testutil.py -f GL $(DBG) $(TEST)
test-gl::
$(GLLIB) $(JYTHON) test/testutil.py -Dgzzclient=gl -f AWT $(DBG) jni $(TEST)
testbugs::
$(GLLIB) $(JYTHON) test/testutil.py -f \* $(DBG) $(TEST)
testbugs-gl::
$(GLLIB) $(JYTHON) test/testutil.py -Dgzzclient=gl -f \* $(DBG) jni $(TEST)
run:
$(JYTHON) Gzz.py $(DBG) -Dgzzclient=awt $(Z)
rungl:
$(GLLIB) $(JYTHON) Gzz.py $(DBG) -Dgzzclient=gl $(Z)
runctalk:
$(GLLIB) $(JYTHON) Documentation/Manuscripts/ProcText/CTalk/CTalk.py
testclient::
$(JYTHON) Gzz.py -t --test-client -Dgzzclient=awt
testclient-gl::
$(GLLIB) $(JYTHON) Gzz.py -t --test-client -Dgzzclient=gl
jython:
$(JYTHON) $(DBG)
GLDEMO=gfx/util/demo.py $(DBG)
runpaper:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx.demo.paper
runtestto:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/testtimeout.py
runpsyko:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/psyko.py
runpsyko2:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/psyko2.py
runcolor:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/color/colors.py
runtexturelab:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/texturelab.py
runblob:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/blob/Obj.py
runfillets:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx.demo.fillet
runglinfo:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/opengl/glinfo.py
runstencil:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/opengl/stencil.py
runirregu:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/irregularframe.py
runirregu2:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/irregular2.py
runbuoydev:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/buoydev.py
runfisheye:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/fisheye.py
runpaperbasis:
$(GLLIB) $(JYTHON) $(GLDEMO) gfx/demo/paperbasis.py
DEMOMOD = gfx/demo/$(DEMO).py
rundemo:
$(GLLIB) $(JYTHON) $(GLDEMO) $(DEMOMOD)
runanim:
$(GLLIB) $(JYTHON) gfx/util/anim.py $(DBG) gfx/anim/$(ANIM).py
runppserver:
$(JYTHON) gzz/modules/pp/ppserver.py
PPSERVERHOST=127.0.0.1
runppclient:
$(GLLIB) $(JAVA) -Dgzzclient=gl $(JVMFLAGS) org.python.util.jython gzz/modules/pp/ppclient.py $(PPSERVERHOST)
runpplocal:
$(GLLIB) $(JYTHON) gzz/modules/pp/localpp.py $(DBG)
runpptest:
$(GLLIB) $(JYTHON) $(GLDEMO) gzz/modules/pp/demotest.py $(DBG)
gl: compilegl rmi test-gl
compilegl: compile
$(MAKE) -C gfx all
gzzgl: # Only for people who know what they're doing
$(MAKE) -C gfx all
DATE:=$(shell date '+%Y%m%d%H%M%S')
PPDIR:=pp-$(DATE)
packagepp: gl
rm -rf $(PPDIR)
mkdir $(PPDIR)
cp -a CLASSES/* $(PPDIR)
cp gzz/gfx/gl/libGZZGL.so $(PPDIR)
cp gzz/modules/pp/glpp*.sh $(PPDIR)
cp gzz/modules/pp/*.py $(PPDIR)
cp ../depends/jython.jar $(PPDIR)
# Jython libraries not included! XXX
mkdir -p $(PPDIR)/gzz/gfx/gl
cp -a gzz/gfx/gl/a010013l.pfb $(PPDIR)/gzz/gfx/gl
tar cvf - $(PPDIR) | gzip -9 > $(PPDIR).tar.gz
rm -rf $(PPDIR)
perls: $(GENERATED)
lava:: compile-lava test-lava
compile-lava:
$(JAVAC) $(DEBUG) -d $(CLASSDIR) `find lava/gzz/ -name "*.java" ! -path "lava/gzz/modules/gispmap/*"` `find lava/test/gzz/ -name "*.java" ! -path "lava/test/gzz/modules/gispmap/*"`
test-lava:
$(GLLIB) $(JYTHON) test/testutil.py $(DBG) `find lava/test/gzz/ -name "*.test" ! -path "lava/test/gzz/modules/gispmap/*"`
test-lava-junit:
$(JAVA) -Dzdir=$(Z_DIR) junit.textui.TestRunner gzz.TestLava
compile-xxx: gzz/gfx/gl/GLRen.java
$(JAVAC) $(DEBUG) -d $(CLASSDIR) gzz/client/*.java gzz/gfx/gl/GLRen.java gzz/client/gl/*.java
See more files for this project here