##########################################################################
##  v      #                  The Coq Proof Assistant                   ##
## <O___,, # CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud ##
##   \VV/  #                                                            ##
##    //   #   Makefile automagically generated by coq_makefile V8.2    ##
##########################################################################

# WARNING
#
# This Makefile has been automagically generated
# Edit at your own risks !
#
# END OF WARNING

#
# This Makefile was generated by the command line :
# coq_makefile -R . Metarouting -f Make
#

# 
# This Makefile may take 3 arguments passed as environment variables:
#   - COQBIN to specify the directory where Coq binaries resides;
#   - CAMLBIN and CAMLP4BIN to give the path for the OCaml and Camlp4/5 binaries.
COQLIB:=$(shell $(COQBIN)coqtop -where | sed -e 's/\\/\\\\/g')
CAMLP4:="$(shell $(COQBIN)coqtop -config | awk -F = '/CAMLP4=/{print $$2}')"
ifndef CAMLP4BIN
  CAMLP4BIN:=$(CAMLBIN)
endif

CAMLP4LIB:=$(shell $(CAMLP4BIN)$(CAMLP4) -where)

##########################
#                        #
# Libraries definitions. #
#                        #
##########################

OCAMLLIBS:=
COQSRCLIBS:=-I $(COQLIB)/kernel -I $(COQLIB)/lib \
  -I $(COQLIB)/library -I $(COQLIB)/parsing \
  -I $(COQLIB)/pretyping -I $(COQLIB)/interp \
  -I $(COQLIB)/proofs -I $(COQLIB)/tactics \
  -I $(COQLIB)/toplevel -I $(COQLIB)/contrib/cc -I $(COQLIB)/contrib/dp \
  -I $(COQLIB)/contrib/extraction -I $(COQLIB)/contrib/field \
  -I $(COQLIB)/contrib/firstorder -I $(COQLIB)/contrib/fourier \
  -I $(COQLIB)/contrib/funind -I $(COQLIB)/contrib/interface \
  -I $(COQLIB)/contrib/micromega -I $(COQLIB)/contrib/omega \
  -I $(COQLIB)/contrib/ring -I $(COQLIB)/contrib/romega \
  -I $(COQLIB)/contrib/rtauto -I $(COQLIB)/contrib/setoid_ring \
  -I $(COQLIB)/contrib/subtac -I $(COQLIB)/contrib/xml
COQLIBS:= -R . Metarouting
COQDOCLIBS:=-R . Metarouting

##########################
#                        #
# Variables definitions. #
#                        #
##########################

ZFLAGS=$(OCAMLLIBS) $(COQSRCLIBS) -I $(CAMLP4LIB)
OPT:=
COQFLAGS:=-q $(OPT) $(COQLIBS) $(OTHERFLAGS) $(COQ_XML)
ifdef CAMLBIN
  COQMKTOPFLAGS:=-camlbin $(CAMLBIN) -camlp4bin $(CAMLP4BIN)
endif
COQC:=$(COQBIN)coqc
COQDEP:=$(COQBIN)coqdep -c
GALLINA:=$(COQBIN)gallina
COQDOC:=$(COQBIN)coqdoc
COQMKTOP:=$(COQBIN)coqmktop
CAMLC:=$(CAMLBIN)ocamlc.opt -c -rectypes
CAMLOPTC:=$(CAMLBIN)ocamlopt.opt -c -rectypes
CAMLLINK:=$(CAMLBIN)ocamlc.opt -rectypes
CAMLOPTLINK:=$(CAMLBIN)ocamlopt.opt -rectypes
GRAMMARS:=grammar.cma
CAMLP4EXTEND:=pa_extend.cmo pa_macro.cmo q_MLast.cmo
CAMLP4OPTIONS:=
PP:=-pp "$(CAMLP4BIN)$(CAMLP4)o -I . $(COQSRCLIBS) $(CAMLP4EXTEND) $(GRAMMARS) $(CAMLP4OPTIONS) -impl"

