all: scanner ../../src/parser.mly
	/bin/sh ./test_parser.sh

scanner : scanner.ml parser.ml parser.mli ast.ml
	ocamlopt -o scanner $^

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

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

scanner.mll :  ../../src/scanner.mll ../lexm.sh
	/bin/sh ../lexm.sh ../../src/scanner.mll > scanner.mll

parser.mly : ../../src/parser.mly
	/bin/cp -f ../../src/parser.mly parser.mly

ast.ml : ../../src/ast.ml
	/bin/cp -f ../../src/ast.ml ast.ml

parser.ml parser.mli : parser.mly ast.cmo
	ocamlyacc parser.mly && ocamlc -w A -c parser.mli ast.ml

scanner.ml : scanner.mll
	ocamllex $^

test_scanner.out :scanner test_scanner.tb
	./scanner < test_scanner.tb > test_scanner.out


##############################

.PHONY : clean
clean :
	rm -rf *.cmi *.cmo *.cmx *.o *.mli *.ml *.mll *.mly test_scanner.out scanner
