/[svn]/cduce/trunk/Makefile.distrib
ViewVC logotype

Contents of /cduce/trunk/Makefile.distrib

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3940 - (show annotations)
Mon Jan 21 15:53:12 2008 UTC (5 years, 3 months ago) by karoline
File size: 8470 byte(s)
Add icon to cduce exe file in Cygwin and MinGW
1 default: cduce
2
3 include Makefile.conf
4 include VERSION
5
6
7 ALL_TARGET=cduce cduce_lib.cma
8 INSTALL_BINARIES=cduce$(EXE)
9
10 ifneq ($(ML_INTERFACE), false)
11 INSTALL_BINARIES += cduce_mktop
12 endif
13
14
15 ifeq ($(NATIVE),true)
16 all: cduce_lib.cmxa
17 endif
18
19 PACKAGES = camlp4 ulex pcre num netstring cgi
20
21 # Call make with VERBOSE=true to get a trace of commands
22
23 VERBOSE=false
24
25 ifneq ($(VERBOSE), true)
26 HIDE=@
27 else
28 HIDE=
29 endif
30
31
32 SYNTAX = -I misc/ q_symbol.cmo \
33 -symbol cduce_version=\"$(VERSION)\" \
34 -symbol build_date=\"$(shell date +%Y-%m-%d)\" \
35 -symbol session_dir=\"$(SESSION_DIR)\" \
36 -loc "_loc"
37
38 SYNTAX_PARSER = -syntax camlp4o $(SYNTAX:%=-ppopt %)
39
40 CAMLC_P = ocamlc -g
41 DEPEND_OCAMLDEP = misc/q_symbol.cmo
42 ifeq ($(PROFILE), true)
43 CAMLOPT_P = ocamlopt -p -inline 10000
44 ifeq ($(NATIVE), false)
45 CAMLC_P = ocamlcp -p a
46 SYNTAX_PARSER =
47 DEPEND_OCAMLDEP =
48 endif
49 else
50 CAMLOPT_P = ocamlopt -inline 10000
51 endif
52
53 OPT = -warn-error FPSXY
54 ANNOT =
55 INTERFACE =
56 ifeq ($(ANNOT), true)
57 OPT += -passopt -dtypes
58 endif
59 ifeq ($(INTERFACE), true)
60 OPT += -passopt -i
61 endif
62 OCAMLFIND = ocamlfind
63 CAMLC = $(OCAMLFIND) $(CAMLC_P) $(OPT) -package "$(PACKAGES)"
64 CAMLOPT = $(OCAMLFIND) $(CAMLOPT_P) $(OPT) -package "$(PACKAGES)"
65
66 ifeq ($(NATIVE), true)
67 EXTENSION = cmx
68 EXTENSION_LIB = cmxa
69 CAML=ocamlopt
70 COMPILE = $(CAMLOPT)
71 LINK = $(CAMLOPT) -linkpkg
72 ifeq ($(NATDYNLINK), true)
73 LINK += dynlink.cmxa
74 endif
75 ifeq ($(ADDICON), true)
76 LINK += cduceres.o
77 endif
78 LINK += camlp4lib.cmxa
79 SYNTAX += -symbol ocaml_compiler=\"native\"
80 else
81 EXTENSION = cmo
82 EXTENSION_LIB = cma
83 COMPILE = $(CAMLC)
84 CAML=ocamlc
85 LINK = $(CAMLC) -custom -linkpkg camlp4lib.cma
86 SYNTAX += -symbol ocaml_compiler=\"bytecode\"
87 endif
88
89 ifeq ($(FORPACK),true)
90 FORPACKOPT=-passopt -for-pack -passopt Cduce_lib
91 else
92 FORPACKOPT=
93 endif
94
95 INSTALL := install -c
96
97 ifeq ($(NATIVE),true)
98 .PHONY: cduce_lib.cma
99 cduce_lib.cma:
100 $(HIDE)$(MAKE) NATIVE=false $@
101 endif
102
103 install: all install_bin install_lib install_doc
104
105 install_bin:
106 @echo "Install binaries"
107 $(HIDE)mkdir -p $(BINDIR)
108 $(HIDE)$(INSTALL) -m755 $(INSTALL_BINARIES) $(BINDIR)/
109
110
111 install_lib:
112 @echo "Build META"
113 $(HIDE)(sed "s/%REQ%/$(PACKAGES)/" < META.in | sed "s/%VER%/$(VERSION)/" > META)
114 $(HIDE)-$(OCAMLFIND) remove cduce
115 $(HIDE)-$(OCAMLFIND) install cduce META \
116 cduce_lib.cmi $(wildcard *.cma) $(wildcard *.cmxa) $(wildcard *.a) \
117
118
119 uninstall:
120 rm -f $(BINDIR)/cduce$(EXE) $(BINDIR)/cduce_mktop
121 rm -f $(MANDIR)/man1/cduce.1
122 rm -Rf $(DOCDIR)
123 ocamlfind remove cduce
124
125 help:
126 @echo "GOALS"
127 @echo " cduce : compiles the CDuce command line interpreter"
128 @echo " dtd2cduce: compiles the dtd2cduce tools"
129 @echo " doc : build the documentation"
130 @echo " all : build binaries and libraries"
131 @echo " install : install binaries, man pages, documentation"
132 @echo " clean : back to the starting point"
133 @echo " uninstall : remove installed files"
134
135 # Source directories
136
137 DIRS = misc parser schema typing types compile runtime driver query ocamliface
138 CLEAN_DIRS = $(DIRS) tools tests
139
140 # Objects to build
141
142 OBJECTS = \
143 driver/cduce_config.cmo misc/stats.cmo misc/custom.cmo misc/encodings.cmo \
144 misc/upool.cmo misc/pretty.cmo misc/ns.cmo misc/imap.cmo misc/html.cmo \
145 \
146 types/compunit.cmo types/sortedList.cmo misc/bool.cmo types/ident.cmo \
147 types/intervals.cmo types/chars.cmo types/atoms.cmo types/normal.cmo \
148 types/types.cmo compile/auto_pat.cmo \
149 types/sequence.cmo types/builtin_defs.cmo \
150 \
151 runtime/value.cmo \
152 \
153 schema/schema_pcre.cmo schema/schema_types.cmo \
154 schema/schema_xml.cmo schema/schema_common.cmo \
155 schema/schema_builtin.cmo schema/schema_validator.cmo \
156 \
157 types/patterns.cmo \
158 compile/print_auto.cmo \
159 \
160 compile/lambda.cmo \
161 runtime/run_dispatch.cmo runtime/explain.cmo runtime/eval.cmo \
162 \
163 parser/cduce_loc.cmo parser/url.cmo \
164 parser/ulexer.cmo parser/ast.cmo parser/parser.cmo \
165 \
166 typing/typed.cmo typing/typepat.cmo types/externals.cmo typing/typer.cmo \
167 compile/compile.cmo \
168 \
169 schema/schema_parser.cmo schema/schema_converter.cmo \
170 runtime/load_xml.cmo runtime/print_xml.cmo compile/operators.cmo types/builtin.cmo \
171 driver/librarian.cmo types/sample.cmo \
172 driver/cduce.cmo \
173 \
174 runtime/system.cmo query/query_aggregates.cmo
175
176 schema/schema_types.ml: schema/schema_types.mli
177 cp $^ $@
178 compile/auto_pat.ml: compile/auto_pat.mli
179 cp $^ $@
180 compile/lambda.ml: compile/lambda.mli
181 cp $^ $@
182
183 ML_INTERFACE_OBJS = \
184 ocamliface/caml_cduce.cmo \
185 ocamliface/mltypes.cmo ocamliface/mlstub.cmo
186
187 ifneq ($(ML_INTERFACE), false)
188 OBJECTS += $(ML_INTERFACE_OBJS)
189 endif
190
191 ifneq ($(CURL), false)
192 OBJECTS += parser/cduce_curl.cmo
193 PACKAGES += curl
194 endif
195 ifneq ($(NETCLIENT), false)
196 OBJECTS += parser/cduce_netclient.cmo
197 PACKAGES += netclient
198 endif
199
200 PXP_PACK=pxp-engine pxp-lex-iso88591
201 ifeq ($(PXP_WLEX), true)
202 PXP_PACK += pxp-wlex-utf8
203 else
204 PXP_PACK += pxp-lex-utf8
205 endif
206
207 ifeq ($(PXP),true)
208 OBJECTS += runtime/cduce_pxp.cmo
209 PACKAGES += $(PXP_PACK)
210 ALL_TARGET += dtd2cduce
211 INSTALL_BINARIES += dtd2cduce
212 endif
213 ifeq ($(EXPAT), true)
214 OBJECTS += runtime/cduce_expat.cmo
215 PACKAGES += expat
216 endif
217
218 ifeq ($(ADDICON), true)
219 OBJECTS += cduceres.o
220 endif
221
222 all: $(ALL_TARGET)
223
224 OBJECTS += driver/run.cmo
225 CDUCE = $(OBJECTS) driver/start.cmo
226
227 ALL_OBJECTS = $(OBJECTS) \
228 driver/start.cmo driver/examples.cmo \
229 driver/webiface.cmo driver/evaluator.cmo \
230 tools/validate.cmo \
231 $(ML_INTERFACE_OBJS) parser/cduce_curl.cmo \
232 parser/cduce_netclient.cmo \
233 runtime/cduce_expat.cmo runtime/cduce_pxp.cmo
234
235 ALL_INTERFACES = schema/schema_types.mli
236
237 DEPEND = $(ALL_OBJECTS:.cmo=.ml) $(ALL_OBJECTS:.cmo=.mli) $(ALL_INTERFACES)
238
239 INCLUDES = $(DIRS:%=-I %)
240 # -I +camlp4
241
242 cduce: $(CDUCE:.cmo=.$(EXTENSION))
243 @echo "Build $@"
244 $(HIDE)$(LINK) $(INCLUDES) -o $@ $^ $(EXTRA_LINK_OPTS)
245
246 cduce_packed.ml: $(CDUCE:.cmo=.ml)
247 rm -f cduce_packed.ml
248 ocaml tools/pack.ml $^ > cduce_packed.ml
249
250 cduce_packed: cduce_packed.$(EXTENSION)
251 $(LINK) $(INCLUDES) -o $@ $^ $(EXTRA_LINK_OPTS)
252
253
254 cduce_lib.$(EXTENSION_LIB): $(OBJECTS:.cmo=.$(EXTENSION))
255 @echo "Pack cduce_lib.$(EXTENSION)"
256 $(HIDE)$(COMPILE) -o cduce_lib.$(EXTENSION) $(INCLUDES) -pack $^
257 @echo "Build $@"
258 $(HIDE)$(COMPILE) -a -o $@ cduce_lib.$(EXTENSION)
259
260 dtd2cduce: tools/dtd2cduce.ml
261 @echo "Build $@"
262 $(HIDE)$(OCAMLFIND) $(CAML) -o $@ -package "$(PXP_PACK) cgi" -linkpkg $^
263
264 .PHONY: compute_depend
265 compute_depend: $(DEPEND_OCAMLDEP)
266 @echo "Computing dependencies ..."
267 ocamlfind ocamldep -package "$(PACKAGES)" \
268 $(INCLUDES) $(SYNTAX_PARSER) $(DEPEND) > depend
269 clean:
270 for i in $(CLEAN_DIRS); do \
271 (cd $$i; rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa *~); \
272 done
273 (cd ocamliface; $(MAKE) clean)
274 rm -f `find . -name "*~"`
275 rm -f *.cmi *.cmo *.cma *.cmx *.a *.cmxa *.o *~ META
276 rm -f cduce$(EXE) ocamlprof.dump
277 rm -f dtd2cduce$(EXE) webiface$(EXE) evaluator$(EXE)
278 rm -Rf prepro package
279 rm -f web/www/*.html web/*~
280 rm -f web/*.cdo
281 rm -f configure.log
282 rm -rf web/doc
283 rm -f META
284
285 distclean: clean
286 rm -f Makefile.conf
287
288 ocamliface/mltypes.$(EXTENSION): ocamliface/caml_cduce.$(EXTENSION)
289
290 $(ALL_OBJECTS:.cmo=.$(EXTENSION)): misc/q_symbol.cmo
291 $(ALL_INTERFACES): misc/q_symbol.cmo
292
293 .SUFFIXES: .ml .mli .cmo .cmi .cmx
294
295 misc/q_symbol.cmo: misc/q_symbol.ml
296 @echo "Build $@"
297 $(HIDE)$(CAMLC) -c -pp camlp4orf $<
298
299 .ml.cmo:
300 @echo "Build $@"
301 $(HIDE)$(CAMLC) -c $(INCLUDES) $(SYNTAX_PARSER) $<
302
303 .ml.cmx:
304 @echo "Build $@"
305 $(HIDE)$(CAMLOPT) $(FORPACKOPT) -c $(SYNTAX_PARSER) $(INCLUDES) $<
306
307 .mli.cmi:
308 @echo "Build $@"
309 $(HIDE)$(CAMLC) -c $(SYNTAX_PARSER) $(INCLUDES) $<
310
311 include depend
312
313 cduceres.o: win32/cduce.rc win32/cduce_logo-bw.ico
314 (cd win32; windres -i cduce.rc -o cduceres.o; mv cduceres.o ..)
315
316 # Documentation
317
318 doc: cduce web/site.cdo
319 mkdir -p web/doc
320 (cd web; ../cduce --run site.cdo --arg doc.xml -o doc)
321
322 web/site.cdo: cduce web/xhtml.cdo web/site.cd web/siteTypes.cd
323 ./cduce -I web/ --compile web/site.cd
324
325 web/xhtml.cdo: cduce web/xhtml.cd
326 ./cduce -I web/ --compile web/xhtml.cd
327
328 install_doc: doc
329 $(HIDE)mkdir -p $(MANDIR)/man1
330 $(HIDE)(cd doc; $(MAKE) install INSTALL="$(INSTALL)" MANDIR=$(MANDIR) HIDE=$(HIDE))
331 mkdir -p $(DOCDIR)/img
332 cp web/doc/*.html $(DOCDIR)/
333 cp CHANGES INSTALL INSTALL.WIN32 README AUTHORS LICENSE $(DOCDIR)/
334 cp web/img/left.gif web/img/right.gif $(DOCDIR)/img
335
336
337 ### Pack OCaml modules for the CDuce/OCaml interface
338
339
340 ocamliface/caml_cduce.cmo:
341 @cd ocamliface; \
342 $(MAKE) caml_cduce.cmo
343
344 ocamliface/caml_cduce.cmx:
345 @cd ocamliface; \
346 $(MAKE) caml_cduce.cmx
347

CVS Admin">CVS Admin
ViewVC Help
Powered by ViewVC 1.1.5