OBJS = ast.cmo parser.cmo scanner.cmo semantic_check.cmo code_gen.cmo vc.cmo 


# Choose one
YACC = ocamlyacc
# YACC = menhir --explain

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

vc : $(OBJS)
	ocamlc -o vc -g unix.cma $(OBJS)

.PHONY : test
test : vc testall.sh
	./testall.sh

scanner.ml : scanner.mll
	ocamllex scanner.mll

parser.ml parser.mli : parser.mly
	$(YACC) parser.mly

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

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

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

.PHONY : clean
clean :
	rm -f vc parser.ml parser.mli scanner.ml testall.log \
	*.cmo *.cmi *.out *.diff tests/vc_tests/*.html tests/vc_tests/*.out

# Generated by ocamldep *.ml *.mli
ast.cmo :
ast.cmx :
code_gen.cmo : sast.cmi ast.cmo
code_gen.cmx : sast.cmi ast.cmx
parser.cmo : ast.cmo parser.cmi
parser.cmx : ast.cmx parser.cmi
scanner.cmo : parser.cmi
scanner.cmx : parser.cmx
semantic_check.cmo : sast.cmi ast.cmo
semantic_check.cmx : sast.cmx ast.cmx
vc.cmo : semantic_check.cmo scanner.cmo parser.cmi code_gen.cmo ast.cmo
vc.cmx : semantic_check.cmx scanner.cmx parser.cmx code_gen.cmx ast.cmx
parser.cmi : ast.cmo
sast.cmi : ast.cmo
