all : clean sake.native print.o

sake.native :
	ocamlbuild -use-ocamlfind -pkgs llvm,llvm.analysis -cflags -w,+a-4-40..42 sake.native

OBJS = ast.cmx sast.cmx header_generator.cmx llvm_generator.cmx parser.cmx scanner.cmx sake.cmx

sake : $(OBJS)
	ocamlfind ocamlopt -linkpkg -package llvm -package llvm.analysis $(OBJS) -o sake 

scanner.ml : scanner.mll
	ocamllex scanner.mll

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

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

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

%.cmx : %.ml
	ocamlfind ocamlopt -c -package llvm $<

print : print.c

.PHONY : clean
clean :
	ocamlbuild -clean
	rm -rf *.cmx *.cmo *.s *.ll *.out *.exe *.o *.diff *.err *.gch ../testing/*.h ../testing/*.gch *.h 
	rm -rf sake parser.ml parser.mli scanner.ml *.cmo *.cmi *.output alltests.log trafficLights.log adventureStory.log  

# Generated by ocamldep *.ml *.mli
ast.cmo :
ast.cmx :
header_generator.cmo : sast.cmo
header_generator.cmx : sast.cmx
llvm_generator.cmo : sast.cmo
llvm_generator.cmx : sast.cmx	
sake.cmo: scanner.cmo parser.cmi header_generator.cmo llvm_generator.cmo sast.cmo
sake.cmx: scanner.cmx parser.cmx header_generator.cmx llvm_generator.cmx sast.cmx
parser.cmo: ast.cmo parser.cmi
parser.cmx: ast.cmx parser.cmi
scanner.cmo: parser.cmi
scanner.cmx: parser.cmx
semantic.cmo : ast.cmo
semantic.cmx : ast.cmx
parser.cmi: ast.cmo
