| 40 |
endif |
endif |
| 41 |
|
|
| 42 |
OPT = -warn-error FPS |
OPT = -warn-error FPS |
| 43 |
|
ANNOT = |
| 44 |
|
INTERFACE = |
| 45 |
|
ifeq ($(ANNOT), true) |
| 46 |
|
OPT += -passopt -dtypes |
| 47 |
|
endif |
| 48 |
|
ifeq ($(INTERFACE), true) |
| 49 |
|
OPT += -passopt -i |
| 50 |
|
endif |
| 51 |
OCAMLFIND = ocamlfind |
OCAMLFIND = ocamlfind |
| 52 |
CAMLC = $(OCAMLFIND) $(CAMLC_P) $(OPT) -package "$(PACKAGES)" |
CAMLC = $(OCAMLFIND) $(CAMLC_P) $(OPT) -package "$(PACKAGES)" |
| 53 |
CAMLOPT = $(OCAMLFIND) $(CAMLOPT_P) $(OPT) -package "$(PACKAGES)" |
CAMLOPT = $(OCAMLFIND) $(CAMLOPT_P) $(OPT) -package "$(PACKAGES)" |
| 60 |
LINK = $(CAMLC) -custom -linkpkg gramlib.cma |
LINK = $(CAMLC) -custom -linkpkg gramlib.cma |
| 61 |
endif |
endif |
| 62 |
|
|
| 63 |
all: cduce dtd2cduce |
all: cduce dtd2cduce validate |
|
|
|
| 64 |
|
|
| 65 |
install: all |
install: all |
| 66 |
mkdir -p $(PREFIX)/bin/ |
mkdir -p $(PREFIX)/bin/ |
| 92 |
\ |
\ |
| 93 |
runtime/value.cmo \ |
runtime/value.cmo \ |
| 94 |
\ |
\ |
| 95 |
schema/schema_types.cmo schema/schema_xml.cmo schema/schema_builtin.cmo \ |
schema/schema_xml.cmo \ |
| 96 |
schema/schema_validator.cmo schema/schema_parser.cmo \ |
schema/schema_common.cmo \ |
| 97 |
|
schema/schema_builtin.cmo \ |
| 98 |
|
schema/schema_validator.cmo \ |
| 99 |
|
schema/schema_parser.cmo \ |
| 100 |
\ |
\ |
| 101 |
parser/location.cmo parser/ulexer.cmo parser/ast.cmo parser/parser.cmo \ |
parser/location.cmo parser/ulexer.cmo parser/ast.cmo parser/parser.cmo \ |
| 102 |
\ |
\ |
| 112 |
\ |
\ |
| 113 |
types/builtin.cmo driver/librarian.cmo driver/cduce.cmo |
types/builtin.cmo driver/librarian.cmo driver/cduce.cmo |
| 114 |
|
|
| 115 |
|
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 |
| 116 |
|
|
| 117 |
CDUCE = $(OBJECTS) driver/run.cmo |
CDUCE = $(OBJECTS) driver/run.cmo |
| 118 |
WEBIFACE = $(OBJECTS) driver/examples.cmo driver/webiface.cmo |
WEBIFACE = $(OBJECTS) driver/examples.cmo driver/webiface.cmo |
| 119 |
DTD2CDUCE = tools/dtd2cduce.cmo |
DTD2CDUCE = tools/dtd2cduce.cmo |
| 120 |
|
|
| 121 |
ALL_OBJECTS = $(OBJECTS) \ |
ALL_OBJECTS = $(OBJECTS) \ |
| 122 |
driver/run.cmo driver/examples.cmo driver/webiface.cmo \ |
driver/run.cmo driver/examples.cmo driver/webiface.cmo \ |
| 123 |
tools/dtd2cduce.cmo |
tools/dtd2cduce.cmo tools/validate.cmo |
| 124 |
|
ALL_INTERFACES = schema/schema_types.mli |
| 125 |
|
|
| 126 |
DEPEND = $(ALL_OBJECTS:.cmo=.ml) $(ALL_OBJECTS:.cmo=.mli) |
DEPEND = $(ALL_OBJECTS:.cmo=.ml) $(ALL_OBJECTS:.cmo=.mli) $(ALL_INTERFACES) |
| 127 |
|
|
| 128 |
INCLUDES = $(DIRS:%=-I %) |
INCLUDES = $(DIRS:%=-I %) |
| 129 |
|
|
| 141 |
dtd2cduce: $(DTD2CDUCE:.cmo=.$(EXTENSION)) |
dtd2cduce: $(DTD2CDUCE:.cmo=.$(EXTENSION)) |
| 142 |
$(LINK) $(INCLUDES) -o $@ $^ |
$(LINK) $(INCLUDES) -o $@ $^ |
| 143 |
|
|
| 144 |
validate: $(OBJECTS:.cmo=.$(EXTENSION)) tools/validate.ml |
validate: $(VALIDATE_OBJECTS) tools/validate.cmo |
| 145 |
$(LINK) $(INCLUDES) -o $@ $^ |
$(LINK) $(INCLUDES) -o $@ $^ |
| 146 |
|
|
| 147 |
.PHONY: compute_depend |
.PHONY: compute_depend |
| 148 |
compute_depend: $(DEPEND_OCAMLDEP) |
compute_depend: $(DEPEND_OCAMLDEP) |
| 149 |
|
echo $(DEPEND) |
| 150 |
@echo "Computing dependencies ..." |
@echo "Computing dependencies ..." |
| 151 |
ocamlfind ocamldep -package "$(PACKAGES)" $(INCLUDES) $(SYNTAX_PARSER) $(DEPEND) | \ |
ocamlfind ocamldep -package "$(PACKAGES)" \ |
| 152 |
|
$(INCLUDES) $(SYNTAX_PARSER) $(DEPEND) | \ |
| 153 |
sed -e "s|: |: misc/q_symbol.cmo |" > depend |
sed -e "s|: |: misc/q_symbol.cmo |" > depend |
|
|
|
| 154 |
clean: |
clean: |
| 155 |
for i in $(CLEAN_DIRS); do \ |
for i in $(CLEAN_DIRS); do \ |
| 156 |
(cd $$i; rm -f *.cmi *.cmo *.cma *.cmx *.o *~); \ |
(cd $$i; rm -f *.cmi *.cmo *.cma *.cmx *.o *~); \ |