stems=TrivialClass Effects Factorial ArrayAccess LinearSearch Stck Fib LinkedList Sum BinarySearch Primes TestEq BinaryTree QuickSort Euler Graph While Newton ShortCutAnd fail=ArrayBounds ## these register settings are standard # gcc=gcc -fcall-saved-ebx \ # -fcall-saved-edi \ # -fcall-saved-esi \ # -fcall-used-eax \ # -fcall-used-ecx \ # -fcall-used-edx # generate debug info gcc=gcc # -g butlastline=head --lines=-1 .PRECIOUS : %.blk.intm %.raw.s %.s %.bin %.class %.bin.out all : $(foreach stem,$(stems),$(stem)_ok) # all-out : $(foreach stem,$(stems),$(stem).out) $(foreach stem,$(stems),$(stem).intm.out) $(foreach stem,$(stems),$(stem).386.out) # individual tests graph : Graph.tmp risc386 Graph.raw.s bins : BinarySearch.tmp risc386 BinarySearch.raw.s array : ArrayAccess.tmp risc386 ArrayAccess.raw.s while : While.tmp risc386 While.raw.s triv : TrivialClass.tmp risc386 TrivialClass.raw.s # Graph viz. %.ps : %.dot dot -T ps -o $@ $< # test suite # %.tmp : %.blk.intm %.raw.s # run $*.blk.intm | $(butlastline) | cmp $*.intm.out - # risc386 $*.raw.s 2> /dev/null | cmp $*.386.out - # touch $@ %_ok : %.java.out %.blk.intm %.intm.out %.raw.s %.386.out %.s %.bin mjc risc386 %.spill.out %.bin.out touch $@ %.bin.out : %.bin %.java.out $< > $@ 2> /dev/null cmp $@ $*.java.out %.intm.out : %.blk.intm %.java.out run $< | $(butlastline) > $@ echo "Messages:" > $*.result_java cat $*.java.out >> $*.result_java head --lines=-1 $@ | cut -d " " -f 2 > $*.result_intm cmp $*.result_intm $*.result_java rm $*.result_intm $*.result_java %.spill.out : %.s %.java.out risc386 $< > $@ 2> /dev/null cmp $@ $*.java.out %.386.out : %.raw.s %.java.out risc386 $< > $@ 2> /dev/null cmp $@ $*.java.out %.java.out : %.class java $* > $@ %.s %.raw.s %.blk.intm : %.java mjc muHwI risc386 mjc $< %.class : %.java javac $< # Executables %.bin : runtime.c %.s $(gcc) -o $@ $^ clean : -rm *.tmp *.out *.result_java *.result_intm *_ok *.bin # EOF