#OBJS = parser.cmo scanner.cmo printer.cmo microc.cmo
OBJS = parser.cmo scanner.cmo walker.cmo javaprinter.cmo matlip.cmo 

TESTS = \
arith1 \
arith2 \
fib \
for1 \
func1 \
gcd \
global1 \
hello \
if1 \
if2 \
if3 \
if4 \
ops1 \
var1 \
while1

TARFILES = Makefile myshell.sh scanner.mll parser.mly \
	ast.mli walker.ml matlip.ml javaprinter.ml\
	$(TESTS:%=tests/test-%.mc) \
	$(TESTS:%=tests/test-%.out)

#TARFILES = Makefile testall.sh scanner.mll parser.mly \
#	ast.mli printJava.ml microc.ml \
#	$(TESTS:%=tests/test-%.mc) \
#	$(TESTS:%=tests/test-%.out)

matlip : $(OBJS)
	ocamlc -o matlip $(OBJS)

.PHONY : test
test : matlip myshell.sh
	./myshell.sh

scanner.ml : scanner.mll
	ocamllex scanner.mll

parser.ml parser.mli : parser.mly
	ocamlyacc parser.mly

%.cmo : %.ml
	ocamlc -c $<

%.cmi : %.mli
	ocamlc -c $<

microc.tar.gz : $(TARFILES)
	cd .. && tar czf microc/microc.tar.gz $(TARFILES:%=microc/%)

.PHONY : clean
clean :
	rm -f matlip parser.ml parser.mli scanner.ml matlip-test.log *.cmo *.cmi *.class Matlip.java

# Generated by ocamldep *.ml *.mli
matlip.cmo: scanner.cmo parser.cmi 
matlip.cmx: scanner.cmx parser.cmx 
parser.cmo: ast.cmi parser.cmi 
parser.cmx: ast.cmi parser.cmi 
#printer.cmo: ast.cmi 
#printer.cmx: ast.cmi 
scanner.cmo: parser.cmi 
scanner.cmx: parser.cmx 
parser.cmi: ast.cmi 
