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