CSLC = ocamlc
CSLOPT = ocamlopt
CSLDEP=ocamldep
CAMLLEX=ocamllex
CAMLYACC=ocamlyacc

MATH= ..
INCLUDES= -I ../INTERVAL/
CSLFLAGS=$(INCLUDES) -g 
CSLOPTFLAGS=$(INCLUDES) 


LIBS= ../INTERVAL/interval.cma ../INTERVAL/libinterval.a str.cma

libs : expr.cma expr.cmxa


expr.cma : expr_type.cmo parser.cmi parser.cmo lexer.cmo expr.cmo 
	$(CSLC) $(CSLFLAGS) -o $@ -a expr_type.cmo parser.cmo lexer.cmo expr.cmo

expr.cmxa : expr_type.cmx parser.cmi parser.cmx lexer.cmx expr.cmx
	$(CSLOPT) $(INCLUDES) -o $@ -a expr_type.cmx parser.cmx lexer.cmx expr.cmx


.SUFFIXES: .mll .mly .ml .mli .cmo .cmi .cmx

.mll.mli:
	$(CAMLLEX) $<
.mll.ml:
	$(CAMLLEX) $<
.mly.mli:
	$(CAMLYACC) $<
.mly.ml:
	$(CAMLYACC) $<
.ml.cmo :
	$(CSLC) $(CSLFLAGS) -c $<
.mli.cmi :
	$(CSLC) $(CSLFLAGS) -c $<
.ml.cmx :
	$(CSLOPT) $(CSLOPTFLAGS) -c $<

clean:
	\rm -f *.cmo *.cmi *.cmx *.o *.a *.cma *.cmxa test .depend *~ parser.ml parser.mli lexer.ml lexer.mli eval evalopt

.depend:
	$(CSLDEP) $(INCLUDES) *.mli *.ml >.depend

include .depend
