OBJS = ast.cmo parser.cmo scanner.cmo compile.cmo semantic.cmo bytecode.cmo execute.cmo curve.cmo 

LIBS=$(WITHGRAPHICS) $(WITHUNIX) $(WITHTHREADS) 

CONF=-I +threads

WITHGRAPHICS =graphics.cma -cclib -lgraphics -cclib -L/usr/X11R6/lib -cclib -lX11

WITHUNIX =unix.cma -cclib -lunix

WITHSTR =str.cma -cclib -lstr

WITHNUMS =nums.cma -cclib -lnums

WITHTHREADS =threads.cma -cclib -lthreads

WITHDBM =dbm.cma -cclib -lmldbm -cclib -lndbm

curve : $(OBJS)
	ocamlc $(CONF) -o curve $(LIBS) $(OBJS)

.PHONY : test
test : curve testall.sh
	./testall.sh

.PHONY : testb
testb : curve testallb.sh
	./testallb.sh
	
scanner.ml : scanner.mll
	ocamllex scanner.mll

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

%.cmo : %.ml
	ocamlc $(CONF) -c $< 

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

.PHONY : clean
clean :
	rm -f curve parser.ml parser.mli scanner.ml testall.log \
	*.cmo *.cmi *.out *.diff

# Generated by ocamldep *.ml *.mli
ast.cmo: 
ast.cmx: 
bytecode.cmo: ast.cmo 
bytecode.cmx: ast.cmx 
compile.cmo: bytecode.cmo ast.cmo
compile.cmx: bytecode.cmx ast.cmx
execute.cmo: bytecode.cmo ast.cmo 
execute.cmx: bytecode.cmx ast.cmx 
semantic.cmo: 
semantic.cmx:
curve.cmo: scanner.cmo parser.cmi execute.cmo \
    bytecode.cmo ast.cmo semantic.cmo
curve.cmx: scanner.cmx parser.cmx execute.cmx \
    bytecode.cmx ast.cmx semantic.cmx
parser.cmo: ast.cmo parser.cmi 
parser.cmx: ast.cmx parser.cmi 
scanner.cmo: parser.cmi 
scanner.cmx: parser.cmx 
parser.cmi: ast.cmo 
