Cherry pick use of menhir features from branch feature/menhir.
[tatoo.git] / Remakefile.in
index 1b54199..2a32aa2 100644 (file)
@@ -1,4 +1,5 @@
 .OPTIONS = variable-propagation
+
 OCAMLFINDPACKAGES = "ulex,unix,expat,camlp4.macro,bigarray"
 OCAMLFINDSYNTAX = camlp4o
 OCAMLFINDPPOPTS = $(addprefix "-ppopt ", @CAMLP4FLAGS@ -I include)
@@ -13,22 +14,18 @@ BYTE = src/@PACKAGE_TARNAME@.byte@EXE@
 EXE = @EXE@
 
 REMAKE = @REMAKE@
-OCAMLDEP = @OCAMLDEP@
-ODEPS = tools/odeps.sh $(OCAMLDEP)
 OCAMLC = @OCAMLC@
 OCAMLOPT = @OCAMLOPT@
+OCAMLDEP = @OCAMLDEP@
 OCAMLFLAGS = @OCAMLFLAGS@
 OCAMLOPTFLAGS = @OCAMLOPTFLAGS@
 OCAMLCFLAGS = @OCAMLCFLAGS@
 MENHIR = @MENHIR@
 
-
+.PHONY:clean real_test test_native test
 
 all: $(BIN)
 
-src/xpath/xpath_internal_parser.cmx: OCAMLFINDFLAGS = $(OCAMLFINDFLAGSNOSYNTAX)
-src/xpath/xpath_internal_parser.cmo: OCAMLFINDFLAGS = $(OCAMLFINDFLAGSNOSYNTAX)
-
 tools: tools/xml_diff.native$(EXE) tools/XPathEval.class tools/split_path.native$(EXE)
 
 Remakefile: Remakefile.in config.status
@@ -66,23 +63,27 @@ distclean: clean test_clean
 %.class: %.java
        javac $<
 
-%.native$(EXE): %.cmx %.depx
-       if test -f $@".flags"; then
-               FLAGS=`cat $@".flags"`
-       fi
+%.native$(EXE):
+       $(REMAKE) OCAMLNATIVE="-native" $*.cmx $*.depx
        objects=`cat $*.depx | xargs | sed 's/[.]depx/.cmx/g'`
        $(REMAKE) OCAMLNATIVE="-native" $objects #ensure all objects have been built
-       $(OCAMLOPT) -o $@  $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $FLAGS $objects $<
+       $(OCAMLOPT) -o $@  $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $objects $*.cmx
+
 
-%.byte$(EXE): %.cmo %.depo
+%.byte$(EXE):
+       $(REMAKE) OCAMLNATIVE="" $*.cmo $*.depo
        objects=`cat $*.depo | xargs | sed 's/[.]depo/.cmo/g'`
        $(REMAKE) OCAMLNATIVE="" $objects #ensure all objects have been built
-       $(OCAMLC) -o $@  $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $objects $<
+       $(OCAMLC) -o $@  $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDLINKFLAGS) $(OCAMLFINDFLAGS) $objects $*.cmo
 
 %.ml:
        if test -f $*.mly; then
                $(REMAKE) $*.mly
-               $(MENHIR) $*.mly
+               #Work around menhir warning
+               $(MENHIR) $*.mly 2>&1 | grep -v -- 'you are\|--infer'
+               #Work around crazy ulex chocking on identifier 'lexer', generated by menhir.
+               cat $*.ml | sed -e 's/\blexer\b/__lexer/g' > $*.tmp
+               mv $*.tmp $*.ml
        elif test -f $*.mll; then
                $(REMAKE) $*.mll
                $(OCAMLLEX) $*.mll
@@ -98,33 +99,33 @@ distclean: clean test_clean
        base=$*
        target=$@
        DEPEXT=depx
-       NATIVE=-native
-       REMAKE="$(REMAKE) OCAMLNATIVE=$NATIVE"
+       REMAKE="$(REMAKE)"
        OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS)"
+       OCAMLNATIVE=$(OCAMLNATIVE)
        SRC=$(SRC)
        COMPILE="$(OCAMLOPT) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDFLAGS)"
        . tools/ocamldriver.sh
 
+
 %.cmo %.depo:
        base=$*
        target=$@
        DEPEXT=depo
-       NATIVE=""
-       REMAKE="$(REMAKE) OCAMLNATIVE=$NATIVE"
-       OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS) $(OCAMLFIND_EXTRAFLAGS)"
+       REMAKE="$(REMAKE)"
+       OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS)"
+       OCAMLNATIVE=$(OCAMLNATIVE)
        SRC=$(SRC)
-       COMPILE="$(OCAMLC) $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFIND_EXTRAFLAGS) "
-
+       COMPILE="$(OCAMLC) $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS)"
        . tools/ocamldriver.sh
 
 %.cmi:
        base=$*
        target=$@
-       NATIVE=$(OCAMLNATIVE)
-       REMAKE="$(REMAKE) OCAMLNATIVE=$NATIVE"
+       REMAKE="$(REMAKE)"
        OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS)"
        SRC=$(SRC)
-       if test -z "$NATIVE"; then
+       OCAMLNATIVE=$(OCAMLNATIVE)
+       if test -z "$OCAMLNATIVE"; then
                DEPEXT=.depo
                COMPILE="$(OCAMLC) $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS)"
        else
@@ -135,15 +136,9 @@ distclean: clean test_clean
 
 ## Tests
 
-test_byte: tools $(BYTE)
-       $(REMAKE) TEST=$(BYTE) real_test
-
-test_native: tools $(BIN)
-       $(REMAKE) TEST=$(BIN) real_test
-
-test: test_native
 
 real_test:
+       echo $(TEST)
        for i in tests/*.xml
        do
          for j in 1 2 3
@@ -152,10 +147,18 @@ real_test:
          done
        done
 
+test_byte:
+        $(REMAKE) TEST=$(BYTE) real_test
+test_native:
+       $(REMAKE) TEST=$(BIN) real_test
+
+test: test_native
+
 test_clean:
        rm -rf tests/*.summary tests/*.results/*_"$(PACKAGE)"_*.*
 
 %.summary:
+       $(REMAKE) tools $(TEST)
        target=$@
        base=$*
        test=${base#*.xml.}