###################################
#                                 #
# Definition of the "all" target. #
#                                 #
###################################

VFILES:=Logic/Logic.v\
  Logic/BigTuples.v\
  Signatures/DecSetoid.v\
  Signatures/Semigroup.v\
  Signatures/Preorder.v\
  Signatures/OrderSemigroup.v\
  Signatures/Bisemigroup.v\
  Signatures/Transform.v\
  Signatures/SemigroupTransform.v\
  Signatures/OrderTransform.v\
  Signatures/IdArrow.v\
  Signatures/DecSetoidProperties.v\
  Signatures/SemigroupProperties.v\
  Signatures/SemigroupNaturalOrder.v\
  Signatures/PreorderProperties.v\
  Signatures/OrderSemigroupProperties.v\
  Signatures/BisemigroupProperties.v\
  Signatures/TransformProperties.v\
  Signatures/SemigroupTransformProperties.v\
  Signatures/OrderTransformProperties.v\
  Signatures/DecSetoidPropRecord.v\
  Signatures/SemigroupPropRecord.v\
  Signatures/PreorderPropRecord.v\
  Signatures/OrderSemigroupPropRecord.v\
  Signatures/BisemigroupPropRecord.v\
  Signatures/TransformPropRecord.v\
  Signatures/SemigroupTransformPropRecord.v\
  Signatures/OrderTransformPropRecord.v\
  Signatures/OrderSemigroupGlue.v\
  Signatures/BisemigroupGlue.v\
  Signatures/SemigroupTransformGlue.v\
  Signatures/OrderTransformGlue.v\
  Signatures/All.v\
  Constructions/DecSetoids/Unit.v\
  Constructions/DecSetoids/Bool.v\
  Constructions/DecSetoids/FSets.v\
  Constructions/DecSetoids/FMinSets.v\
  Constructions/DecSetoids/Nat.v\
  Constructions/DecSetoids/Range.v\
  Constructions/DecSetoids/Product.v\
  Constructions/DecSetoids/Union.v\
  Constructions/DecSetoids/AddConstant.v\
  Constructions/DecSetoids/Seq.v\
  Constructions/DecSetoids/SimpleSeq.v\
  Constructions/DecSetoids/MultiSets.v\
  Constructions/Semigroups/Unit.v\
  Constructions/Semigroups/BoolOr.v\
  Constructions/Semigroups/BoolAnd.v\
  Constructions/Semigroups/NatMax.v\
  Constructions/Semigroups/NatMin.v\
  Constructions/Semigroups/NatPlus.v\
  Constructions/Semigroups/RangePlus.v\
  Constructions/Semigroups/RangeMin.v\
  Constructions/Semigroups/RangeMax.v\
  Constructions/Semigroups/Product.v\
  Constructions/Semigroups/Lex.v\
  Constructions/Semigroups/Union.v\
  Constructions/Semigroups/UnionSwap.v\
  Constructions/Semigroups/TopUnion.v\
  Constructions/Semigroups/FSetsIntersect.v\
  Constructions/Semigroups/FSetsUnion.v\
  Constructions/Semigroups/FSetOp.v\
  Constructions/Semigroups/FMinSetsUnion.v\
  Constructions/Semigroups/FMinSetsOp.v\
  Constructions/Semigroups/Left.v\
  Constructions/Semigroups/Right.v\
  Constructions/Semigroups/SelLex.v\
  Constructions/Semigroups/Seq.v\
  Constructions/Semigroups/SimpleSeq.v\
  Constructions/Semigroups/Prefix.v\
  Constructions/Semigroups/Postfix.v\
  Constructions/Semigroups/RevOp.v\
  Constructions/Semigroups/MultiSetsUnion.v\
  Constructions/Semigroups/MultiSetsIntersection.v\
  Constructions/Preorders/NatLe.v\
  Constructions/Preorders/Dual.v\
  Constructions/Preorders/Lex.v\
  Constructions/Preorders/LeftNaturalOrder.v\
  Constructions/Preorders/RightNaturalOrder.v\
  Constructions/Preorders/AnnTop.v\
  Constructions/OrderSemigroups/Dual.v\
  Constructions/OrderSemigroups/Lex.v\
  Constructions/OrderSemigroups/NatLePlus.v\
  Constructions/OrderSemigroups/LeftNaturalOrder.v\
  Constructions/OrderSemigroups/RightNaturalOrder.v\
  Constructions/OrderSemigroups/BSLeftNaturalOrder.v\
  Constructions/OrderSemigroups/SimpleSeq.v\
  Constructions/Bisemigroups/Unit.v\
  Constructions/Bisemigroups/BoolOrAnd.v\
  Constructions/Bisemigroups/AddZero.v\
  Constructions/Bisemigroups/AddOne.v\
  Constructions/Bisemigroups/NatMaxPlus.v\
  Constructions/Bisemigroups/NatMinPlus.v\
  Constructions/Bisemigroups/NatMaxMin.v\
  Constructions/Bisemigroups/NatIMaxPlus.v\
  Constructions/Bisemigroups/NatIMinPlus.v\
  Constructions/Bisemigroups/NatIMaxMin.v\
  Constructions/Bisemigroups/RangeMaxPlus.v\
  Constructions/Bisemigroups/RangeMinPlus.v\
  Constructions/Bisemigroups/RangeMaxMin.v\
  Constructions/Bisemigroups/AbsorbingProduct.v\
  Constructions/Bisemigroups/Swap.v\
  Constructions/Bisemigroups/Lex.v\
  Constructions/Bisemigroups/Product.v\
  Constructions/Bisemigroups/FSets.v\
  Constructions/Bisemigroups/FSetsOp.v\
  Constructions/Bisemigroups/FMinSets.v\
  Constructions/Bisemigroups/FMinSetsOpUnion.v\
  Constructions/Bisemigroups/Left.v\
  Constructions/Bisemigroups/SelLex.v\
  Constructions/Bisemigroups/RevTimes.v\
  Constructions/Bisemigroups/PrefixSeq.v\
  Constructions/Bisemigroups/PostfixSeq.v\
  Constructions/Bisemigroups/MultiSets.v\
  Constructions/Transforms/Id.v\
  Constructions/Transforms/Replace.v\
  Constructions/Transforms/Product.v\
  Constructions/Transforms/Union.v\
  Constructions/Transforms/Cayley.v\
  Constructions/Transforms/AddZero.v\
  Constructions/Transforms/FSets.v\
  Constructions/Transforms/FMinSets.v\
  Constructions/SemigroupTransforms/Lex.v\
  Constructions/SemigroupTransforms/Left.v\
  Constructions/SemigroupTransforms/Right.v\
  Constructions/SemigroupTransforms/Union.v\
  Constructions/SemigroupTransforms/Cayley.v\
  Constructions/SemigroupTransforms/SelLex.v\
  Constructions/SemigroupTransforms/Product.v\
  Constructions/SemigroupTransforms/FSets.v\
  Constructions/SemigroupTransforms/FMinSets.v\
  Inference/Common/Common.v\
  Inference/DecSetoids/Unit.v\
  Inference/DecSetoids/Bool.v\
  Inference/DecSetoids/Nat.v\
  Inference/DecSetoids/Range.v\
  Inference/DecSetoids/Product.v\
  Inference/DecSetoids/Union.v\
  Inference/DecSetoids/FSets.v\
  Inference/DecSetoids/FMinSets.v\
  Inference/DecSetoids/AddConstant.v\
  Inference/DecSetoids/Seq.v\
  Inference/DecSetoids/SimpleSeq.v\
  Inference/DecSetoids/MultiSets.v\
  Inference/Semigroups/Unit.v\
  Inference/Semigroups/BoolAnd.v\
  Inference/Semigroups/BoolOr.v\
  Inference/Semigroups/NatMax.v\
  Inference/Semigroups/NatMin.v\
  Inference/Semigroups/NatPlus.v\
  Inference/Semigroups/RangeMin.v\
  Inference/Semigroups/RangeMax.v\
  Inference/Semigroups/RangePlus.v\
  Inference/Semigroups/Product.v\
  Inference/Semigroups/Union.v\
  Inference/Semigroups/UnionSwap.v\
  Inference/Semigroups/TopUnion.v\
  Inference/Semigroups/Lex.v\
  Inference/Semigroups/FSetOp.v\
  Inference/Semigroups/FSetsUnion.v\
  Inference/Semigroups/FSetsIntersect.v\
  Inference/Semigroups/FMinSetsOp.v\
  Inference/Semigroups/FMinSetUnion.v\
  Inference/Semigroups/Left.v\
  Inference/Semigroups/Right.v\
  Inference/Semigroups/SelLex.v\
  Inference/Semigroups/Seq.v\
  Inference/Semigroups/Prefix.v\
  Inference/Semigroups/Postfix.v\
  Inference/Semigroups/SimpleSeq.v\
  Inference/Semigroups/RevOp.v\
  Inference/Semigroups/MultiSetsUnion.v\
  Inference/Semigroups/MultiSetsIntersection.v\
  Inference/Preorders/Dual.v\
  Inference/Preorders/LeftNaturalOrder.v\
  Inference/Preorders/RightNaturalOrder.v\
  Inference/Preorders/Lex.v\
  Inference/Preorders/NatLe.v\
  Inference/Preorders/AnnTop.v\
  Inference/OrderSemigroups/Dual.v\
  Inference/OrderSemigroups/Lex.v\
  Inference/OrderSemigroups/LeftNaturalOrder.v\
  Inference/OrderSemigroups/RightNaturalOrder.v\
  Inference/OrderSemigroups/BSLeftNaturalOrder.v\
  Inference/OrderSemigroups/SimpleSeq.v\
  Inference/Bisemigroups/Unit.v\
  Inference/Bisemigroups/BoolOrAnd.v\
  Inference/Bisemigroups/FMinSets.v\
  Inference/Bisemigroups/FMinSetsOpUnion.v\
  Inference/Bisemigroups/FSetsOp.v\
  Inference/Bisemigroups/FSets.v\
  Inference/Bisemigroups/Lex.v\
  Inference/Bisemigroups/Product.v\
  Inference/Bisemigroups/AddZero.v\
  Inference/Bisemigroups/AddOne.v\
  Inference/Bisemigroups/NatMaxPlus.v\
  Inference/Bisemigroups/NatMinPlus.v\
  Inference/Bisemigroups/NatMaxMin.v\
  Inference/Bisemigroups/NatIMaxMin.v\
  Inference/Bisemigroups/NatIMaxPlus.v\
  Inference/Bisemigroups/NatIMinPlus.v\
  Inference/Bisemigroups/RangeMaxMin.v\
  Inference/Bisemigroups/RangeMaxPlus.v\
  Inference/Bisemigroups/RangeMinPlus.v\
  Inference/Bisemigroups/Swap.v\
  Inference/Bisemigroups/Left.v\
  Inference/Bisemigroups/SelLex.v\
  Inference/Bisemigroups/RevTimes.v\
  Inference/Bisemigroups/PrefixSeq.v\
  Inference/Bisemigroups/PostfixSeq.v\
  Inference/Bisemigroups/MultiSets.v\
  Inference/Transforms/Id.v\
  Inference/Transforms/Product.v\
  Inference/Transforms/Replace.v\
  Inference/Transforms/Union.v\
  Inference/Transforms/Cayley.v\
  Inference/SemigroupTransforms/Left.v\
  Inference/SemigroupTransforms/Lex.v\
  Inference/SemigroupTransforms/Right.v\
  Inference/SemigroupTransforms/Union.v\
  Inference/SemigroupTransforms/Cayley.v\
  Inference/SemigroupTransforms/SelLex.v\
  IsoPres/DecSetoids/Union.v\
  IsoPres/DecSetoids/Product.v\
  IsoPres/DecSetoids/Seq.v\
  IsoPres/DecSetoids/SimpleSeq.v\
  IsoPres/DecSetoids/FSets.v\
  IsoPres/DecSetoids/FMinSets.v\
  IsoPres/DecSetoids/MultiSets.v\
  IsoPres/Semigroups/FSetOp.v\
  IsoPres/Semigroups/FMinSetsOp.v\
  IsoPres/Semigroups/FSetsIntersect.v\
  IsoPres/Semigroups/FSetsUnion.v\
  IsoPres/Semigroups/FMinSetsUnion.v\
  IsoPres/Semigroups/Left.v\
  IsoPres/Semigroups/Right.v\
  IsoPres/Semigroups/Product.v\
  IsoPres/Semigroups/Lex.v\
  IsoPres/Semigroups/SelLex.v\
  IsoPres/Semigroups/Seq.v\
  IsoPres/Semigroups/Prefix.v\
  IsoPres/Semigroups/Postfix.v\
  IsoPres/Semigroups/SimpleSeq.v\
  IsoPres/Semigroups/TopUnion.v\
  IsoPres/Semigroups/Union.v\
  IsoPres/Semigroups/UnionSwap.v\
  IsoPres/Semigroups/RevOp.v\
  IsoPres/Semigroups/MultiSetsUnion.v\
  IsoPres/Semigroups/MultiSetsIntersection.v\
  IsoPres/Preorders/Dual.v\
  IsoPres/Preorders/LeftNaturalOrder.v\
  IsoPres/Preorders/RightNaturalOrder.v\
  IsoPres/Preorders/Lex.v\
  IsoPres/Preorders/AnnTop.v\
  IsoPres/OrderSemigroups/Dual.v\
  IsoPres/OrderSemigroups/LeftNaturalOrder.v\
  IsoPres/OrderSemigroups/RightNaturalOrder.v\
  IsoPres/OrderSemigroups/Lex.v\
  IsoPres/OrderSemigroups/BSLeftNaturalOrder.v\
  IsoPres/OrderSemigroups/SimpleSeq.v\
  IsoPres/Bisemigroups/Glue.v\
  IsoPres/Bisemigroups/AddOne.v\
  IsoPres/Bisemigroups/AddZero.v\
  IsoPres/Bisemigroups/FMinSets.v\
  IsoPres/Bisemigroups/FMinSetsOpUnion.v\
  IsoPres/Bisemigroups/FSets.v\
  IsoPres/Bisemigroups/FSetsOp.v\
  IsoPres/Bisemigroups/Left.v\
  IsoPres/Bisemigroups/Product.v\
  IsoPres/Bisemigroups/Lex.v\
  IsoPres/Bisemigroups/SelLex.v\
  IsoPres/Bisemigroups/Swap.v\
  IsoPres/Bisemigroups/RevTimes.v\
  IsoPres/Bisemigroups/PrefixSeq.v\
  IsoPres/Bisemigroups/PostfixSeq.v\
  IsoPres/Bisemigroups/MultiSets.v\
  IsoPres/Transforms/Id.v\
  IsoPres/Transforms/Product.v\
  IsoPres/Transforms/Replace.v\
  IsoPres/Transforms/Union.v\
  IsoPres/Transforms/Cayley.v\
  IsoPres/SemigroupTransforms/Glue.v\
  IsoPres/SemigroupTransforms/Left.v\
  IsoPres/SemigroupTransforms/Lex.v\
  IsoPres/SemigroupTransforms/Right.v\
  IsoPres/SemigroupTransforms/Union.v\
  IsoPres/SemigroupTransforms/Cayley.v\
  IsoPres/SemigroupTransforms/SelLex.v\
  Language/Syntax.v\
  Language/Semantics.v\
  Language/OcamlTypes.v\
  Language/Summary.v\
  Language/AstDS.v\
  Language/AstSG.v\
  Language/AstPO.v\
  Language/AstOS.v\
  Language/AstBS.v\
  Language/AstTF.v\
  Language/AstST.v\
  Language/ExtractionList.v
