CSLC = ocamlc
CSLOPT = ocamlopt
CSLDEP = ocamldep
INCLUDES= -I INTERVAL -I EXPR
CSLFLAGS=$(INCLUDES)
CSLOPTFLAGS=$(INCLUDES)

TESTNORM_OBJS= copyleft.cmo rotate.cmo func.cmo graph.cmo pqueue.cmo b_and_b.cmo main.cmo
TESTOPT_OBJS=  $(TESTNORM_OBJS:.cmo=.cmx)

all: interval expr bbnorm bbopt

interval:
	(cd INTERVAL;make)

expr:
	(cd EXPR;make)

#bbopt : $(TESTOPT_OBJS)
#	$(CSLOPT) $(CSLOPTFLAGS) -o $@ unix.cmxa str.cmxa graphics.cmxa INTERVAL/interval.cmxa EXPR/expr.cmxa $(TESTOPT_OBJS) INTERVAL/libinterval.a

bbopt : $(TESTOPT_OBJS)
	$(CSLOPT) $(CSLOPTFLAGS) -o $@ unix.cmxa str.cmxa graphics.cmxa INTERVAL/interval.cmxa EXPR/expr.cmxa $(TESTOPT_OBJS) INTERVAL/libinterval.a  -ccopt -static -ccopt -static-libgcc -cclib -lxcb -cclib -lXau -cclib -lXdmcp -cclib -lX11 -cclib -lpthread

bbnorm : $(TESTNORM_OBJS)
	$(CSLC) $(CSLFLAGS)  -o $@ unix.cma str.cma graphics.cma INTERVAL/interval.cma EXPR/expr.cma $(TESTNORM_OBJS) INTERVAL/libinterval.a  


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

.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 bbnorm* bbopt* *~; (cd INTERVAL;make clean);(cd EXPR;make clean)

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

include .depend

