############################################################################### # Ibex common Makefile # # includes boilerplate stuff and inter-project dependency resolution # realdefault: default ### interproject deps ############################################################# cmd := find src -name \*.java -exec grep '^import org.ibex.' {} \; cmd += | sed 's_import org\.ibex\.\([a-z]*\).*_ repo/\1.ibex.org/\n_' cmd += | sort | uniq | (while read A; do test -e $$A || echo $$A; done) $(eval upstream := $(shell $(cmd))) repos: $(upstream) repo/: ; mkdir repo repo/%.ibex.org/: repo/ test -e $@ && (cd repo/$*.ibex.org; darcs pull -a --verbose http://$*.ibex.org/); true test -e $@ || (cd repo; darcs get --partial --verbose http://$*.ibex.org/); true test -e src/org/ibex/$* || (cd src/org/ibex; ln -sf ../../../repo/$*.ibex.org/src/org/ibex/$*); true ### cleanup targets ################################################################## clean: ; rm -rf build dist-clean: ; rm -rf build .compile ### java->class compilation ########################################################## javac := javac java_sources := $(shell find src/org/ibex/*/ -name \*.java) src/org/ibex/util/Preprocessor.java: repo/util.ibex.org/ build/class/org/ibex/util/Preprocessor.class: src/org/ibex/util/Preprocessor.java mkdir -p build/class/ $(javac) -d build/class/ $< compile: .compile .compile: $(java_sources) build/class/org/ibex/util/Preprocessor.class make -s repos java -cp build/class org.ibex.util.Preprocessor $(java_sources) $(javac) -d build/class $(java_sources:src/%.java=build/java/%.java) touch $@ ### proposing and checkins ########################################################## propose-patch: @darcs send --edit-description -o .darcspatch -T patches@xwt.org http://core.ibex.org/ @(echo "To: patches@xwt.org";\ SUB=`grep -A10000 New.patches .darcspatch | grep '^\\[' | cut -b 2- | tr \\\n , | sed s_,_,\ _g | sed "s_, *\\$$__"`;\ echo "Subject: $$SUB";\ echo;\ cat .darcspatch) | /usr/sbin/sendmail -bm -f $(USER)@xwt.org patches@xwt.org; @rm .darcspatch commit: propose-patch darcs push xwt@xwt.org:/var/www/org/ibex/core/ ### documentation ########################################################## doc/%.pdf: build/class/org/ibex/util/XML.class build/class/org/ibex/doc/Doc.class cd doc/$*; java -cp ../../build/class org.ibex.doc.Doc < $*.xml > $*.tex cd doc/$*; pdflatex $*.tex mv doc/$*/$*.pdf doc/$*.pdf test `uname` == Darwin && open doc/$*.pdf