VOFILES:=$(VFILES:.v=.vo)
GLOBFILES:=$(VFILES:.v=.glob)
VIFILES:=$(VFILES:.v=.vi)
GFILES:=$(VFILES:.v=.g)
HTMLFILES:=$(VFILES:.v=.html)
GHTMLFILES:=$(VFILES:.v=.g.html)

all: $(VOFILES) 
spec: $(VIFILES)

gallina: $(GFILES)

html: $(GLOBFILES) $(VFILES)
	- mkdir html
	$(COQDOC) -toc -html $(COQDOCLIBS) -d html $(VFILES)

gallinahtml: $(GLOBFILES) $(VFILES)
	- mkdir html
	$(COQDOC) -toc -html -g $(COQDOCLIBS) -d html $(VFILES)

all.ps: $(VFILES)
	$(COQDOC) -toc -ps $(COQDOCLIBS) -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)`

all-gal.ps: $(VFILES)
	$(COQDOC) -toc -ps -g $(COQDOCLIBS) -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)`

all.pdf: $(VFILES)
	$(COQDOC) -toc -pdf $(COQDOCLIBS) -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)`

all-gal.pdf: $(VFILES)
	$(COQDOC) -toc -pdf -g $(COQDOCLIBS) -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)`



####################
#                  #
# Special targets. #
#                  #
####################

