OBJS = ast.cmo sast.cmo exception.cmo parser.cmo scanner.cmo \
printast.cmo builtin.cmo semantic.cmo printsast.cmo translate.cmo clip.cmo

all: clip clipc

clip: $(OBJS)
	ocamlc -o clip str.cma $(OBJS)

scanner.ml: scanner.mll
	ocamllex scanner.mll

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

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

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


HOME=`pwd`
clipc: clip
	echo "#!/bin/bash" > $@
	echo "HOME=$(HOME)" >> $@
	cat clipccore >> $@
	chmod +x clipc

.PHONY: clean
clean:
	rm -f parser.ml parser.mli scanner.ml *.cmo *.cmi

# Generated by ocamldep *.ml *.mli
ast.cmo :
ast.cmx :
builtin.cmo : sast.cmo ast.cmo
builtin.cmx : sast.cmx ast.cmx
clip.cmo : sast.cmo translate.cmi semantic.cmi printsast.cmo printast.cmo \
    parser.cmi exception.cmo ast.cmo
clip.cmx : sast.cmx translate.cmx semantic.cmx printsast.cmx printast.cmx \
    parser.cmx exception.cmx ast.cmx
exception.cmo :
exception.cmx :
parser.cmo : ast.cmo parser.cmi
parser.cmx : ast.cmx parser.cmi
printast.cmo : exception.cmo ast.cmo
printast.cmx : exception.cmx ast.cmx
printsast.cmo : sast.cmo semantic.cmi printast.cmo exception.cmo ast.cmo
printsast.cmx : sast.cmx semantic.cmx printast.cmx exception.cmx ast.cmx
semantic.cmo : sast.cmo printast.cmo exception.cmo builtin.cmo ast.cmo \
    semantic.cmi
semantic.cmx : sast.cmx printast.cmx exception.cmx builtin.cmx ast.cmx \
    semantic.cmi
translate.cmo : sast.cmo printast.cmo exception.cmo ast.cmo translate.cmi
translate.cmx : sast.cmx printast.cmx exception.cmx ast.cmx translate.cmi
sast.cmo : ast.cmo
sast.cmx : ast.cmx
parser.cmi : ast.cmo
semantic.cmi : sast.cmo ast.cmo
translate.cmi : sast.cmo ast.cmo
