X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2FMakefile;h=2dc38c3f1332b00489f42ee15a742fdc9b139863;hb=0acf1d43e970dac59a12593d1dd56f46efbdd7e7;hp=d5db4358232ea5a304cf7a40e878eabf3bdef8cc;hpb=02bf53992de07d18bcd494bcb83d27a794bd6c85;p=helm.git diff --git a/matita/Makefile b/matita/Makefile index d5db43582..2dc38c3f1 100644 --- a/matita/Makefile +++ b/matita/Makefile @@ -53,17 +53,21 @@ MAINCMOS = \ matitadep.cmo \ matitaclean.cmo \ matitamake.cmo \ + gragrep.cmo \ $(NULL) -PROGRAMS_BYTE = matita matitac cicbrowser matitadep matitaclean matitamake dump_moo +PROGRAMS_BYTE = \ + matita matitac cicbrowser matitadep matitaclean matitamake PROGRAMS = $(PROGRAMS_BYTE) matitatop PROGRAMS_OPT = $(patsubst %,%.opt,$(PROGRAMS_BYTE)) +NOINST_PROGRAMS = dump_moo gragrep +NOINST_PROGRAMS_OPT = $(patsubst %,%.opt,$(EXTRA_PROGRAMS)) .PHONY: all -all: $(PROGRAMS) +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;\ @@ -80,8 +84,6 @@ all: $(PROGRAMS) # coq.moo.opt: library/legacy/coq.ma matitac.opt # ./matitac.opt $(MATITA_FLAGS) $< -ifeq ($(HAVE_OCAMLOPT),yes) - CMXS = $(patsubst %.cmo,%.cmx,$(CMOS)) CCMXS = $(patsubst %.cmo,%.cmx,$(CCMOS)) MAINCMXS = $(patsubst %.cmo,%.cmx,$(MAINCMOS)) @@ -89,76 +91,89 @@ LIB_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "byte" -format "%d LIBX_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "native" -format "%d/%a" $(MATITA_REQUIRES)) CLIB_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "byte" -format "%d/%a" $(MATITA_CREQUIRES)) CLIBX_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "native" -format "%d/%a" $(MATITA_CREQUIRES)) -.PHONY: opt -opt: $(PROGRAMS_OPT) coq.moo.opt -.PHONY: upx -upx: $(PROGRAMS_UPX) coq.moo.opt +opt: $(PROGRAMS_OPT) $(NOINST_PROGRAMS_OPT) +upx: $(PROGRAMS_UPX) +.PHONY: opt upx +ifeq ($(HAVE_OCAMLOPT),yes) +world: depend.opt opt else - -opt: - @echo "Native code compilation is disabled" - +world: depend all endif 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) $< 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 + $(H)test -f $@ || ln -s $< $@ +gragrep.opt: matitac.opt + $(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 \ - $(PROGRAMS) \ - $(PROGRAMS_OPT) \ + $(H)rm -rf *.cma *.cmo *.cmi *.cmx *.cmxa *.a *.o \ + $(PROGRAMS) $(PROGRAMS_OPT) \ + $(NOINST_PROGRAMS) $(NOINST_PROGRAMS_OPT) \ $(PROGRAMS_STATIC) \ $(PROGRAMS_UPX) \ $(NULL) +.PHONY: distclean +distclean: clean + $(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 \ @@ -173,9 +188,9 @@ tests.opt: $(foreach d,$(TEST_DIRS),$(d)-test-opt) cleantests: $(foreach d,$(TEST_DIRS),$(d)-cleantests) cleantests.opt: $(foreach d,$(TEST_DIRS),$(d)-cleantests-opt) -%-test: matitac matitadep matitaclean coq.moo +%-test: matitac matitadep matitaclean -cd $* && make -k clean all -%-test-opt: matitac.opt matitadep.opt matitaclean.opt coq.moo.opt +%-test-opt: matitac.opt matitadep.opt matitaclean.opt -cd $* && make -k clean.opt opt %-cleantests: matitaclean -cd $* && make clean @@ -184,32 +199,24 @@ cleantests.opt: $(foreach d,$(TEST_DIRS),$(d)-cleantests-opt) # {{{ Distribution stuff -ifeq ($(wildcard matitac.opt),matitac.opt) -BEST=opt -else -BEST=all +ifeq ($(DISTRIBUTED),yes) + +dist_library: dist_library@standard-library +dist_library@%: + $(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 -stdlib: - @echo "MATITACLEAN all" - $(H)./matitaclean -system -conffile `pwd`/matita.conf.xml.build all - @echo "MATITAMAKE init" - $(H)MATITA_RT_BASE_DIR=`pwd` \ - MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" \ - ./matitamake -conffile `pwd`/matita.conf.xml.build \ - init build_stdlib `pwd`/library - @echo "MATITAMAKE build" - $(H)MATITA_RT_BASE_DIR=`pwd` \ - MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" \ - ./matitamake -conffile `pwd`/matita.conf.xml.build \ - build build_stdlib - -# MATITA_RT_BASE_DIR=`pwd` \ - $(MAKE) MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" -C library/ $(BEST) - -DEST = @RT_BASE_DIR@ +DESTDIR = $(RT_BASE_DIR) INSTALL_STUFF = \ icons/ \ + help/ \ matita.gtkrc \ matita.lang \ matita.ma.templ \ @@ -218,18 +225,43 @@ INSTALL_STUFF = \ closed.xml \ gtkmathview.matita.conf.xml \ template_makefile.in \ - library/ \ - $(PROGRAMS_BYTE) \ + AUTHORS \ + LICENSE \ $(NULL) + +INSTALL_PROGRAMS= matita matitac +INSTALL_PROGRAMS_LINKS_MATITA= cicbrowser +INSTALL_PROGRAMS_LINKS_MATITAC= matitadep matitamake matitaclean ifeq ($(HAVE_OCAMLOPT),yes) -INSTALL_STUFF += $(PROGRAMS_OPT) +INSTALL_STUFF_BIN = $(INSTALL_PROGRAMS:%=%.opt) +else +INSTALL_STUFF_BIN = $(INSTALL_PROGRAMS) endif -install: - install -d $(DEST) - cp -a .matita/ - cp -a $(INSTALL_STUFF) $(DEST) +install: install_preliminaries dist_library install_conclusion + +install_preliminaries: + install -d $(DESTDIR)/ma/ + cp -a $(INSTALL_STUFF) $(DESTDIR) +ifeq ($(HAVE_OCAMLOPT),yes) + 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 + 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) STATIC_LINK = dist/static_link/static_link # for matita @@ -253,12 +285,12 @@ PROGRAMS_STATIC = $(patsubst %,%.static,$(PROGRAMS_OPT)) PROGRAMS_UPX = $(patsubst %,%.upx,$(PROGRAMS_STATIC)) ifeq ($(HAVE_OCAMLOPT),yes) -static: $(STATIC_LINK) $(PROGRAMS_STATIC) coq.moo.opt +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): @@ -280,23 +312,15 @@ matitac.opt.static: $(STATIC_LINK) $(CLIBX_DEPS) $(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 $< $@ - -.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 + $(H)test -f $@ || ln -s $< $@ %.upx: % cp $< $@ @@ -308,27 +332,36 @@ distclean: clean 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)