# Odds: compiler Makefile
#  - builds and manages all compiler components

OCAMLC = ocamlc
OCAMLLEX = ocamllex
OCAMLYACC = ocamlyacc
OBJS = utils.cmo parser.cmo scanner.cmo analyzer.cmo printer.cmo pythonizer.cmo generator.cmo odds.cmo

default: odds

odds: $(OBJS)
	$(OCAMLC) -g -o odds $(OBJS)

all:
	cd ..; make all

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 odds scanner.ml parser.ml parser.mli *.cmo *.cmi

# Generated by ocamldep *.ml *.mli
analyzer.cmo: sast.cmi ast.cmi
analyzer.cmx: sast.cmi ast.cmi
generator.cmo: past.cmi ast.cmi
generator.cmx: past.cmi ast.cmi
odds.cmo: utils.cmo scanner.cmo pythonizer.cmo printer.cmo parser.cmi \
    generator.cmo analyzer.cmo
odds.cmx: utils.cmx scanner.cmx pythonizer.cmx printer.cmx parser.cmx \
    generator.cmx analyzer.cmx
parser.cmo: ast.cmi parser.cmi
parser.cmx: ast.cmi parser.cmi
printer.cmo: sast.cmi ast.cmi analyzer.cmo
printer.cmx: sast.cmi ast.cmi analyzer.cmx
pythonizer.cmo: sast.cmi past.cmi
pythonizer.cmx: sast.cmi past.cmi
scanner.cmo: parser.cmi ast.cmi
scanner.cmx: parser.cmx ast.cmi
utils.cmo:
utils.cmx:
ast.cmi:
parser.cmi: ast.cmi
past.cmi: ast.cmi
sast.cmi: ast.cmi
