#primary author Yu Kang
OBJS = ast.cmo parser.cmo scanner.cmo compile.cmo semantic.cmo ica.cmo 

	
ica : $(OBJS)
	ocamlc str.cma -o ica $(OBJS) 
	
.PHONY : test
test : lsystem testall.sh
	./testall.sh
	

ast.cmo : type.mli ast.ml
	ocamlc -c type.mli
	ocamlc -c ast.ml

scanner.cmo : scanner.ml
	ocamlc -c scanner.ml

scanner.ml : scanner.mll 
	ocamllex scanner.mll
	
parser.cmo : parser.ml
	ocamlc -c parser.ml
	
parser.ml : parser.mli
	ocamlc -c parser.mli
	
parser.mli : parser.mly ast.cmo
	ocamlyacc parser.mly

compile.cmo: compile.ml
	ocamlc -c compile.ml

ica.cmo: ica.ml ast.cmo compile.cmo semantic.cmo
	ocamlc -c ica.ml
	
semantic.cmo: type.cmi semantic.ml ast.cmo sast.cmi
	ocamlc -c semantic.ml

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

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

.PHONY : clean
clean :
	rm -f ica parser.ml parser.mli scanner.ml \
	*.cmo *.cmi  *.java *.class