]> matita.cs.unibo.it Git - helm.git/blob - helm/gTopLevel/Makefile
56593b9c76ddac5e9edaf8e932221624c3636a5c
[helm.git] / helm / gTopLevel / Makefile
1 BIN_DIR = /usr/local/bin
2 TEST_REQUIRES = \
3         helm-mathql_interpreter \
4         helm-mathql_generator \
5         helm-tactics \
6         helm-cic_transformations \
7         helm-cic_textual_parser2 \
8         helm-cic_textual_parser \
9         helm-tex_cic_textual_parser \
10         mathml-editor \
11         lablgtkmathview
12 REQUIRES = \
13         $(TEST_REQUIRES) \
14         gdome2-xslt \
15         hbugs-client
16 PREDICATES = "gnome,init,glade"
17 OCAMLOPTIONS = -package "$(REQUIRES)" -predicates "$(PREDICATES)" -pp camlp4o
18 OCAMLFIND = ocamlfind
19 OCAMLDEBUGOPTIONS = -g
20 OCAMLC = $(OCAMLFIND) ocamlc $(OCAMLDEBUGOPTIONS) $(OCAMLOPTIONS)
21 OCAMLOPT = $(OCAMLFIND) ocamlopt $(OCAMLOPTIONS)
22 OCAMLDEP = $(OCAMLFIND) ocamldep -pp camlp4o
23 OCAMLDEBUG = wowcamldebug
24
25 LIBRARIES = $(shell $(OCAMLFIND) query -recursive -predicates "byte $(PREDICATES)" -format "%d/%a" $(REQUIRES))
26 LIBRARIES_OPT = $(shell $(OCAMLFIND) query -recursive -predicates "native $(PREDICATES)" -format "%d/%a" $(REQUIRES))
27 TEST_LIBRARIES = $(shell $(OCAMLFIND) query -recursive -predicates "byte $(PREDICATES)" -format "%d/%a" $(TEST_REQUIRES))
28 TEST_LIBRARIES_OPT = $(shell $(OCAMLFIND) query -recursive -predicates "native $(PREDICATES)" -format "%d/%a" $(TEST_REQUIRES))
29
30 all: styles gTopLevel
31 opt: styles gTopLevel.opt
32
33 start:
34         $(MAKE) -C ../hbugs/ start
35 stop:
36         $(MAKE) -C ../hbugs/ stop
37
38 INTERFACE_FILES = \
39         proofEngine.mli \
40         logicalOperations.mli \
41         oldDisambiguate.mli \
42         disambiguatingParser.mli \
43         termEditor.mli \
44         texTermEditor.mli \
45         xmlDiff.mli \
46         chosenTransformer.mli \
47         termViewer.mli \
48         invokeTactics.mli \
49         hbugs.mli \
50         chosenTermEditor.mli 
51
52 DEPOBJS = \
53         $(INTERFACE_FILES) $(INTERFACE_FILES:%.mli=%.ml) \
54         gTopLevel.ml regtest.ml testlibrary.ml batchParser.ml batchParser.mli
55
56 TOPLEVELOBJS = $(INTERFACE_FILES:%.mli=%.cmo) gTopLevel.cmo
57 TESTOBJS = \
58         oldDisambiguate.cmo \
59         disambiguatingParser.cmo \
60         batchParser.cmo
61 REGTESTOBJS = $(TESTOBJS) regtest.cmo
62 TESTLIBOBJS = $(TESTOBJS) testlibrary.cmo
63
64 $(INTERFACE_FILES:%.mli=%.cmo): $(LIBRARIES)
65 $(INTERFACE_FILES:%.mli=%.cmx): $(LIBRARIES_OPT)
66
67 styles:
68         @echo "***********************************************************************"
69         @if [ -d stylesheets -a -d meta_stylesheets ] ; then echo -e "* stylesheets and metastylesheets found:                              *\\n* I will create the request hyperlinks in styles                      *" ; else echo -e "* stylesheets or meta_stylesheets not found:                          *\\n* you should check-out the two directories from the MoWGLI repository *" ; exit -1 ; fi
70         @echo "***********************************************************************"
71         mkdir styles
72         (cd styles && for i in ../stylesheets/*.xsl ; do ln -s $$i; done)
73         (cd styles && for i in ../stylesheets/generated/*.xsl ; do ln -s $$i; done)
74         (cd styles && rm rootcontent.xsl && ln -s ../rootcontent.xsl)
75         
76 depend:
77         $(OCAMLDEP) $(DEPOBJS) > .depend
78
79 gTopLevel: $(TOPLEVELOBJS) $(LIBRARIES)
80         $(OCAMLC) -thread -linkpkg -o $@ $(TOPLEVELOBJS)
81 gTopLevel.opt: $(TOPLEVELOBJS:.cmo=.cmx) $(LIBRARIES_OPT)
82         $(OCAMLOPT) -thread -linkpkg -o $@ $(TOPLEVELOBJS:.cmo=.cmx)
83
84 testlibrary: $(TESTLIBOBJS) $(TEST_LIBRARIES)
85         $(OCAMLFIND) ocamlc $(OCAMLDEBUGOPTIONS) -linkpkg \
86                 -package "$(TEST_REQUIRES)" -o $@ $(TESTLIBOBJS)
87 testlibrary.opt: $(TESTLIBOBJS:.cmo=.cmx) $(TEST_LIBRARIES_OPT)
88         $(OCAMLFIND) ocamlopt -linkpkg -package "$(TEST_REQUIRES)" -o $@ \
89                 $(TESTLIBOBJS:.cmo=.cmx)
90
91 regtest: $(REGTESTOBJS) $(TEST_LIBRARIES)
92         $(OCAMLFIND) ocamlc $(OCAMLDEBUGOPTIONS) -linkpkg \
93                 -package "$(TEST_REQUIRES)" -o $@ $(REGTESTOBJS)
94 regtest.opt: $(REGTESTOBJS:.cmo=.cmx) $(TEST_LIBRARIES_OPT)
95         $(OCAMLFIND) ocamlopt -linkpkg -package "$(TEST_REQUIRES)" -o $@ \
96                 $(REGTESTOBJS:.cmo=.cmx)
97
98 .SUFFIXES: .ml .mli .cmo .cmi .cmx
99 .ml.cmo:
100         $(OCAMLC) -c $<
101 .mli.cmi:
102         $(OCAMLC) -c $<
103 .ml.cmx:
104         $(OCAMLOPT) -c $<
105
106 $(TOPLEVELOBJS): $(LIBRARIES)
107 $(TOPLEVELOBJS:.cmo=.cmx)): $(LIBRARIES_OPT)
108
109 clean:
110         rm -f *.cm[iox] *.o gTopLevel{,.opt} regtest{,.opt} testlibrary{,.opt}
111 install:
112         cp gTopLevel gTopLevel.opt $(BIN_DIR)
113 uninstall:
114         rm -f $(BIN_DIR)/gTopLevel $(BIN_DIR)/gTopLevel.opt
115
116 .PHONY: install uninstall clean test
117
118 INTESTS := $(wildcard tests/*.cic)
119 OUTTESTS := $(patsubst %, %.test, $(INTESTS))
120 gentest: $(OUTTESTS)
121 cleantest:
122         rm -f $(OUTTESTS)
123 tests/%.cic.test: tests/%.cic regtest
124         time ./regtest -gen $<
125 test: regtest
126         ./regtest $(INTESTS) 2> /dev/null
127 envtest: regtest
128         ./regtest -dump $(INTESTS) 2> /dev/null
129 librarytest: testlibrary.opt
130         ./testlibrary.opt -vars -varsprefix cic:/Coq index.txt 2>/dev/null >LOG &
131
132 MAIN = ./gTopLevel
133 ARGS =
134 debug:
135         $(OCAMLFIND) query -recursive -predicates byte -a-format \
136                 helm-cic_unification | \
137                 sed 's/\(.*\)/load_printer "\1"/' \
138                 > .debug_script
139         echo "install_printer CicMetaSubst.fppsubst" >> .debug_script
140         echo "install_printer CicMetaSubst.fppterm" >> .debug_script
141         echo "install_printer CicMetaSubst.fppmetasenv" >> .debug_script
142         ledit $(OCAMLDEBUG) \
143                 -source .debug_script \
144                 $(shell $(OCAMLFIND) query -recursive -i-format $(REQUIRES)) \
145                 $(MAIN) $(ARGS)
146
147 ifneq ($(MAKECMDGOALS), depend)
148    include .depend   
149 endif
150