.PHONY: all opt byte archclean clean install depend html

%.vo %.glob: %.v
	$(COQC) -dump-glob $*.glob $(COQDEBUG) $(COQFLAGS) $*

%.vi: %.v
	$(COQC) -i $(COQDEBUG) $(COQFLAGS) $*

%.g: %.v
	$(GALLINA) $<

%.tex: %.v
	$(COQDOC) -latex $< -o $@

%.html: %.v %.glob
	$(COQDOC) -glob-from $*.glob  -html $< -o $@

%.g.tex: %.v
	$(COQDOC) -latex -g $< -o $@

%.g.html: %.v %.glob
	$(COQDOC) -glob-from $*.glob -html -g $< -o $@

%.v.d: %.v
	$(COQDEP) -glob -slash $(COQLIBS) "$<" > "$@" || ( RV=$$?; rm -f "$@"; exit $${RV} )

byte:
	$(MAKE) all "OPT:=-byte"

opt:
	$(MAKE) all "OPT:=-opt"

install:
	mkdir -p $(COQLIB)/user-contrib
	(for i in $(VOFILES); do \
	 install -d `dirname $(COQLIB)/user-contrib/Metarouting/$$i`; \
	 install $$i $(COQLIB)/user-contrib/Metarouting/$$i; \
	 done)

clean:
	rm -f $(VOFILES) $(VIFILES) $(GFILES) *~
	rm -f all.ps all-gal.ps all.pdf all-gal.pdf all.glob $(VFILES:.v=.glob) $(HTMLFILES) $(GHTMLFILES) $(VFILES:.v=.tex) $(VFILES:.v=.g.tex) $(VFILES:.v=.v.d)
	- rm -rf html

archclean:
	rm -f *.cmx *.o


printenv: 
	@echo CAMLC =	$(CAMLC)
	@echo CAMLOPTC =	$(CAMLOPTC)
	@echo CAMLP4LIB =	$(CAMLP4LIB)

Makefile: Make 
	mv -f Makefile Makefile.bak
	$(COQBIN)coq_makefile -f Make -o Makefile


-include $(VFILES:.v=.v.d)
.SECONDARY: $(VFILES:.v=.v.d)

# WARNING
#
# This Makefile has been automagically generated
# Edit at your own risks !
#
# END OF WARNING

