cardigan_ : cardigan.ml ast.mli parser.mly scanner.mll
	ocamllex scanner.mll
	ocamlyacc parser.mly
	ocamlc -c ast.mli
	ocamlc -c parser.mli
	ocamlc -c scanner.ml
	ocamlc -c parser.ml
	ocamlc -c cardigan.ml
	ocamlc -o cardigan_ parser.cmo scanner.cmo cardigan.cmo	

parser.cmi : ast.cmo

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

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

ast.cmo :
ast.cmx :

.PHONY : clean
clean :
	rm -f cardigan_ parser.ml parser.mli parser.output \
	scanner.ml testall.log *.cmo *.cmi *.out *.diff tests/*.class\
	tests/*.diff tests/*.out tests/Test*.java tests/Fail*.java

.PHONY : test
test :
	./testall


.PHONY : testk
testk :
	./testall -k


.PHONY : all
all : clean cardigan test

.PHONY : allk
allk: clean cardigan testk