coqsrc=$(wildcard *.v)

TARGEXTRACT= exo_induc_fct.vo exo_inter.vo
TARGETS= Correctness.vo $(TARGEXTRACT) bib prog


default: ${TARGETS}

prepare_bench: Correctness.vo

.PHONY: depend clean allclean bib prog perf long precise comp comprecise

.SUFFIXES: .tex .ps .pdf .dvi .v .vo

%.vo: %.v
	time coqc $*.v

%.cmo: %.cmi %.ml
	ocamlc -g -c $*.ml

%.cmi: %.mli
	ocamlc -g -c $*.mli

# dependencies

depend: coq.depend

coq.depend: $(coqsrc) 
	coqdep *.v > coq.depend

$(TARGEXTRACT): coq.depend 

# dependency graphs

graph: coq.depend.ps

%.depend.ps: %.depend
	cat $< | dependot | dot -Tps > $@

# Performance of extracted code

prog_ready: $(TARGEXTRACT) Makefile.perf main.ml
	mkdir -p Perf
	cp -a main.ml analysis.ml Perf
	cp -a Makefile.perf Perf/Makefile
	(cd Perf; make depend)
	touch $@

bib: prog_ready
	(cd Perf; make bib)

prog: prog_ready
	(cd Perf; make prog)

perf: prog_ready
	(cd Perf; make)

long: prog_ready
	(cd Perf; make long)

precise: prog_ready
	(cd Perf; make precise)

comp: prog_ready
	(cd Perf; make comp)

longcomp: prog_ready
	(cd Perf; make longcomp)

copy: prog_ready
	(cd Perf; make copy)


# cleaning 

clean:
	rm -f *.vo *~ *.sv *.depend.ps .depend
	rm -f prog
	rm -rf Perf prog_ready
	rm -rf result*

allclean: clean
	rm -f *.depend

sinclude coq.depend


