]> matita.cs.unibo.it Git - helm.git/blob - helm/software/lambda-delta/Makefile.common
xml: first ld to xml stylesheets
[helm.git] / helm / software / lambda-delta / Makefile.common
1 H=@
2
3 STATIC = http://helm.cs.unibo.it/lambda-delta/static
4
5 DIRECTORIES = $(shell cat Make)
6
7 INCLUDES = $(DIRECTORIES:%=-I %) 
8
9 OCAMLDEP  = ocamlfind ocamldep -native $(INCLUDES)
10 OCAMLOPT  = ocamlfind opt -linkpkg -package "$(REQUIRES)" $(INCLUDES)
11 OCAMLLEX  = ocamllex.opt
12 OCAMLYACC = ocamlyacc -v
13 XMLLINT   = xmllint --noout
14 XSLT      = xsltproc
15 TAR       = tar -czf $(MAIN:%=%.tgz)
16
17 define DIR_TEMPLATE
18    MODULES += $$(addprefix $(1)/,$$(shell cat $(1)/Make))
19 endef
20
21 define MOD_TEMPLATE
22    SOURCES += $$(if $$(wildcard $(1).ml[yi]),$(1).mli $(1).ml,$(1).ml)  
23    CMXS    += $(1).cmx
24    CLEAN   += $(1).cmi $(1).cmx $(1).o 
25    CLEAN   += $$(if $$(wildcard $(1).ml[ly]),$(1).ml,)
26    CLEAN   += $$(if $$(wildcard $(1).mly),$(1).mli $(1).output,)
27    KEEP    += $$(if $$(wildcard $(1).mly),$(1).mly,\
28                $$(if $$(wildcard $(1).mll),$(1).mll,\
29                 $$(if $$(wildcard $(1).mli),$(1).mli $(1).ml,$(1).ml)\
30                )\
31               )
32 endef
33
34 define INCLUDE_TEMPLATE
35    ifeq ($(MAKECMDGOALS), $(1))
36       include .depend.opt
37    endif
38 endef
39
40 $(foreach DIR, $(DIRECTORIES), $(eval $(call DIR_TEMPLATE, $(DIR))))
41 $(foreach MOD, $(MODULES), $(eval $(call MOD_TEMPLATE, $(MOD))))
42
43 OBJECTS = $(patsubst %.ml,%.cmx,$(SOURCES:%.mli=%.cmi))
44 CLEAN += $(MAIN).opt
45
46 all opt: .depend.opt
47         @$(MAKE) --no-print-directory $(MAIN).opt
48
49 $(MAIN).opt: $(OBJECTS)
50         @echo "  OCAMLOPT -o $(MAIN).opt"
51         $(H)$(OCAMLOPT) -o $(MAIN).opt $(CMXS)
52
53 .depend.opt: $(SOURCES) 
54         @echo "  OCAMLDEP -native"
55         $(H)$(OCAMLDEP) $^ > .depend.opt
56
57 clean:
58         @echo "  CLEAN . $(DIRECTORIES)"
59         $(H)find -name "*~" | xargs $(RM) $(CLEAN)
60
61 lint: $(XMLS)
62         @echo XMLLINT --valid
63         $(H)$(XMLLINT) --valid $^ 
64
65 tgz: clean
66         @echo "  TAR -czf $(MAIN:%=%.tgz) . $(DIRECTORIES)" 
67         $(H)find -name "Make*" | xargs $(TAR) $(KEEP)
68
69 %.ml %.mli: %.mly
70         @echo "  OCAMLYACC $<"
71         $(H)$(OCAMLYACC) $<
72 %.ml: %.mll
73         @echo "  OCAMLLEX $<"
74         $(H)$(OCAMLLEX) $<
75 %.cmi: %.mli
76         @echo "  OCAMLOPT $<"
77         $(H)$(OCAMLOPT) -c $<
78 %.cmx: %.ml
79         @echo "  OCAMLOPT $<"
80         $(H)$(OCAMLOPT) -c $<
81
82 TAGS += $(MAIN).opt
83
84 $(foreach TAG, $(TAGS), $(eval $(call INCLUDE_TEMPLATE, $(TAG))))