LEX = ocamllex
YACC = ocamlyacc
OCAML = ocamlc

OBJS = parser.cmo scanner.cmo ast.cmo sast.cmo semantic.cmo generator.cmo ncml.cmo

OUTPUTS = ncml *.cmo *.cmi *.mli *~ scanner.ml parser.ml parser.output *.out *.diff *.log IR.py tests/IR.py tests/IR.py~ *.pyc

all : ncml

ncml : $(OBJS)
	$(OCAML) -o ncml $(OBJS)

parser.ml parser.mli : parser.mly
	$(YACC) -v parser.mly

scanner.ml : scanner.mll
	$(LEX) scanner.mll

%.cmo : %.ml
	$(OCAML) -c $<

%.cmi : %.mli
	$(OCAML) -c $<


.PHONY : clean
clean:
	rm -rf $(OUTPUTS)




#Generated by Ocamldep
ast.cmo:
ast.cmx:
generator.cmo: ast.cmo
generator.cmx: ast.cmx
ncml.cmo: semantic.cmo scanner.cmo sast.cmo parser.cmi generator.cmo ast.cmo
ncml.cmx: semantic.cmx scanner.cmx sast.cmx parser.cmx generator.cmx ast.cmx
parser.cmo: ast.cmo parser.cmi
parser.cmx: ast.cmx parser.cmi
sast.cmo: ast.cmo
sast.cmx: ast.cmx
scanner.cmo: parser.cmi
scanner.cmx: parser.cmx
semantic.cmo: sast.cmo ast.cmo
semantic.cmx: sast.cmx ast.cmx
parser.cmi: ast.cmo
