1 OCAMLFINDPACKAGES = "ulex,unix,expat,camlp4.macro"
2 OCAMLFINDSYNTAX = camlp4o
3 OCAMLFINDPPOPTS = $(addprefix "-ppopt ", @CAMLP4FLAGS@ -I include)
4 OCAMLFINDINCLUDES = $(addprefix "-I ", src)
5 OCAMLFINDFLAGS = -syntax $(OCAMLFINDSYNTAX) -package $(OCAMLFINDPACKAGES) \
6 $(OCAMLFINDPPOPTS) $(OCAMLFINDINCLUDES)
7 OCAMLFINDLINKFLAGS = -linkpkg
8 PACKAGE = @PACKAGE_TARNAME@
9 BIN = src/@PACKAGE_TARNAME@.native@EXE@
14 ODEPS = tools/odeps.sh $(OCAMLDEP)
17 OCAMLFLAGS = @OCAMLFLAGS@
18 OCAMLOPTFLAGS = @OCAMLOPTFLAGS@
19 OCAMLCFLAGS = @OCAMLCFLAGS@
20 OCAMLYACC = @OCAMLYACC@
24 tools: tools/xml_diff.native$(EXE) tools/XPathEval.class
26 Remakefile: Remakefile.in config.status
27 ./config.status Remakefile
29 configure config.status: configure.in
31 ./config.status --recheck
34 for dir in src tools; do
35 find $dir -name '*.cm*' -o -name '*.o' -o -name '*.byte' -o \
36 -name '*.native' -o -name '*.mll' -o -name '*.mly' -o \
37 -name '*.class' | while read file; do
40 rm -f "${file%.mll}.ml"
43 rm -f "${file%.mly}.ml" "${file%.mly}.mli"
52 distclean: clean test_clean
53 rm -rf config.status configure config.log autom4te.cache .remake Remakefile remake
63 $(REMAKE) -v OCAMLDEPNATIVE=-native "$obj"
64 srcs=`ls "$dir"/*.cmx | sed 's/\.cmx/.ml/g'`
65 objs=`$(OCAMLDEP) $(OCAMLDEPNATIVE) $(OCAMLFINDFLAGS) -modules $srcs | tools/osort.sh cmx`
66 $(OCAMLOPT) -o "$@" $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $objs
75 for i in "$dir"/*.cmi; do
77 if test -f "${ibase}.ml" -o -d "${ibase}" -o -f "${ibase}.mly" -o -f "${ibase}.mll"; then
78 objs="$objs ${ibase}.cmo"
82 srcs=`ls "$dir"/*.cmo | sed 's/\.cmo/.ml/g'`
83 sorted_objs=`$(OCAMLDEP) $OCAMLFINDFLAGS -modules $srcs | tools/osort.sh cmo`
84 $(OCAMLC) -o "$@" $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $sorted_objs
90 if [ -f "$src" ]; then
92 deps=`$(ODEPS) -native $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"`
93 echo "$deps" | $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$(OCAMLFORPACK)" -r "$target"
94 $(OCAMLOPT) -o "$target" -c $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFORPACK) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
95 elif [ -d "$base" ]; then
96 modname=`basename "$base"`
97 packname=`echo "$modname" | sed 's/\(.*\)/\u\1/'`
98 objs=`ls "$base"/*.ml | sed 's/\.ml/.cmx/g'`
99 $(REMAKE) -v PACKINCLUDE="-I $base" -v OCAMLFORPACK="-for-pack $packname" $objs
100 sorted_objs=`$(OCAMLDEP) -native $(OCAMLFINDFLAGS) -I $base -modules "$base"/*.ml | tools/osort.sh cmx`
101 $(OCAMLOPT) -o "$target" -pack $sorted_objs
102 elif [ -f "$base".mly ]; then
103 $(REMAKE) "$base".mly
104 $(OCAMLYACC) "$base".mly
105 $(ODEPS) $(OCAMLDEPNATIVE) $(OCAMLFINDFLAGS) "$src" | \
106 $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE=-native -v OCAMLFORPACK="$(OCAMLFORPACK)" -r "$target"
107 $(OCAMLOPT) -o "$target" -c $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFORPACK) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
113 base="${target%.cmo}"
115 if [ -f "$src" ]; then
117 deps=`$(ODEPS) $OCAMLFINDFLAGS $PACKINCLUDE "$src"`
118 echo "$deps" | $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -r "$target"
119 $(OCAMLC) -o "$target" -c $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
120 elif [ -d "$base" ]; then
121 modname=`basename "$base"`
122 packname=`echo "$modname" | sed 's/\(.*\)/\u\1/'`
123 objs=`ls "$base"/*.ml | sed 's/\.ml/.cmo/g'`
124 $(REMAKE) -v PACKINCLUDE="-I $base" $objs
125 sorted_objs=`$(OCAMLDEP) $(OCAMLFINDFLAGS) -I $base -modules "$base"/*.ml | tools/osort.sh cmo`
126 $(OCAMLC) -o "$target" -pack $sorted_objs
127 elif [ -f "$base".mly ]; then
128 $(REMAKE) "$base".mly
129 $(OCAMLYACC) "$base".mly
130 $(ODEPS) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src" | $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -r "$target"
131 $(OCAMLC) -o "$target" -c $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
139 if test -f "$base".mli; then
140 $(REMAKE) "$base".mli
142 deps=`$(ODEPS) $(OCAMLDEPNATIVE) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"`
143 echo "$deps" | $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE="$(OCAMLDEPNATIVE)" -v OCAMLFORPACK="$(OCAMLFORPACK)" -r "$target"
144 if test -z "$(OCAMLDEPNATIVE)"; then
145 $(OCAMLC) -o "$target" -c $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
147 $(OCAMLOPT) -o "$target" -c $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDFLAGS) $(PACKINCLUDE) "$src"
150 if test -z "$(OCAMLDEPNATIVE)"; then
155 $(REMAKE) -v PACKINCLUDE="$(PACKINCLUDE)" -v OCAMLDEPNATIVE="$(OCAMLDEPNATIVE)" -v OCAMLFORPACK="$(OCAMLFORPACK)" "$obj"
165 $(REMAKE) "$i".test"$j".summary
170 rm -rf tests/*.summary tests/*.results/*_"$(PACKAGE)".*
174 base=${base%.xml.test1.summary}
175 $(REMAKE) "$base".xml "$base".xml.queries tools "$(BIN)"
177 MSG="Test 1 (single query: tatoo vs java implementation)"
180 cat "$base".xml.queries | grep -v '^#' | while read q query; do
181 echo -n "$base"".xml $q $query ... "
182 REF="$base".xml.results/"$q"_jaxp.xml
184 OUTPUT="$base".xml.results/"$q"_"$(PACKAGE)"_test1.xml
185 LOG="$base".xml.results/"$q"_"$(PACKAGE)".log
186 src/@PACKAGE_TARNAME@.native@EXE@ -s -d "$base".xml \
187 "$query" -o "$OUTPUT" > "$LOG" 2>&1
188 echo "Query: $q : $query" >> "$@"
189 cat "$LOG" | grep '^STATS' >> "$@"
190 echo -n "Diff: " >> "$@"
191 if tools/xml_diff.native "$REF" "$OUTPUT" >/dev/null 2>&1; then
199 echo '-------------------------------------------' >> "$@"
204 base=${base%.xml.test2.summary}
205 $(REMAKE) "$base".xml "$base".xml.queries tools "$(BIN)"
207 MSG="Test 2 (all queries sequentially vs all queries in parallel)"
210 allqueries=`cat "$base".xml.queries | grep -v '^#' | while read q query; do echo "'$query'"; done`
211 echo -n "Running all queries ... "
212 OUTPUTA="$base".xml.results/test2a_"$(PACKAGE)".xml
213 LOG="$base".xml.results/test2a_"$(PACKAGE)".log
214 echo -n "sequential ... "
215 echo "$allqueries" | xargs src/@PACKAGE_TARNAME@.native@EXE@ -s -d "$base".xml \
216 -o "$OUTPUTA" > "$LOG" 2>&1
217 cat "$LOG" | grep '^STATS' >> "$@"
219 OUTPUTB="$base".xml.results/test2b_"$(PACKAGE)".xml
220 LOG="$base".xml.results/test2b_"$(PACKAGE)".log
221 echo -n "parallel ... "
222 echo "$allqueries" | xargs src/@PACKAGE_TARNAME@.native@EXE@ -p -s -d "$base".xml \
223 -o "$OUTPUTB" > "$LOG" 2>&1
224 cat "$LOG" | grep '^STATS' >> "$@"
225 echo -n "Diff: " >> "$@"
226 if diff "$OUTPUTA" "$OUTPUTB" >/dev/null 2>&1; then
234 echo '-------------------------------------------' >> "$@"