OCAMLPATH = ../ocaml/METAS/ OCAMLFIND = OCAMLPATH=$(OCAMLPATH):$$OCAMLPATH @OCAMLFIND@ CAMLP4O = @CAMLP4O@ LABLGLADECC = @LABLGLADECC@ REQUIRES = @FINDLIB_REQUIRES@ CREQUIRES = @FINDLIB_CREQUIRES@ HAVE_OCAMLOPT = @HAVE_OCAMLOPT@ OCAML_FLAGS = -pp $(CAMLP4O) PKGS = -package "$(REQUIRES)" CPKGS = -package "$(CREQUIRES)" OCAML_THREADS_FLAGS = -thread OCAML_DEBUG_FLAGS = -g 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) # objects for matita (GTK GUI) CMOS = \ buildTimeConf.cmo \ matitaLog.cmo \ matitaTypes.cmo \ matitaMisc.cmo \ matitaDb.cmo \ matitaSync.cmo \ matitaDisambiguator.cmo \ matitaEngine.cmo \ matitaScript.cmo \ matitaGeneratedGui.cmo \ matitaGtkMisc.cmo \ matitaGui.cmo \ matitaMathView.cmo # objects for matitac (batch compiler) CCMOS = \ buildTimeConf.cmo \ matitaLog.cmo \ matitaTypes.cmo \ matitaMisc.cmo \ matitaDb.cmo \ matitaSync.cmo \ matitaDisambiguator.cmo \ matitaEngine.cmo all: matita matitac cicbrowser updater: $(LIB_DEPS) $(OCAMLC) $(PKGS) -linkpkg -o $@ updater.ml ifeq ($(HAVE_OCAMLOPT),yes) CMXS = $(patsubst %.cmo,%.cmx,$(CMOS)) CCMXS = $(patsubst %.cmo,%.cmx,$(CCMOS)) LIB_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "byte" -format "%d/%a" $(REQUIRES)) LIBX_DEPS := $(shell $(OCAMLFIND) query -recursive -predicates "native" -format "%d/%a" $(REQUIRES)) opt: matita.opt matitac.opt cicbrowser.opt else opt: @echo "Native code compilation is disabled" endif matita: $(LIB_DEPS) $(CMOS) matita.ml $(OCAMLC) $(PKGS) -linkpkg -o $@ $(CMOS) matita.ml matita.opt: $(LIBX_DEPS) $(CMXS) matita.ml $(OCAMLOPT) $(PKGS) -linkpkg -o $@ $(CMXS) matita.ml matitac: $(LIB_DEPS) $(CCMOS) matitac.ml $(OCAMLC) $(CPKGS) -linkpkg -o $@ $(CCMOS) matitac.ml matitac.opt: $(LIBX_DEPS) $(CCMXS) matitac.ml $(OCAMLOPT) $(CPKGS) -linkpkg -o $@ $(CCMXS) matitac.ml cicbrowser: matita @test -f $@ || ln -s $< $@ cicbrowser.opt: matita.opt @test -f $@ || ln -s $< $@ matitaGeneratedGui.ml matitaGeneratedGui.mli: matita.glade $(LABLGLADECC) -embed $< > matitaGeneratedGui.ml $(OCAMLC) $(PKGS) -i matitaGeneratedGui.ml > matitaGeneratedGui.mli %.cmi: %.mli $(OCAMLC) $(PKGS) -c $< %.cmo %.cmi: %.ml $(OCAMLC) $(PKGS) -c $< %.cmx: %.ml $(OCAMLOPT) $(PKGS) -c $< %.annot: %.ml $(OCAMLC) -dtypes $(PKGS) -c $< clean: rm -rf *.cma *.cmo *.cmi *.cmx *.cmxa *.a *.o \ matita matita.opt matitac matitac.opt \ cicbrowser cicbrowser.opt distclean: clean rm -f matitaGeneratedGui.ml matitaGeneratedGui.mli rm -f config.log config.status Makefile buildTimeConf.ml rm -f matita.glade.bak matita.gladep.bak rm -rf autom4te.cache/ tests: matita @scripts/do_tests.sh ./matitac /dev/null tests/*.ma tests.opt: matitac.opt @scripts/do_tests.sh ./matitac.opt /dev/null tests/*.ma .PHONY: tests tests.opt tags: TAGS .PHONY: TAGS TAGS: cd ..; otags -vi -r ocaml/ matita/ #.depend: matitaGeneratedGui.ml matitaGeneratedGui.mli *.ml *.mli depend: $(OCAMLDEP) *.ml *.mli > .depend include .depend .PHONY: all opt clean distclean depend $(CMOS): $(LIB_DEPS) $(CMOS:%.cmo=%.cmx): $(LIBX_DEPS) ifeq ($(MAKECMDGOALS),all) $(CMOS:%.cmo=%.cmi): $(LIB_DEPS) endif ifeq ($(MAKECMDGOALS),) $(CMOS:%.cmo=%.cmi): $(LIB_DEPS) endif ifeq ($(MAKECMDGOALS),opt) $(CMOS:%.cmo=%.cmi): $(LIBX_DEPS) endif