# Makefile for tactics/tcc

include ../../config

TACCMO = tcc.cmo
TACVO  = Refine.vo

ALLFILES=$(TACCMO) $(TACVO)

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

LIBS=-I ../../states
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 \
      -I ..
ZDEBUG=
ZFLAGS= $(ZLIBS) -I $(CAMLP4LIB) $(ZDEBUG)
OPTFLAGS=$(TIMEPROF)

COQC=../../bin/$(ARCH)/coqc -bindir ../../bin/$(ARCH) -libdir ../.. -q
IMAGE=-image ../../bin/$(ARCH)/coq-contrib.out

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

module: $(TACVO:.vo=.v)
	$(COQC) $(LIBS) $(IMAGE) -inputstate state $(TACVO:.vo=)

install-library:
	$(INSTALL) -d $(ALLFILES) $(COQLIB)/tactics/tcc

COQMKTOP=$(COQTOP)/bin/$(ARCH)/coqmktop -srcdir ../..

debug: coq-debug-tcc.out

coq-debug-tcc.out: $(TACCMO)
	$(COQMKTOP) -o coq-debug-tcc.out -g $(ZLIBS) tcc.cmo $(TACCMO)

bench: Tests.vo

clean:
	rm -f *~ *.cm* *.o *.v? *.pp[oi]

archclean:
	rm -f *~ *.cmx *.o *.v? *.pp[oi]

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

.mli.cmi:
	$(CAMLC) $(ZFLAGS) $<
	@-chmod g+w $@

.ml.cmo:
	$(CAMLC) $(ZFLAGS) $<
	@-chmod g+w $@

.ml.cmx:
	$(CAMLOPTC) $(ZFLAGS) $(OPTFLAGS) $<
	@-chmod g+w $@

.ml4.cmo:
	$(CAMLC) -pp $(P4) $(ZFLAGS) -impl $<
	@-chmod g+w $@

.ml4.cmx:
	$(CAMLOPTC) -pp $(P4) $(ZFLAGS) $(OPTFLAGS) -impl $<
	@-chmod g+w $@

.v.vo:
	$(COQC) $(LIBS) $*
	@-chmod g+w $@

depend:
	$(ZDEP) $(ZLIBS) *.v *.ml* > .depend
	$(P4DEP) *.ml* >> .depend

include .depend
