2 OCAMLPATH ?= /home/fguidi/svn/matita_patched/components/METAS
3 OCAMLFIND = OCAMLPATH=$(OCAMLPATH) ocamlfind
5 RELISE = $(MAIN:%=%_$(shell cat MakeVersion))
7 DOWNDIR = ../../www/lambdadelta/download
9 DIRECTORIES = $(addprefix $(SRC)/,$(shell cat $(SRC)/Make))
11 INCLUDES = $(DIRECTORIES:%=-I %)
13 CAMLP = -pp "camlp5o pa_macro.cmo $(CAMLPOPTIONS)"
15 CAMLPOPTIONS = $(F:%=-D%)
17 OCAMLDEP = $(OCAMLFIND) ocamldep $(CAMLP) $(INCLUDES)
18 OCAMLOPT = $(OCAMLFIND) ocamlopt $(CAMLP) $(OCAMLOPTIONS) -linkpkg -package "$(REQUIRES)" $(INCLUDES)
19 OCAMLC = $(OCAMLFIND) ocamlc $(CAMLP) $(OCAMLOPTIONS) -linkpkg -package "$(REQUIRES)" $(INCLUDES)
20 OCAMLLEX = ocamllex.opt
21 OCAMLYACC = ocamlyacc -v
22 TAR = tar -czf etc/$(MAIN:%=%.tgz)
24 CALLMAKE = $(MAKE) --no-print-directory
27 MODULES += $$(addprefix $(1)/,$$(shell cat $(1)/Make))
31 SOURCES += $$(if $$(wildcard $(1).ml[yi]),$(1).mli $(1).ml,$(1).ml)
34 CLEAN += $(1).cmi $(1).cmx $(1).o $(1).cmo
35 CLEAN += $$(if $$(wildcard $(1).ml[ly]),$(1).ml,)
36 CLEAN += $$(if $$(wildcard $(1).mly),$(1).mli $(1).output,)
37 KEEP += $$(if $$(wildcard $(1).mly),$(1).mly,\
38 $$(if $$(wildcard $(1).mll),$(1).mll,\
39 $$(if $$(wildcard $(1).mli),$(1).mli $(1).ml,$(1).ml)\
44 define INCLUDE_O_TEMPLATE
45 ifeq ($(MAKECMDGOALS), $(1))
48 $$(H)$(OCAMLOPT) -c $$<
54 define INCLUDE_B_TEMPLATE
55 ifeq ($(MAKECMDGOALS), $(1))
64 $(foreach DIR, $(DIRECTORIES), $(eval $(call DIR_TEMPLATE, $(DIR))))
65 $(foreach MOD, $(MODULES), $(eval $(call MOD_TEMPLATE, $(MOD))))
66 O_OBJECTS = $(patsubst %.ml,%.cmx,$(SOURCES:%.mli=%.cmi))
67 B_OBJECTS = $(patsubst %.ml,%.cmo,$(SOURCES:%.mli=%.cmi))
71 $(MAIN).opt: $(O_OBJECTS)
72 @echo " OCAMLOPT -o $(MAIN).opt"
73 $(H)$(OCAMLOPT) -o $(MAIN).opt $(CMXS)
75 $(MAIN).byte: $(B_OBJECTS)
76 @echo " OCAMLC -o $(MAIN).byte"
77 $(H)$(OCAMLC) -o $(MAIN).byte $(CMOS)
79 .depend.opt: $(SOURCES)
80 @echo " OCAMLDEP -native"
81 $(H)$(OCAMLDEP) -native $^ > .depend.opt
83 .depend.byte: $(SOURCES)
84 @echo " OCAMLDEP -byte"
85 $(H)$(OCAMLDEP) $^ > .depend.byte
88 @echo " CLEAN . $(SRC)"
89 $(H)find -name "*~" | xargs $(RM) $(CLEAN)
92 @echo " RELISE $(RELISE)"
93 $(H)mkdir -p $(RELISE)
94 $(H)$(foreach FILE, $(shell cat Make), cp --parents $(FILE) $(RELISE);)
95 $(H)tar -czf etc/$(RELISE).tar.gz $(RELISE)
96 $(H)scp etc/$(RELISE).tar.gz $(DOWNDIR)
99 @echo " TAR -czf $(MAIN:%=%.tgz) . $(DIRECTORIES)"
100 $(H)find -name "Make*" | xargs $(TAR) $(KEEP)
107 @echo " OCAMLYACC $<"
114 $(H)$(OCAMLOPT) -c $<
119 O_TAGS += opt $(MAIN).opt
121 B_TAGS += byte $(MAIN).byte
123 $(foreach TAG, $(O_TAGS), $(eval $(call INCLUDE_O_TEMPLATE, $(TAG))))
125 $(foreach TAG, $(B_TAGS), $(eval $(call INCLUDE_B_TEMPLATE, $(TAG))))