H=@
-ifeq ($(origin OCAMLPATH), undefined)
- OCAMLFIND = OCAMLPATH=$(HOME)/svn/claudio/components/METAS ocamlfind
-else
- OCAMLFIND = ocamlfind
-endif
+CALLMAKE = $(MAKE) --no-print-directory
-RELISE = $(MAIN:%=%_$(shell cat MakeVersion))
+OCAMLPATH ?= `readlink -f -n ./matita/components/METAS`
+OCAMLFIND = OCAMLPATH=$(OCAMLPATH) ocamlfind
-DOWNDIR = ../../www/lambdadelta/download
+CAMLP = -pp \"camlp5o pa_macro.cmo $(CAMLPOPTIONS)\"
-DIRECTORIES = $(addprefix $(SRC)/,$(shell cat $(SRC)/Make))
-
-INCLUDES = $(DIRECTORIES:%=-I %)
-
-OCAMLDEP = $(OCAMLFIND) ocamldep -native $(INCLUDES)
-OCAMLOPT = $(OCAMLFIND) opt $(OCAMLOPTIONS) -linkpkg -package "$(REQUIRES)" $(INCLUDES)
-OCAMLLEX = ocamllex.opt
+OCAMLDEP = $(OCAMLFIND) ocamldep $(CAMLP)
+OCAMLOPT = $(OCAMLFIND) ocamlopt $(CAMLP) $(OCAMLOPTIONS) -linkpkg -package \"$(REQUIRES)\"
+OCAMLC = $(OCAMLFIND) ocamlc $(CAMLP) $(OCAMLOPTIONS) -linkpkg -package \"$(REQUIRES)\"
OCAMLYACC = ocamlyacc -v
-TAR = tar -czf etc/$(MAIN:%=%.tgz)
-
-define DIR_TEMPLATE
- MODULES += $$(addprefix $(1)/,$$(shell cat $(1)/Make))
-endef
-
-define MOD_TEMPLATE
- SOURCES += $$(if $$(wildcard $(1).ml[yi]),$(1).mli $(1).ml,$(1).ml)
- CMXS += $(1).cmx
- CLEAN += $(1).cmi $(1).cmx $(1).o
- CLEAN += $$(if $$(wildcard $(1).ml[ly]),$(1).ml,)
- CLEAN += $$(if $$(wildcard $(1).mly),$(1).mli $(1).output,)
- KEEP += $$(if $$(wildcard $(1).mly),$(1).mly,\
- $$(if $$(wildcard $(1).mll),$(1).mll,\
- $$(if $$(wildcard $(1).mli),$(1).mli $(1).ml,$(1).ml)\
- )\
- )
-endef
-
-define INCLUDE_TEMPLATE
- ifeq ($(MAKECMDGOALS), $(1))
- include .depend.opt
- endif
-endef
-
-$(foreach DIR, $(DIRECTORIES), $(eval $(call DIR_TEMPLATE, $(DIR))))
-$(foreach MOD, $(MODULES), $(eval $(call MOD_TEMPLATE, $(MOD))))
+OCAMLLEX = ocamllex.opt
-OBJECTS = $(patsubst %.ml,%.cmx,$(SOURCES:%.mli=%.cmi))
-CLEAN += $(MAIN).opt
+BUILDCMDS = -ocamldep "$(OCAMLDEP)" \
+ -ocamlc "$(OCAMLC)" \
+ -ocamlopt "$(OCAMLOPT)" \
+ -ocamlyacc "$(OCAMLYACC)" \
+ -ocamllex "$(OCAMLLEX)"
-all opt: .depend.opt
- @$(MAKE) --no-print-directory $(MAIN).opt
+all: opt byte
-$(MAIN).opt: $(OBJECTS)
- @echo " OCAMLOPT -o $(MAIN).opt"
- $(H)$(OCAMLOPT) -o $(MAIN).opt $(CMXS)
+opt:
+ @echo " OCAMLBUILD $(EXEC).native"
+ $(H)ocamlbuild $(BUILDCMDS) $(BUILDOPTIONS) $(EXEC).native
-.depend.opt: $(SOURCES)
- @echo " OCAMLDEP -native"
- $(H)$(OCAMLDEP) $^ > .depend.opt
+byte:
+ @echo " OCAMLBUILD $(EXEC).byte"
+ $(H)ocamlbuild $(BUILDCMDS) $(BUILDOPTIONS) $(EXEC).byte
clean:
- @echo " CLEAN . $(SRC)"
+ @echo " OCAMLBUILD -clean"
+# $(H)ocamlbuild -clean
+ $(H)$(RM) -r _build $(EXEC).native $(EXEC).byte
$(H)find -name "*~" | xargs $(RM) $(CLEAN)
-relise: clean
- @echo " RELISE $(RELISE)"
- $(H)mkdir -p $(RELISE)
- $(H)$(foreach FILE, $(shell cat Make), cp --parents $(FILE) $(RELISE);)
- $(H)tar -czf etc/$(RELISE).tar.gz $(RELISE)
- $(H)scp etc/$(RELISE).tar.gz $(DOWNDIR)
-
-tgz: clean
- @echo " TAR -czf $(MAIN:%=%.tgz) . $(DIRECTORIES)"
- $(H)find -name "Make*" | xargs $(TAR) $(KEEP)
-
-etc:
- @echo " MKDIR etc"
- $(H)mkdir etc
-
-%.ml %.mli: %.mly
- @echo " OCAMLYACC $<"
- $(H)$(OCAMLYACC) $<
-%.ml: %.mll
- @echo " OCAMLLEX $<"
- $(H)$(OCAMLLEX) $<
-%.cmi: %.mli
- @echo " OCAMLOPT $<"
- $(H)$(OCAMLOPT) -c $<
-%.cmx: %.ml
- @echo " OCAMLOPT $<"
- $(H)$(OCAMLOPT) -c $<
-
-TAGS += all opt $(MAIN).opt
-
-$(foreach TAG, $(TAGS), $(eval $(call INCLUDE_TEMPLATE, $(TAG))))
+.PHONY: all opt byte clean $(TARGETS)
+
+#RELISE = $(EXEC:%=%_$(shell cat MakeVersion))
+#
+#DOWNDIR = ../../www/lambdadelta/download
+#
+#TAR = tar -czf etc/$(EXEC:%=%.tgz)
+#
+#relise: clean
+# @echo " RELISE $(RELISE)"
+# $(H)mkdir -p $(RELISE)
+# $(H)$(foreach FILE, $(shell cat Make), cp --parents $(FILE) $(RELISE);)
+# $(H)tar -czf etc/$(RELISE).tar.gz $(RELISE)
+# $(H)scp etc/$(RELISE).tar.gz $(DOWNDIR)
+#
+#tgz: clean
+# @echo " TAR -czf $(EXEC:%=%.tgz) . $(DIRECTORIES)"
+# $(H)find -name "Make*" | xargs $(TAR) $(KEEP)
+#
+#etc:
+# @echo " MKDIR etc"
+# $(H)mkdir -p etc