added a prebuilt copy of MIPSApps.class
[org.ibex.core.git] / Makefile.common
1 ###############################################################################
2 # Ibex common Makefile
3 #
4 #    includes boilerplate stuff and inter-project dependency resolution
5 #
6
7 realdefault: default
8
9 ### interproject deps #############################################################
10
11 cmd := find src -name \*.java -exec grep '^import org.ibex.' {} \;
12 cmd +=  | sed 's_import org\.ibex\.\([a-z]*\).*_ repo/\1.ibex.org/\n_'
13 cmd +=  | sort | uniq | (while read A; do test -e $$A || echo $$A; done)
14 $(eval upstream := $(shell $(cmd)))
15
16 repos: $(upstream)
17 repo/: ; mkdir repo
18 repo/%.ibex.org/: repo/
19         test -e $@ && (cd repo/$*.ibex.org; darcs pull -a --verbose http://$*.ibex.org/); true
20         test -e $@ || (cd repo; darcs get --partial --verbose http://$*.ibex.org/); true
21         test -e src/org/ibex/$* || (cd src/org/ibex; ln -sf ../../../repo/$*.ibex.org/src/org/ibex/$*); true
22
23
24 ### cleanup targets ##################################################################
25
26 clean:      ; rm -rf build
27 dist-clean: ; rm -rf build .compile
28
29
30 ### java->class compilation ##########################################################
31
32 javac := javac
33 java_sources := $(shell find src/org/ibex/*/ -name \*.java)
34
35 src/org/ibex/util/Preprocessor.java: repo/util.ibex.org/
36 build/class/org/ibex/util/Preprocessor.class: src/org/ibex/util/Preprocessor.java
37         mkdir -p build/class/
38         $(javac) -d build/class/ $<
39
40 # HACK
41 java_sources_pp := $(filter-out src/org/ibex/net/ssl/RootCerts.java,$(java_sources))
42 compile: .compile
43 .compile: $(java_sources) build/class/org/ibex/util/Preprocessor.class
44         make -s repos
45         java -cp build/class org.ibex.util.Preprocessor $(java_sources_pp)
46         test -e src/org/ibex/net/ssl/RootCerts.java && \
47                 cp src/org/ibex/net/ssl/RootCerts.java build/java/org/ibex/net/ssl/RootCerts.java
48         $(javac) -d build/class $(java_sources:src/%.java=build/java/%.java)
49         touch $@
50
51
52 ### proposing and checkins ##########################################################
53
54 propose-patch:
55         @darcs send --edit-description -o .darcspatch -T patches@xwt.org http://core.ibex.org/
56         @(echo "To: patches@xwt.org";\
57          SUB=`grep -A10000 New.patches .darcspatch | grep '^\\[' | cut -b 2- | tr \\\n , | sed s_,_,\ _g | sed "s_, *\\$$__"`;\
58          echo "Subject: $$SUB";\
59          echo;\
60          cat .darcspatch) | /usr/sbin/sendmail -bm -f $(USER)@xwt.org patches@xwt.org;
61         @rm .darcspatch 
62
63 commit: propose-patch
64         darcs push xwt@xwt.org:/var/www/org/ibex/core/
65
66 pull:;     darcs pull            cd repo; for A in *.ibex.org; do cd $$A; darcs pull http://$$A/; cd ..; done
67 whatsnew:; darcs whatsnew; true; cd repo; for A in *.ibex.org; do echo; echo $$A; cd $$A; darcs whatsnew; cd ..; done
68 record:;   darcs record;         cd repo; for A in *.ibex.org; do echo; echo $$A; cd $$A; darcs record; cd ..; done
69
70
71 ### documentation ##########################################################
72
73 doc/%.pdf: build/class/org/ibex/util/XML.class build/class/org/ibex/doc/Doc.class
74         cd doc/$*; java -cp ../../build/class org.ibex.doc.Doc < $*.xml > $*.tex
75         cd doc/$*; pdflatex $*.tex
76         mv doc/$*/$*.pdf doc/$*.pdf
77         test `uname` == Darwin && open doc/$*.pdf