TARFILES = Makefile scanner.mll parser.mly ast.ml compile.ml cal_std.ml semantic.ml cal.ml \
	SDL2.dll README.md test/ sample/

OBJS = scanner.cmo ast.cmo parser.cmo semantic.cmo cal_std.cmo compile.cmo cal.cmo
cal : $(OBJS)
	ocamlc str.cma -o cal.out $(OBJS)

scanner.ml : scanner.mll
	ocamllex scanner.mll

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

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

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

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

.PHONY : clean
clean :
	rm -f parser.ml parser.mli scanner.ml *.cmo *.cmi *.c *.exe *.out

SDL2.dll:
compile.cmo: cal_std.cmo ast.cmo 
compile.cmx: cal_std.cmx ast.cmx 
cal.cmo: scanner.cmo parser.cmi compile.cmo ast.cmo semantic.cmo
cal.cmx: scanner.cmx parser.cmx compile.cmx ast.cmo semantic.cmx
semantic.cmo: ast.cmo
semantic.cmx: ast.cmx
cal_std.cmo:
cal_std.cmx:
parser.cmo: ast.cmo parser.cmi 
parser.cmx: ast.cmx parser.cmi 
ast.cmo: 
ast.cmx: 
scanner.cmo: parser.cmo 
scanner.cmx: parser.cmx 
parser.cmi: ast.cmo 
