OBJS = scanner.cmo parser.cmo compiler.cmo

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

scanner.ml : scanner.mll
	ocamllex scanner.mll
	ocamlc -c ast.ml

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

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

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

TARFILES = Makefile ast.ml parser.mly scanner.mll compiler.ml

hw1.tar.gz : $(TARFILES)
	cd .. && tar zcf hw1/$@ $(TARFILES:%=hw1/%)

.PHONY : clean
clean :
	rm -rf *.cmo *.cmi compiler parser.mli parser.ml scanner.ml

# generated by ocamldep *.ml *.mli
parser.cmo: ast.cmi parser.cmi
parser.cmx: ast.cmi parser.cmi
scanner.cmo: parser.cmi
scanner.cmx: parser.cmx
ast.cmi:
parser.cmi: ast.cmi