include Makefile.conf VERSION = 0.1.0 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)\" \ -symbol session_dir=\"$(SESSION_DIR)\" 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 OCAMLFIND = ocamlfind 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 website validate install: all mkdir -p $(PREFIX)/bin/ mkdir -p $(PREFIX)/man/man1/ install -m755 cduce dtd2cduce validate $(PREFIX)/bin/ install -m644 doc/cduce.1 $(PREFIX)/man/man1/ uninstall: rm $(PREFIX)/bin/cduce $(PREFIX)/bin/dtd2cduce $(PREFIX)/bin/validate\ $(PREFIX)/man/man1/cduce.1 # 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 misc/ns.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) 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/*.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 --arg examples.xml) webpages: cduce web/site.cd (cd web; ../cduce --quiet site.cd --arg site.xml) website: webpages webiface install_web: website cp web/www/*.html web/cduce.css $(HTML_DIR)/ 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