# Makefile for tactics

include ../config

MAKE=make

TACCMO=prolog.cmo equality.cmo inv.cmo leminv.cmo \
       point.cmo progmach.cmo program.cmo propre.cmo \
       tauto.cmo gelim.cmo eqdecide.cmo

TACVO=Prolog.vo Equality.vo Inv.vo \
      Program.vo ProPre.vo Tauto.vo GElim.vo EqDecide.vo Point.vo

NOTLINKED=mimick.cmo Mimick.vo top_printers.cmo base_printers.cmo

ALLFILES=$(TACCMO) $(TACVO) $(NOTLINKED) include.ml top_printers.ml

ZDEP=$(COQTOP)/bin/$(ARCH)/coqdep -c

ZLIBS=-I ../src/lib/util \
      -I ../src/meta -I ../src/constr -I ../src/typing \
      -I ../src/proofs -I ../src/env \
      -I ../src/tactics -I ../src/parsing
ZDEBUG=
ZFLAGS= $(ZLIBS) -I $(CAMLP4LIB) $(ZDEBUG)
OPTFLAGS=$(TIMEPROF)

COQC=../bin/$(ARCH)/coqc -bindir ../bin/$(ARCH) -nolib -I . -I ../theories/INIT

byte: $(TACCMO) $(TACVO) $(NOTLINKED)

opt: sourceopt $(TACVO)
sourceopt: $(TACCMO:.cmo=.cmx)

install-library:
	$(INSTALL) -d $(ALLFILES) $(COQLIB)/tactics
	cd tcc; $(MAKE) install-library
	cd contrib ; $(MAKE) install-library
	cd programs; $(MAKE) install-library

clean:
	rm -f *.cm* *.o *.v? *~
	cd tcc; $(MAKE) clean
	cd programs; $(MAKE) clean
	cd contrib; $(MAKE) clean

archclean:
	find . \( -name "*.cmx" -o -name "*.o" \) -print -exec rm -f {} \;

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

.mli.cmi:
	$(CAMLC) $(ZFLAGS) $<

.ml.cmo:
	$(CAMLC) $(ZFLAGS) $<

.ml.cmx:
	$(CAMLOPTC) $(ZFLAGS) $(OPTFLAGS) $<

.v.vo:
	$(COQC) $(OPT) -q -I ../states -inputstate state $*

depend:
	$(ZDEP) $(ZLIBS) *.v *.ml *.mli > .depend
	cd tcc; $(MAKE) depend
	cd programs; $(MAKE) depend
	cd contrib; $(MAKE) depend

include .depend
