include Makefile.conf VERSION = 0.0.91 PACKAGES = pxp-engine pxp-lex-iso88591 wlexing camlp4 num cgi pcre netstring ifeq ($(PXP_WLEX), true) PACKAGES += pxp-wlex-utf8 else PACKAGES += pxp-lex-utf8 endif SYNTAX = camlp4o -I misc/ pa_extend.cmo \ q_symbol.cmo \ -symbol cduce_version=\"$(VERSION)\" \ -symbol build_date=\"$(shell date +%Y-%m-%d)\" ifeq ($(NATIVE), true) SYNTAX += -symbol ocaml_compiler=\"native\" else SYNTAX += -symbol ocaml_compiler=\"bytecode\" endif ifeq ($(EXPAT), true) PACKAGES += expat SYNTAX += -symbol EXPAT= endif SYNTAX_PARSER = -pp '$(SYNTAX)' CAMLC_P = ocamlc ifeq ($(PROFILE), true) CAMLOPT_P = ocamlopt -p ifeq ($(NATIVE), false) CAMLC_P = ocamlcp -p a SYNTAX_PARSER = endif else CAMLOPT_P = ocamlopt -inline 25 endif OPT = -warn-error FPS CAMLC = ocamlfind $(CAMLC_P) $(OPT) -package "$(PACKAGES)" CAMLOPT = ocamlfind $(CAMLOPT_P) $(OPT) -package "$(PACKAGES)" ifeq ($(NATIVE), true) EXTENSION = cmx LINK = $(CAMLOPT) -linkpkg gramlib.cmxa else EXTENSION = cmo LINK = $(CAMLC) -custom -linkpkg gramlib.cma endif # all: cduce dtd2cduce local_website all: cduce dtd2cduce local_website validate # Source directories DIRS = misc parser schema typing types runtime driver CLEAN_DIRS = $(DIRS) tools tests # Objects to build OBJECTS = \ misc/state.cmo misc/pool.cmo misc/encodings.cmo misc/bool.cmo \ misc/pretty.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 \ \ runtime/value.cmo \ \ schema/schema_types.cmo schema/schema_xml.cmo schema/schema_builtin.cmo \ schema/schema_validator.cmo schema/schema_parser.cmo \ \ parser/location.cmo parser/wlexer.cmo parser/ast.cmo parser/parser.cmo \ \ typing/typed.cmo typing/typer.cmo \ \ runtime/load_xml.cmo runtime/run_dispatch.cmo \ runtime/print_xml.cmo runtime/eval.cmo \ \ types/builtin.cmo driver/cduce.cmo CDUCE = $(OBJECTS) driver/run.cmo WEBIFACE = $(OBJECTS) driver/examples.cmo driver/webiface.cmo DTD2CDUCE = tools/dtd2cduce.cmo ALL_OBJECTS = $(OBJECTS) \ driver/run.cmo driver/examples.cmo driver/webiface.cmo \ tools/dtd2cduce.cmo DEPEND = $(ALL_OBJECTS:.cmo=.ml) $(ALL_OBJECTS:.cmo=.mli) # DEPEND = $(DIRS:=/*.ml) $(DIRS:=/*.mli) INCLUDES = $(DIRS:%=-I %) cduce: $(CDUCE:.cmo=.$(EXTENSION)) $(LINK) $(INCLUDES) -o $@ $^ webiface: $(WEBIFACE:.cmo=.$(EXTENSION)) $(LINK) $(INCLUDES) -o $@ $^ dtd2cduce: $(DTD2CDUCE:.cmo=.$(EXTENSION)) $(LINK) $(INCLUDES) -o $@ $^ validate: $(OBJECTS:.cmo=.$(EXTENSION)) tools/validate.ml $(LINK) $(INCLUDES) -o $@ $^ .PHONY: compute_depend compute_depend: misc/q_symbol.cmo @echo "Computing dependencies ..." ocamldep $(INCLUDES) $(SYNTAX_PARSER) $(DEPEND) | \ sed -e "s|: |: misc/q_symbol.cmo |" > depend parser/wlexer.ml: parser/wlexer.mll wlex parser/wlexer.mll clean: for i in $(CLEAN_DIRS); do \ (cd $$i; rm -f *.cmi *.cmo *.cma *.cmx *.o *~); \ done (cd expat; make clean) rm -f `find . -name "*~"` rm -f *.cmi *.cmo *.cma *.cmx *.a *.cmxa *.o *~ rm -f cduce ocamlprof.dump rm -f dtd2cduce pool webiface validate rm -Rf prepro package rm -f web/www/*.php web/www/*.html web/*~ .SUFFIXES: .ml .mli .cmo .cmi .cmx misc/q_symbol.cmo: misc/q_symbol.ml $(CAMLC) -c -pp 'camlp4o pa_extend.cmo q_MLast.cmo' $< .ml.cmo: $(CAMLC) -c $(SYNTAX_PARSER) $(INCLUDES) $< .ml.cmx: $(CAMLOPT) -c $(SYNTAX_PARSER) $(INCLUDES) $< .mli.cmi: $(CAMLC) -c $(SYNTAX_PARSER) $(INCLUDES) $< include depend # CDuce-generated files driver/examples.ml: cduce web/examples/build.cd web/examples/examples.xml (cd web/examples; ../../cduce --quiet build.cd) web/files: cduce web/site.cd (cd web; ../cduce --quiet site.cd --arg -php site.xml) install_web_local:web/files webiface cp web/www/*.php web/cduce.css $(CDUCE_HTML_DIR)/ cp webiface $(CGI_DIR)/cduce if test ! -d "$(CDUCE_HTML_DIR)/img" ; then \ mkdir $(CDUCE_HTML_DIR)/img; \ fi; cp web/img/*.* $(CDUCE_HTML_DIR)/img local_website: cduce (cd web; ../cduce --quiet site.cd --arg site.xml)