]> matita.cs.unibo.it Git - helm.git/blob - matita/components/Makefile
43503fe266e46144383967dfe4c327264a5d1f27
[helm.git] / matita / components / Makefile
1 H=@
2 export SHELL=/bin/bash
3
4 include ../Makefile.defs
5
6 # Warning: the modules must be in compilation order
7 NULL =
8 MODULES =                       \
9         extlib                  \
10         xml                     \
11         hgdome                  \
12         registry                \
13         hmysql                  \
14         syntax_extensions       \
15         thread                  \
16         xmldiff                 \
17         urimanager              \
18         logger                  \
19         getter                  \
20         cic                     \
21         cic_proof_checking      \
22         cic_acic                \
23         cic_exportation         \
24         metadata                \
25         library                 \
26         ng_kernel               \
27         acic_content            \
28         grafite                 \
29         disambiguation          \
30         ng_kernel               \
31         ng_refiner              \
32         ng_disambiguation       \
33         ng_cic_content          \
34         ng_paramodulation       \
35         ng_library              \
36         content_pres            \
37         lexicon                 \
38         grafite_parser          \
39         ng_tactics              \
40         grafite_engine          \
41         $(NULL)
42
43 METAS = $(MODULES:%=METAS/META.helm-%)
44
45 ifeq ($(DISTRIBUTED),no)
46         MODULES+=binaries
47 endif
48
49 all: metas $(MODULES:%=rec@all@%) 
50 opt: metas syntax-extensions $(MODULES:%=rec@opt@%)
51
52 ifeq ($(HAVE_OCAMLOPT),yes)
53 world: opt
54 else
55 world: all
56 endif
57 syntax-extensions:
58         $(H)$(MAKE) -C syntax_extensions depend
59         $(H)$(MAKE) -C syntax_extensions
60 depend: syntax-extensions $(MODULES:%=rec@depend@%)
61 depend.opt: syntax-extensions $(MODULES:%=rec@depend.opt@%)
62 install-arch: $(MODULES:%=rec@install@%)
63 install-indep:
64 uninstall: $(MODULES:%=rec@uninstall@%)
65 clean: $(MODULES:%=rec@clean@%) clean_metas
66
67 .stats: $(MODULES:%=rec@.stats@%)
68         $(H)(for m in $(MODULES); do echo -n "$$m:"; cat $$m/.stats; done) \
69          | sort -t : -k 2 -n -r > .stats
70
71 rec@%:
72         $(H)$(MAKE) -C $(word 2, $(subst @, ,$*)) $(word 1, $(subst @, ,$*))
73
74 EXTRA_DIST_CLEAN = \
75         libraries-clusters.ps   \
76         libraries-clusters.pdf  \
77         libraries-ext.ps        \
78         libraries.ps            \
79         .dep.dot                \
80         .extdep.dot             \
81         .clustersdep.dot        \
82         $(NULL)
83
84 distclean: clean clean_metas
85         $(H)rm -f $(METAS)
86         $(H)rm -f configure config.log config.cache config.status
87         $(H)rm -f $(EXTRA_DIST_CLEAN)
88
89 .PHONY: all opt world metas depend install uninstall clean clean_metas distclean
90
91 METAS/META.helm-%: METAS/meta.helm-%.src
92         $(H)cp $< $@ && echo "directory=\"$(shell pwd)/$*\"" >> $@
93
94 SIMPLIFYDEPS = ../daemons/graphs/tools/simplify_deps/simplify_deps
95 $(SIMPLIFYDEPS):
96         $(H)$(MAKE) -C $(dir $(SIMPLIFYDEPS))
97
98 .PHONY: .dep.dot
99 .dep.dot: $(SIMPLIFYDEPS)
100         $(H)echo "digraph G {" > $@
101         $(H)echo "   rankdir = TB ;" >> $@
102         $(H)for i in $(MODULES); do \
103                 $(OCAMLFIND) query helm-$$i -recursive -p-format | \
104                 grep helm | \
105                 sed "s/^helm-/ \"$$i\" -> \"/g" | \
106                 sed "s/$$/\";/g" >> $@ ; \
107         done
108         $(H)mv $@ $@.old ; $(SIMPLIFYDEPS) < $@.old > $@ ; rm $@.old
109         $(H)echo "}" >> $@
110
111 .PHONY: .alldep.dot
112 .alldep.dot:
113         $(H)echo "digraph G {" > $@
114         $(H)echo "   rankdir = TB ;" >> $@
115         $(H)for i in $(MODULES); do \
116                 $(OCAMLFIND) query helm-$$i -recursive -p-format | \
117                         grep -v "pxp-" | \
118                         sed "s/^pxp/pxp[-*]/g" | \
119                         sed "s/^/ \"helm-$$i\" -> \"/g" | \
120                         sed "s/$$/\";/g" >> $@ ; \
121         done
122         $(H)mv $@ $@.old ; \
123                 ./simplify_deps/simplify_deps.opt < $@.old > $@ ; \
124                 rm $@.old
125         $(H)for i in $(MODULES); do \
126                 echo "\"helm-$$i\" [shape=box,style=filled,fillcolor=yellow];"\
127                         >> $@ ; \
128         done
129         $(H)echo "}" >> $@
130
131 .extdep.dot: .dep.dot
132         $(H)STATS/patch_deps.sh $< $@
133 .clustersdep.dot: .dep.dot
134         $(H)USE_CLUSTERS=yes STATS/patch_deps.sh $< $@
135
136 libraries.ps: .dep.dot
137         $(H)dot -Tps -o $@ $<
138 libraries-ext.ps: .extdep.dot
139         $(H)dot -Tps -o $@ $<
140 libraries-clusters.ps: .clustersdep.dot
141         $(H)dot -Tps -o $@ $<
142 libraries-complete.ps: .alldep.dot
143         $(H)dot -Tps -o $@ $<
144
145 ps: libraries.ps libraries-ext.ps libraries-clusters.ps
146
147 tags: TAGS
148 .PHONY: TAGS
149 TAGS:
150         $(H)otags -vi -r .
151
152 metas: $(filter-out METAS/META.helm-binaries, $(METAS))