# Contributer: Habin
.PHONY : all
all:	loon.native loon_scanf.o

.PHONY : loon.native
loon.native :
	ocamlbuild -r -use-ocamlfind -pkgs llvm,llvm.analysis -cflags -w,+a-4 \
		loon.native

.PHONY : clean
clean :
	ocamlbuild -clean
	rm -rf testall.log *.diff loon scanner.ml parser.ml parser.mli
	rm -rf loon_scanf
	rm -rf *.cmx *.cmi *.cmo *.o *.s *.ll *.out *.exe

# semant.cmx goes before loon.cmx when it's there
OBJS = ast.cmx codegen.cmx parser.cmx scanner.cmx loon.cmx 

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


scanner.ml : scanner.mll
	ocamllex scanner.mll

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

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

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

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

#Tests scanf example
loon_scanf: loon_scanf.c

# Generated by ocamldep *.ml *.mli
ast.cmi :
codegen.cmo : ast.cmi
codegen.cmx : ast.cmi
loon.cmo : scanner.cmo parser.cmi codegen.cmo ast.cmi
loon.cmx : scanner.cmx parser.cmx codegen.cmx ast.cmi
parser.cmo : ast.cmi parser.cmi
parser.cmx : ast.cmi parser.cmi
parser.cmi : ast.cmi
scanner.cmo : parser.cmi
scanner.cmx : parser.cmx
