OBJS = Types.cmo ast.cmo sast.cmo asttosast.cmo parser.cmo scanner.cmo bytecode.cmo compile.cmo execute.cmo toplevel.cmo

TARFILES = scanner.mll parser.mly \
	ast.ml bytecode.ml compile.ml execute.ml toplevel.ml

toplevel : $(OBJS)
	ocamlc -g -o toplevel $(OBJS)

scanner.ml : scanner.mll
	ocamllex scanner.mll

parser.ml: parser.mli
	ocamlc -c parser.mli

parser.mli: parser.mly
	ocamlyacc -v parser.mly

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

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

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