-sources = $(shell find src -name \*.java)
-classes = $(sources:src/%.java=build/%.class)
+i = jar/.org.ibex
+default: $i.core $i.mail
-default: org.ibex.tool.jar
+# dependencies
+$i.util:
+$i.crypto: $i.util
+$i.io: $i.util
+$i.classgen: $i.util jar/bcel.jar
+$i.gcclass: $i.util jar/bcel.jar
+$i.nestedvm: $i.util jar/bcel.jar
+$i.net: $i.util $i.io $i.crypto
+$i.doc: $i.util $i.io
+$i.js: $i.util $i.io $i.net
+$i.jinetd: $i.util $i.io $i.net $i.crypto $i.js
+$i.mail: $i.util $i.io $i.net $i.crypto $i.js $i.jinetd jar/prevayler.jar
+$i.core: $i.util $i.io $i.net $i.crypto $i.js $i.nestedvm
-org.ibex.tool.jar: $(classes)
- @java -cp src:build org.ibex.tool.Compiler -j org.ibex.tool.jar -m org.ibex.tool.Compiler -v src
- @cd src; jar -uf ../org.ibex.tool.jar `find . -name \*.rsc -or -name \*.properties`
+jar/.%: jar/org.ibex.tool.jar
+ @make -s repo/$*
+ @echo "Building $*"
+ @cd repo/$*; java -Djava.ext.dirs=../../jar -jar ../../jar/org.ibex.tool.jar -s 1.5 -t 1.2 -v -w -j $*.jar src
+ @mv repo/$*/$*.jar jar/
+ @touch $@
-$(classes): $(sources)
- @mkdir -p build
- @javac -sourcepath java -d build -source 1.3 -target 1.1 \
- $(sources)
+jar/bcel.jar:
+ @curl http://mirrors.mix5.com/apache/jakarta/bcel/binaries/bcel-5.1.tar.gz | tar -xzf - bcel-5.1/bcel-5.1.jar
+ @mv bcel-5.1/bcel-5.1.jar jar/bcel.jar
+ @rmdir bcel-5.1
+
+jar/prevayler.jar:
+ @curl http://voxel.dl.sourceforge.net/sourceforge/prevayler/prevayler-2.02.005.tar.gz | \
+ tar -xzf - prevayler-2.02.005/prevayler-2.02.005.jar
+ @mv prevayler-2.02.005/prevayler-2.02.005.jar jar/prevayler.jar
+ @rmdir prevayler-2.02.005
+
+repo/%:
+ @test -e $* || (echo "Fetching $*"; \
+ darcs get -q --repo repo/$*- \
+ http://`echo $* | sed 's_\([^.]*\).\([^.]*\).\([^.]*\)_\3.\2.\1_'`; mv repo/$*- repo/$*; true)
-clean:
+jar/org.ibex.tool.jar:
+ @mkdir -p build
+ @mkdir -p jar
+ @echo "Building org.ibex.tool"
+ @javac -sourcepath java -d build -source 1.3 -target 1.1 $(shell find repo/org.ibex.tool/src -name \*.java)
+ @echo "Bootstrapping org.ibex.tool"
+ @java -cp repo/org.ibex.tool/src:build \
+ org.ibex.tool.Compiler -v \
+ -j jar/org.ibex.tool.jar \
+ -m org.ibex.tool.Compiler \
+ repo/org.ibex.tool/src
+ @cd repo/org.ibex.tool/src; jar -uf ../../../jar/org.ibex.tool.jar `find . -name \*.rsc -or -name \*.properties`
+ @echo "Cleaning org.ibex.tool"
@rm -rf build
+