OBJS = ast.cmo namespace.cmo namespace_pp.cmo overloading.cmo translator.cmo pp.cmo parser.cmo scanner.cmo main.cmo

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

# bizzarre, probably macroifyable, just a prototype

ast.ml : ../ast.ml
	cat ../ast.ml > ast.ml

sast.ml : ../sast.ml
	cat ../sast.ml > sast.ml

main.ml : ../main.ml
	cat ../main.ml > main.ml

parser.mly : ../parser.mly
	cat ../parser.mly > parser.mly
	
scanner.mll : ../scanner.mll
	cat ../scanner.mll > scanner.mll
    
translator.ml : ../translator.ml
	cat ../translator.ml > translator.ml
	
overloading.ml : ../overloading.ml
	cat ../overloading.ml > overloading.ml
	
namespace.ml : ../namespace.ml
	cat ../namespace.ml > namespace.ml

# now the normal stuff

pp.ml : ast.ml ../../AST-PP/build/ast-pp
	../../AST-PP/build/ast-pp "Ast" < ast.ml > pp.ml

namespace_pp.ml : namespace.ml ../../AST-PP/build/ast-pp
	../../AST-PP/build/ast-pp "Namespace" < namespace.ml > namespace_pp.ml
	
../../AST-PP/build/ast-pp :
	make -C ../../AST-PP/build ast-pp

sast_tester : sast.cmo ast.cmo
	ocamlc -o sast_tester sast.cmo ast.cmo

scanner.ml : scanner.mll
	ocamllex scanner.mll

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

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

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

.PHONY : clean
clean :
	rm -f la-mesa parser.ml parser.mli scanner.ml testall.log \
	*.cmo *.cmi *.out *.diff

.PHONY : tests
tests : la-mesa
	./la-mesa < tests/user_purchases/user_purchases.lm > tests/user_purchases/main.java

# Generated by ocamldep *.ml *.mli
ast.cmo:
ast.cmx:
main.cmo: translator.cmo scanner.cmo pp.cmo parser.cmi ast.cmo
main.cmx: translator.cmx scanner.cmx pp.cmx parser.cmx ast.cmx
namespace.cmo: ast.cmo
namespace.cmx: ast.cmx
namespace_pp.cmo: namespace.cmo
namespace_pp.cmx: namespace.cmx
overloading.cmo: namespace_pp.cmo namespace.cmo ast.cmo
overloading.cmx: namespace_pp.cmx namespace.cmx ast.cmx
parser.cmo: ast.cmo parser.cmi
parser.cmx: ast.cmx parser.cmi
parser.cmi: ast.cmo
pp.cmo: ast.cmo
pp.cmx: ast.cmx
scanner.cmo: parser.cmi
scanner.cmx: parser.cmx
translator.cmo: overloading.cmo namespace_pp.cmo namespace.cmo ast.cmo
translator.cmx: overloading.cmx namespace_pp.cmx namespace.cmx ast.cmx
