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

Legend:
Removed from v.779  
changed lines
  Added in v.1774

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