JAVAC = javac sources = $(shell find src -name '*.java') classes = $(sources:src/%.java=build/%.class) runtime = $(classes) yhc/.build YHC_BASE_PATH = $(shell pwd)/yhc/inst export YHC_BASE_PATH all: $(runtime) $(classes): $(sources) classgen/.build @mkdir -p build $(JAVAC) -d build -classpath classgen/build $(sources) tests/%.hbc: tests/%.hs yhc/.build make -C tests $*.hbc tests/%.hbc: tests/%.lhs yhc/.build make -C tests $*.hbc test: $(runtime) tests/Sudoku.hbc cd tests && java -cp ../build com.brian_web.yhcjvm.Interpreter Sudoku main simpletest: $(runtime) tests/Main.hbc cd tests && java -cp ../build com.brian_web.yhcjvm.Interpreter Main x speedtest: $(classes) $(patsubst %,tests/%.hbc,Sudoku LambdaCalculus) cd tests && bash -c "time java -cp ../build com.brian_web.yhcjvm.Interpreter Sudoku" cd tests && bash -c "time java -cp ../build com.brian_web.yhcjvm.Interpreter LambdaCalculus" speedcompare: $(classes) $(patsubst %,tests/%.hbc,Sudoku LambdaCalculus) cd tests && bash -c "time yhi Sudoku" cd tests && bash -c "time java -cp ../build com.brian_web.yhcjvm.Interpreter Sudoku" cd tests && bash -c "time yhi LambdaCalculus" cd tests && bash -c "time java -cp ../build com.brian_web.yhcjvm.Interpreter LambdaCalculus" yhcjvm.jar: $(runtime) echo -e "Manifest-Version: 1.0\nMain-Class: com.brian_web.yhcjvm.Interpreter\n" > .manifest cd build && jar cfm ../$@ ../.manifest \ $(classes:build/%.class=%*.class) \ com/brian_web/yhcjvm/prelude yhc/.build: if [ ! -d yhc ]; then darcs get --repo=yhc http://darcs.brianweb.net/yhc/; fi if test -d yhc/src/cpphs-1.0; then make -C yhc/src/cpphs-1.0; fi make -C yhc/src/compiler98 make -C yhc/src/prelude test -x yhc/inst/bin/yhc test -f yhc/inst/prelude/Prelude.hbc rm -f build/com/brian_web/yhcjvm/prelude ln -s `pwd`/yhc/inst/prelude build/com/brian_web/yhcjvm/prelude touch $@ classgen/.build: if [ ! -d classgen ]; then darcs get --repo=classgen http://darcs.brianweb.net/classgen/; fi make -C classgen touch $@ fixme: @egrep -ri '// *(FEATURE|FIXME)' src || true push: yhcjvm.jar darcs push --repo=yhc charger.brianweb.net:/home/darcs/yhc darcs push charger.brianweb.net:/home/darcs/yhcjvm scp yhcjvm.jar charger.brianweb.net:/home/darcs/yhcjvm clean: rm -rf build/*