X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=Makefile;h=bf68386d1adf11ae1b4407361a463727999f9f09;hb=e9bbf51a0b41aee0b904936c4f1b69ca555d2648;hp=350162140fe924a6b8c0951fe69d81adde416fa8;hpb=f0fc3108b87a593f4e7955ad4d461e3cc653e3e3;p=mate.git diff --git a/Makefile b/Makefile index 3501621..bf68386 100644 --- a/Makefile +++ b/Makefile @@ -4,24 +4,43 @@ JAVAC := javac JAVA_FILES := $(wildcard tests/*.java) CLASS_FILES := $(JAVA_FILES:.java=.class) HS_FILES := $(wildcard Mate/*.hs) +O_FILES = $(shell ls Mate/*.o) $(wildcard ffi/*.o) +PACKAGES_ := bytestring harpy hs-java +PACKAGES := $(addprefix -package ,$(PACKAGES_)) -GHC_OPT := -Wall -O2 -fno-warn-unused-do-bind +GHC_OPT := -Wall -O0 -fno-warn-unused-do-bind +GHC_LD := -optl-Xlinker -optl-x + + +.PHONY: all test clean ghci all: mate $(CLASS_FILES) test: mate $(CLASS_FILES) - ./$< + ./$< tests/Fib.class | grep mainresult + @printf "should be: 0x%08x\n" 0x09de8d6d + ./$< tests/Fac.class | grep mainresult + @printf "should be: 0x%08x\n" 0x58980 + ./$< tests/ArgumentPassing1.class | grep mainresult + @printf "should be: 0x%08x\n" 0x92 + @printf "should be: 0x%08x\n" $$(((0 - 0x1337) & 0xffffffff)) + ./$< tests/DifferentClass1.class | grep mainresult + @printf "should be: 0x%08x\n" 8 + @printf "should be: 0x%08x\n" 13 %.class: %.java $(JAVAC) $< -trap.o mate: Mate.hs trap.c $(HS_FILES) - ghc --make $(GHC_OPT) Mate.hs trap.c -o mate +mate: Mate.hs ffi/trap.c $(HS_FILES) + ghc --make $(GHC_OPT) Mate.hs ffi/trap.c -o $@ $(GHC_LD) clean: - rm -f {Mate/,}*.hi {Mate/,}*.o mate tests/*.class + rm -f {Mate/,}*.hi {Mate/,ffi/,}*.o mate tests/*.class + +ghci: mate + ghci $(PACKAGES) $(O_FILES) Mate.hs $(GHC_LD) -tags: Mate.hs $(HS_FILES) trap.o +tags: mate @# @-fforce-recomp, see @# http://stackoverflow.com/questions/7137414/how-do-i-force-interpretation-in-hint - ghc -fforce-recomp -e :ctags $^ + ghc -fforce-recomp -e :ctags $(PACKAGES) $(HS_FILES) $(O_FILES) Mate.hs