X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2FMakefile;h=ab03a892f002094e57d0169af7a0dfe932ef08a9;hb=1c0aa5a6fe9b54787046c7e0270760ad197ee460;hp=272711ad763b563605d418167e331d0dabbd083f;hpb=e0cf3f03dcddf705a47ded66633f3a6952759703;p=helm.git diff --git a/matita/Makefile b/matita/Makefile index 272711ad7..ab03a892f 100644 --- a/matita/Makefile +++ b/matita/Makefile @@ -14,6 +14,9 @@ OCAMLC_FLAGS = $(OCAML_FLAGS) $(OCAML_THREADS_FLAGS) OCAMLC = $(OCAMLFIND) ocamlc $(OCAMLC_FLAGS) $(OCAML_DEBUG_FLAGS) OCAMLOPT = $(OCAMLFIND) opt $(OCAMLC_FLAGS) OCAMLDEP = $(OCAMLFIND) ocamldep $(OCAML_FLAGS) +INSTALL_PROGRAMS= matita matitac +INSTALL_PROGRAMS_LINKS_MATITA= cicbrowser +INSTALL_PROGRAMS_LINKS_MATITAC= matitadep matitamake matitaclean matitaprover MATITA_FLAGS = -noprofile NODB=false @@ -24,6 +27,7 @@ endif # objects for matita (GTK GUI) CMOS = \ buildTimeConf.cmo \ + lablGraphviz.cmo \ matitaTypes.cmo \ matitaMisc.cmo \ matitamakeLib.cmo \ @@ -31,10 +35,11 @@ CMOS = \ matitaExcPp.cmo \ matitaEngine.cmo \ matitacLib.cmo \ + matitaprover.cmo \ + applyTransformation.cmo \ + matitaGtkMisc.cmo \ matitaScript.cmo \ matitaGeneratedGui.cmo \ - matitaGtkMisc.cmo \ - applyTransformation.cmo \ matitaMathView.cmo \ matitaGui.cmo \ $(NULL) @@ -48,6 +53,7 @@ CCMOS = \ matitaExcPp.cmo \ matitaEngine.cmo \ matitacLib.cmo \ + matitaprover.cmo \ $(NULL) MAINCMOS = \ matitadep.cmo \ @@ -56,7 +62,7 @@ MAINCMOS = \ gragrep.cmo \ $(NULL) PROGRAMS_BYTE = \ - matita matitac cicbrowser matitadep matitaclean matitamake + matita matitac cicbrowser matitadep matitaclean matitamake matitaprover PROGRAMS = $(PROGRAMS_BYTE) matitatop PROGRAMS_OPT = $(patsubst %,%.opt,$(PROGRAMS_BYTE)) NOINST_PROGRAMS = dump_moo gragrep @@ -67,7 +73,7 @@ all: $(PROGRAMS) $(NOINST_PROGRAMS) # all: matita.conf.xml $(PROGRAMS) coq.moo # matita.conf.xml: matita.conf.xml.sample -# @if diff matita.conf.xml.sample matita.conf.xml 1>/dev/null 2>/dev/null; then\ +# $(H)if diff matita.conf.xml.sample matita.conf.xml 1>/dev/null 2>/dev/null; then\ # touch matita.conf.xml;\ # else\ # echo;\ @@ -96,68 +102,89 @@ upx: $(PROGRAMS_UPX) .PHONY: opt upx ifeq ($(HAVE_OCAMLOPT),yes) -world: all opt +world: depend.opt opt links else -world: all +world: depend all endif +#links %.opt -> % +links: + $(H)for X in $(INSTALL_PROGRAMS_LINKS_MATITAC) \ + $(INSTALL_PROGRAMS_LINKS_MATITA); do\ + ln -sf $$X.opt $$X;\ + done + $(H)ln -sf matita.opt matita + $(H)ln -sf matitac.opt matitac + +linkonly: + $(H)echo " OCAMLC matita.ml" + $(H)$(OCAMLC) $(PKGS) -linkpkg -o matita $(CMOS) matita.ml + $(H)echo " OCAMLC matitac.ml" + $(H)$(OCAMLC) $(CPKGS) -linkpkg -o matitac $(CCMOS) $(MAINCMOS) matitac.ml +.PHONY: linkonly matita: matita.ml $(LIB_DEPS) $(CMOS) - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(PKGS) -linkpkg -o $@ $(CMOS) matita.ml matita.opt: matita.ml $(LIBX_DEPS) $(CMXS) - @echo "OCAMLOPT $<" + $(H)echo " OCAMLOPT $<" $(H)$(OCAMLOPT) $(PKGS) -linkpkg -o $@ $(CMXS) matita.ml dump_moo: dump_moo.ml buildTimeConf.cmo - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(PKGS) -linkpkg -o $@ buildTimeConf.cmo $< dump_moo.opt: dump_moo.ml buildTimeConf.cmx - @echo "OCAMLOPT $<" + $(H)echo "OCAMLOPT $<" $(H)$(OCAMLOPT) $(PKGS) -linkpkg -o $@ buildTimeConf.cmx $< matitac: matitac.ml $(CLIB_DEPS) $(CCMOS) $(MAINCMOS) - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(CPKGS) -linkpkg -o $@ $(CCMOS) $(MAINCMOS) matitac.ml matitac.opt: matitac.ml $(CLIBX_DEPS) $(CCMXS) $(MAINCMXS) - @echo "OCAMLOPT $<" + $(H)echo " OCAMLOPT $<" $(H)$(OCAMLOPT) $(CPKGS) -linkpkg -o $@ $(CCMXS) $(MAINCMXS) matitac.ml matitatop: matitatop.ml $(CLIB_DEPS) $(CCMOS) - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(CPKGS) -linkpkg -o $@ toplevellib.cma $(CCMOS) $< +matitaprover: matitac + $(H)test -f $@ || ln -s $< $@ +matitaprover.opt: matitac.opt + $(H)test -f $@ || ln -s $< $@ + matitadep: matitac - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitadep.opt: matitac.opt - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitaclean: matitac - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitaclean.opt: matitac.opt - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitamake: matitac - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitamake.opt: matitac.opt - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ gragrep: matitac - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ gragrep.opt: matitac.opt - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ cicbrowser: matita - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ cicbrowser.opt: matita.opt - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitaGeneratedGui.ml matitaGeneratedGui.mli: matita.glade - $(LABLGLADECC) -embed $< > matitaGeneratedGui.ml - $(OCAMLC) $(PKGS) -i matitaGeneratedGui.ml > matitaGeneratedGui.mli + $(H)$(LABLGLADECC) -embed $< > matitaGeneratedGui.ml + $(H)rm -f matitaGeneratedGui.mli + $(H)#$(OCAMLC) $(PKGS) -i matitaGeneratedGui.ml > matitaGeneratedGui.mli .PHONY: clean clean: - rm -rf *.cma *.cmo *.cmi *.cmx *.cmxa *.a *.o \ + $(H)rm -rf *.cma *.cmo *.cmi *.cmx *.cmxa *.a *.o \ $(PROGRAMS) $(PROGRAMS_OPT) \ $(NOINST_PROGRAMS) $(NOINST_PROGRAMS_OPT) \ $(PROGRAMS_STATIC) \ @@ -166,17 +193,19 @@ clean: .PHONY: distclean distclean: clean - $(MAKE) -C dist/ clean - rm -f matitaGeneratedGui.ml matitaGeneratedGui.mli - rm -f buildTimeConf.ml - rm -f matita.glade.bak matita.gladep.bak - rm -f matita.conf.xml.sample - rm -rf .matita + $(H)$(MAKE) -C dist/ clean + $(H)rm -f matitaGeneratedGui.ml matitaGeneratedGui.mli + $(H)rm -f buildTimeConf.ml + $(H)rm -f matita.glade.bak matita.gladep.bak + $(H)rm -f matita.conf.xml.sample + $(H)rm -rf .matita TEST_DIRS = \ library \ tests \ - tests/bad_tests \ + dama \ + contribs/CoRN \ + contribs/RELATIONAL \ contribs/LAMBDA-TYPES \ contribs/PREDICATIVE-TOPOLOGY \ $(NULL) @@ -198,71 +227,67 @@ cleantests.opt: $(foreach d,$(TEST_DIRS),$(d)-cleantests-opt) # {{{ Distribution stuff -ifeq ($(HAVE_OCAMLOPT),yes) -BEST=opt -BEST_EXT=.opt -else -BEST=all -BEST_EXT= -endif - ifeq ($(DISTRIBUTED),yes) -dist_library: dist_library@library -dist_library_clean: - @echo "MATITACLEAN -system all" - $(H)./matitaclean$(BEST_EXT) \ - -system -conffile `pwd`/matita.conf.xml.build all +dist_library: dist_library@standard-library dist_library@%: - @echo "MATITAMAKE -system init" - $(H)MATITA_RT_BASE_DIR=`pwd` \ - MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" \ - ./matitamake$(BEST_EXT) -conffile `pwd`/matita.conf.xml.build \ - init $* `pwd`/$* - @echo "MATITAMAKE -system build" - $(H)MATITA_RT_BASE_DIR=`pwd` \ - MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" \ - ./matitamake$(BEST_EXT) -conffile `pwd`/matita.conf.xml.build \ - build $* + $(H)echo "MATITAMAKE init $*" + $(H)(cd $(DESTDIR) && ./matitamake init $* $(DESTDIR)/ma/$*) + $(H)echo "MATITAMAKE publish $*" + $(H)(cd $(DESTDIR) && ./matitamake publish $*) + $(H)echo "MATITAMAKE destroy $*" + $(H)(cd $(DESTDIR) && ./matitamake destroy $*) touch $@ endif +dist_pre: matitaGeneratedGui.ml matitaGeneratedGui.mli + $(MAKE) -C dist/ dist_pre + DESTDIR = $(RT_BASE_DIR) INSTALL_STUFF = \ icons/ \ + help/ \ matita.gtkrc \ matita.lang \ matita.ma.templ \ core_notation.moo \ matita.conf.xml \ - matita.conf.xml.user \ closed.xml \ gtkmathview.matita.conf.xml \ template_makefile.in \ AUTHORS \ LICENSE \ $(NULL) + ifeq ($(HAVE_OCAMLOPT),yes) -INSTALL_STUFF += $(PROGRAMS_OPT) +INSTALL_STUFF_BIN = $(INSTALL_PROGRAMS:%=%.opt) else -INSTALL_STUFF += $(PROGRAMS_BYTE) +INSTALL_STUFF_BIN = $(INSTALL_PROGRAMS) endif -install: - # install main dir and executables - install -d $(DESTDIR) +install: install_preliminaries dist_library install_conclusion + +install_preliminaries: + install -d $(DESTDIR)/ma/ cp -a $(INSTALL_STUFF) $(DESTDIR) - # install the library and corresponding scripts - if [ -d $(DESTDIR)/library ]; then rm -rf $(DESTDIR)/library; fi - cp -a .matita/xml/matita/ $(DESTDIR)/library/ - if [ -d $(DESTDIR)/ma ]; then rm -rf $(DESTDIR)/ma; fi - install -d $(DESTDIR)/ma ifeq ($(HAVE_OCAMLOPT),yes) - for p in $(PROGRAMS_BYTE); do ln -s $$p.opt $(DESTDIR)/$$p; done + install -s $(INSTALL_STUFF_BIN) $(DESTDIR) + for p in $(INSTALL_PROGRAMS); do ln -fs $$p.opt $(DESTDIR)/$$p; done +else + install $(INSTALL_STUFF_BIN) $(DESTDIR) endif - cp -a library/ $(DESTDIR)/ma/stdlib/ - cp -a contribs/ $(DESTDIR)/ma/contribs/ + for p in $(INSTALL_PROGRAMS_LINKS_MATITAC); do \ + ln -fs matitac $(DESTDIR)/$$p;\ + done + for p in $(INSTALL_PROGRAMS_LINKS_MATITA); do \ + ln -fs matita $(DESTDIR)/$$p;\ + done + cp -a library/ $(DESTDIR)/ma/standard-library + cp -a contribs/ $(DESTDIR)/ma/ + +install_conclusion: + uninstall: rm -rf $(DESTDIR) @@ -283,6 +308,14 @@ STATIC_CLIBS = \ gdome \ mysqlclient \ $(NULL) +STATIC_CLIBS_PROVER = \ + $(STATIC_CLIBS) \ + z \ + pcre \ + expat \ + xml2 \ + glib-2.0 \ + $(NULL) STATIC_EXTRA_CLIBS = PROGRAMS_STATIC = $(patsubst %,%.static,$(PROGRAMS_OPT)) PROGRAMS_UPX = $(patsubst %,%.upx,$(PROGRAMS_STATIC)) @@ -291,9 +324,9 @@ ifeq ($(HAVE_OCAMLOPT),yes) static: $(STATIC_LINK) $(PROGRAMS_STATIC) else upx: - @echo "Native code compilation is disabled" + $(H)echo "Native code compilation is disabled" static: - @echo "Native code compilation is disabled" + $(H)echo "Native code compilation is disabled" endif $(STATIC_LINK): @@ -314,16 +347,21 @@ matitac.opt.static: $(STATIC_LINK) $(CLIBX_DEPS) $(CCMXS) $(MAINCMXS) matitac.ml $(OCAMLOPT) $(CPKGS) -linkpkg -o $@ $(CCMXS) $(MAINCMXS) matitac.ml \ $(STATIC_EXTRA_CLIBS) strip $@ +matitaprover.opt.static: $(STATIC_LINK) $(CLIBX_DEPS) $(CCMXS) $(MAINCMXS) matitac.ml + $(STATIC_LINK) $(STATIC_CLIBS_PROVER) -- \ + $(OCAMLOPT) $(CPKGS) -linkpkg -o $@ $(CCMXS) $(MAINCMXS) matitac.ml \ + $(STATIC_EXTRA_CLIBS); + strip $@ matitadep.opt.static: matitac.opt.static - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitaclean.opt.static: matitac.opt.static - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ matitamake.opt.static: matitac.opt.static - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ cicbrowser.opt.static: matita.opt.static - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ cicbrowser.opt.static.upx: matita.opt.static.upx - @test -f $@ || ln -s $< $@ + $(H)test -f $@ || ln -s $< $@ %.upx: % cp $< $@ @@ -335,32 +373,46 @@ cicbrowser.opt.static.upx: matita.opt.static.upx tags: TAGS .PHONY: TAGS TAGS: - cd ..; otags -vi -r components/ matita/ + $(H)cd ..; otags -vi -r components/ matita/ #.depend: matitaGeneratedGui.ml matitaGeneratedGui.mli *.ml *.mli .PHONY: depend + depend: - $(OCAMLDEP) *.ml *.mli > .depend - -include .depend + $(H)echo " OCAMLDEP" + $(H)$(OCAMLDEP) *.ml *.mli > .depend +depend.opt: + $(H)echo " OCAMLDEP -native" + $(H)$(OCAMLDEP) -native *.ml *.mli > .depend + +ifneq ($(MAKECMDGOALS), depend) + ifneq ($(MAKECMDGOALS), depend.opt) + include .depend + endif +endif %.cmi: %.mli - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(PKGS) -c $< %.cmo %.cmi: %.ml - @echo "OCAMLC $<" + $(H)echo " OCAMLC $<" $(H)$(OCAMLC) $(PKGS) -c $< %.cmx: %.ml - @echo "OCAMLOPT $<" + $(H)echo " OCAMLOPT $<" $(H)$(OCAMLOPT) $(PKGS) -c $< %.annot: %.ml - @echo "OCAMLC -dtypes $<" + $(H)echo " OCAMLC -dtypes $<" $(H)$(OCAMLC) -dtypes $(PKGS) -c $< $(CMOS): $(LIB_DEPS) $(CMOS:%.cmo=%.cmx): $(LIBX_DEPS) +deps.ps: deps.dot + dot -Tps -o $@ $< +deps.dot: .depend + ./dep2dot.rb < $< | tred > $@ + ifeq ($(MAKECMDGOALS),all) $(CMOS:%.cmo=%.cmi): $(LIB_DEPS) endif