# Source directories DIRS = misc parser typing types runtime driver toplevel CLEAN_DIRS = $(DIRS) tools tests # Objects to build MISC = misc/state.cmo misc/pool.cmo misc/encodings.cmo PARSER = parser/lexer.cmo parser/location.cmo \ parser/wlexer.cmo \ parser/ast.cmo parser/parser.cmo TYPING = typing/typed.cmo typing/typer.cmo TYPES = types/recursive.cmo \ types/recursive_share.cmo types/recursive_noshare.cmo \ types/sortedList.cmo types/sortedMap.cmo types/boolean.cmo \ types/intervals.cmo types/chars.cmo types/atoms.cmo \ types/types.cmo \ types/patterns.cmo \ types/sequence.cmo \ types/builtin.cmo RUNTIME = runtime/value.cmo \ runtime/load_xml.cmo runtime/run_dispatch.cmo \ runtime/print_xml.cmo \ runtime/eval.cmo DRIVER = driver/cduce.cmo OBJECTS = $(MISC) $(TYPES) $(PARSER) $(TYPING) $(RUNTIME) CDUCE = $(OBJECTS) $(DRIVER) driver/run.cmo WEBIFACE = $(OBJECTS) $(DRIVER) driver/examples.cmo driver/webiface.cmo TOPLEVEL = $(OBJECTS) toplevel/toploop.cmo XOBJECTS = $(OBJECTS:.cmo=.cmx) XCDUCE = $(CDUCE:.cmo=.cmx) DEBUG = -g PACKAGES = pxp-engine,pxp-lex-iso88591,wlexing,camlp4,num,cgi OCAMLCP = ocamlc OCAMLC = ocamlfind $(OCAMLCP) -package $(PACKAGES) OCAMLOPT = ocamlfind ocamlopt -package $(PACKAGES) DEPEND = $(DIRS:=/*.ml) $(DIRS:=/*.mli) INCLUDES = $(DIRS:%=-I %) SYNTAX = camlp4o pa_extend.cmo SYNTAX_PARSER = -pp '$(SYNTAX)' PREPRO = $(SYNTAX) pr_o.cmo all.cma: $(OBJECTS) $(OCAMLC) $(DEBUG) -o $@ -linkpkg gramlib.cma -a $(OBJECTS) all.cmxa: $(XOBJECTS) $(OCAMLOPT) -a -o $@ $(XOBJECTS) memento.html: cduce tests/memento.cd tests/memento.xml ./cduce -quiet tests/memento.cd cduce: $(CDUCE) $(OCAMLC) $(DEBUG) -linkpkg -o $@ gramlib.cma $(CDUCE) toplevel.out: $(TOPLEVEL) $(OCAMLC) $(DEBUG) -linkpkg -o $@ gramlib.cma $(TOPLEVEL) webiface: $(WEBIFACE) $(OCAMLC) $(DEBUG) -linkpkg -o $@ gramlib.cma $(WEBIFACE) dtd2cduce: tools/dtd2cduce.cmo $(OCAMLC) $(DEBUG) -linkpkg -o $@ $< pull: tools/pull.cmo $(OCAMLC) $(DEBUG) -linkpkg -o $@ $< cduce.opt: $(XCDUCE) $(OCAMLOPT) -linkpkg -o $@ gramlib.cmxa $(XCDUCE) compute_depend: @echo "Computing dependencies ..." ocamldep $(INCLUDES) $(SYNTAX_PARSER) $(DEPEND) > depend parser/wlexer.ml: parser/wlexer.mll wlex parser/wlexer.mll run_top: all.cma ledit ocaml $(INCLUDES) `ocamlfind use pxp` all.cma clean: for i in $(CLEAN_DIRS); do \ (cd $$i; rm -f *.cmi *.cmo *.cma *.cmx *.o *~); \ done rm -f parser/wlexer.ml rm -f *.cmi *.cmo *.cma *.cmx *.a *.cmxa *.o *~ rm -f cduce cduce.opt ocamlprof.dump rm -f dtd2cduce pool webiface rm -Rf prepro .SUFFIXES: .ml .mli .cmo .cmi .cmx profile: rm -Rf prepro mkdir prepro for i in $(DIRS); do \ mkdir prepro/$$i; \ for j in $$i/*.ml $$i/*.mli; do \ if [ -f "$$j" ]; then \ echo $$j; \ $(PREPRO) $$j -o prepro/$$j; \ fi; \ done; \ done cp parser/wlexer.mll prepro/parser/ cp Makefile depend prepro/ (cd prepro; make cduce OCAMLCP="ocamlcp -p a" SYNTAX_PARSER=) .ml.cmo: $(OCAMLC) $(DEBUG) -c $(SYNTAX_PARSER) $(INCLUDES) $< .ml.cmx: $(OCAMLOPT) -c $(SYNTAX_PARSER) $(INCLUDES) $< .mli.cmi: $(OCAMLC) $(DEBUG) -c $(SYNTAX_PARSER) $(INCLUDES) $< # FORTPATH = /users/formel8/frisch/solaris/fort/fort #FORTPATH = /home/frisch/fort #FORTBIN = $(FORTPATH)/fort #FORTLIB = $(FORTPATH) test: all.cma fort all.cma $(INCLUDES) tests/test_fort.ml include depend driver/examples.ml: cduce tests/web.cd tests/examples.xml ./cduce -quiet tests/web.cd # Site-specific installation build_web: rsh cedre ". .env; cd IMPLEM/CDUCE; make webiface memento.html" install_web: ssh cduce@iris "cp ~frisch/IMPLEM/CDUCE/webiface cgi-bin/cduce2; cp ~frisch/IMPLEM/CDUCE/memento.html public_html/; chmod +s cgi-bin/cduce2"