]> matita.cs.unibo.it Git - helm.git/blobdiff - components/Makefile
branch for universe
[helm.git] / components / Makefile
diff --git a/components/Makefile b/components/Makefile
new file mode 100644 (file)
index 0000000..01dabc9
--- /dev/null
@@ -0,0 +1,149 @@
+H=@
+export SHELL=/bin/bash
+
+include ../Makefile.defs
+
+# Warning: the modules must be in compilation order
+NULL =
+MODULES =                      \
+       extlib                  \
+       xml                     \
+       hgdome                  \
+       registry                \
+       hmysql                  \
+       syntax_extensions \
+       thread                  \
+       xmldiff                 \
+       urimanager              \
+       logger                  \
+       getter                  \
+       cic                     \
+       cic_proof_checking      \
+       cic_acic                \
+       cic_exportation         \
+       metadata                \
+       library                 \
+       acic_content            \
+       grafite                 \
+       content_pres            \
+       cic_unification         \
+       whelp                   \
+       tactics                 \
+       acic_procedural         \
+       cic_disambiguation      \
+       lexicon                 \
+       grafite_engine          \
+       grafite_parser          \
+       tptp_grafite            \
+       $(NULL)
+
+METAS = $(MODULES:%=METAS/META.helm-%)
+
+ifeq ($(DISTRIBUTED),no)
+       MODULES+=binaries
+endif
+
+all: metas $(MODULES:%=rec@all@%) 
+opt: metas syntax-extensions $(MODULES:%=rec@opt@%)
+
+ifeq ($(HAVE_OCAMLOPT),yes)
+world: opt
+else
+world: all
+endif
+syntax-extensions:
+       $(H)$(MAKE) -C syntax_extensions depend
+       $(H)$(MAKE) -C syntax_extensions
+depend: syntax-extensions $(MODULES:%=rec@depend@%)
+depend.opt: syntax-extensions $(MODULES:%=rec@depend.opt@%)
+install-arch: $(MODULES:%=rec@install@%)
+install-indep:
+uninstall: $(MODULES:%=rec@uninstall@%)
+clean: $(MODULES:%=rec@clean@%) clean_metas
+
+.stats: $(MODULES:%=rec@.stats@%)
+       $(H)(for m in $(MODULES); do echo -n "$$m:"; cat $$m/.stats; done) \
+        | sort -t : -k 2 -n -r > .stats
+
+rec@%:
+       $(H)$(MAKE) -C $(word 2, $(subst @, ,$*)) $(word 1, $(subst @, ,$*))
+
+EXTRA_DIST_CLEAN = \
+       libraries-clusters.ps   \
+       libraries-clusters.pdf  \
+       libraries-ext.ps        \
+       libraries.ps            \
+       .dep.dot                \
+       .extdep.dot             \
+       .clustersdep.dot        \
+       $(NULL)
+
+distclean: clean clean_metas
+       $(H)rm -f $(METAS)
+       $(H)rm -f configure config.log config.cache config.status
+       $(H)rm -f $(EXTRA_DIST_CLEAN)
+
+.PHONY: all opt world metas depend install uninstall clean clean_metas distclean
+
+METAS/META.helm-%: METAS/meta.helm-%.src
+       $(H)cp $< $@ && echo "directory=\"$(shell pwd)/$*\"" >> $@
+
+SIMPLIFYDEPS = ../daemons/graphs/tools/simplify_deps/simplify_deps
+$(SIMPLIFYDEPS):
+       $(H)$(MAKE) -C $(dir $(SIMPLIFYDEPS))
+
+.PHONY: .dep.dot
+.dep.dot: $(SIMPLIFYDEPS)
+       $(H)echo "digraph G {" > $@
+       $(H)echo "   rankdir = TB ;" >> $@
+       $(H)for i in $(MODULES); do \
+               $(OCAMLFIND) query helm-$$i -recursive -p-format | \
+               grep helm | \
+               sed "s/^helm-/ \"$$i\" -> \"/g" | \
+               sed "s/$$/\";/g" >> $@ ; \
+       done
+       $(H)mv $@ $@.old ; $(SIMPLIFYDEPS) < $@.old > $@ ; rm $@.old
+       $(H)echo "}" >> $@
+
+.PHONY: .alldep.dot
+.alldep.dot:
+       $(H)echo "digraph G {" > $@
+       $(H)echo "   rankdir = TB ;" >> $@
+       $(H)for i in $(MODULES); do \
+               $(OCAMLFIND) query helm-$$i -recursive -p-format | \
+                       grep -v "pxp-" | \
+                       sed "s/^pxp/pxp[-*]/g" | \
+                       sed "s/^/ \"helm-$$i\" -> \"/g" | \
+                       sed "s/$$/\";/g" >> $@ ; \
+       done
+       $(H)mv $@ $@.old ; \
+               ./simplify_deps/simplify_deps.opt < $@.old > $@ ; \
+               rm $@.old
+       $(H)for i in $(MODULES); do \
+               echo "\"helm-$$i\" [shape=box,style=filled,fillcolor=yellow];"\
+                       >> $@ ; \
+       done
+       $(H)echo "}" >> $@
+
+.extdep.dot: .dep.dot
+       $(H)STATS/patch_deps.sh $< $@
+.clustersdep.dot: .dep.dot
+       $(H)USE_CLUSTERS=yes STATS/patch_deps.sh $< $@
+
+libraries.ps: .dep.dot
+       $(H)dot -Tps -o $@ $<
+libraries-ext.ps: .extdep.dot
+       $(H)dot -Tps -o $@ $<
+libraries-clusters.ps: .clustersdep.dot
+       $(H)dot -Tps -o $@ $<
+libraries-complete.ps: .alldep.dot
+       $(H)dot -Tps -o $@ $<
+
+ps: libraries.ps libraries-ext.ps libraries-clusters.ps
+
+tags: TAGS
+.PHONY: TAGS
+TAGS:
+       $(H)otags -vi -r .
+
+metas: $(filter-out METAS/META.helm-binaries, $(METAS))