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

Diff of /cduce/trunk/Makefile.distrib

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

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

Legend:
Removed from v.658  
changed lines
  Added in v.1628

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