OBJS = parser.cmo scanner.cmo compile.cmo amath.cmo

TESTS = \
abs \
arith1 \
arith2 \
array-var \
for1 \
func1 \
func2 \
func3 \
func4 \
func5 \
gcd \
if1 \
if2 \
if3 \
if4 \
int-var \
log \
ops1 \
pow \
sqrt \
sum \
while

TARFILES = Makefile scanner.mll parser.mly ast.mli compile.ml amath.ml testall.sh \
	$(TESTS:%=tests/test-%.am) \
	$(TESTS:%=tests/test-%.out)

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

.PHONY : test
test : amath testall.sh
	./testall.sh

scanner.ml : scanner.mll
	ocamllex scanner.mll

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

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

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

amath.tar.gz : $(TARFILES)
	cd .. && tar zcf amath/amath.tar.gz $(TARFILES:%=amath/%)

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

# Generated by ocamldep *.ml *.mli
amath.cmo: scanner.cmo parser.cmi ast.cmi 
amath.cmx: scanner.cmx parser.cmx ast.cmi 
compile.cmo: scanner.cmo parser.cmi ast.cmi 
compile.cmx: scanner.cmx parser.cmx ast.cmi 
parser.cmo: ast.cmi parser.cmi 
parser.cmx: ast.cmi parser.cmi 
scanner.cmo: parser.cmi 
scanner.cmx: parser.cmx 
parser.cmi: ast.cmi 
