Modify configure.in and Remakefile.in to use menhir instead of ocamlyacc.
authorKim Nguyễn <kn@lri.fr>
Mon, 3 Mar 2014 16:00:05 +0000 (17:00 +0100)
committerKim Nguyễn <kn@lri.fr>
Mon, 3 Mar 2014 16:05:43 +0000 (17:05 +0100)
(This only modify the build process, not the parser itself, so the parser is
still a plain ocamlyacc file).

Remakefile.in
configure.in

index 1ff0b30..1b54199 100644 (file)
@@ -3,8 +3,8 @@ OCAMLFINDPACKAGES = "ulex,unix,expat,camlp4.macro,bigarray"
 OCAMLFINDSYNTAX = camlp4o
 OCAMLFINDPPOPTS = $(addprefix "-ppopt ", @CAMLP4FLAGS@ -I include)
 OCAMLFINDINCLUDES = $(addprefix "-I ", src)
-OCAMLFINDFLAGS = -syntax $(OCAMLFINDSYNTAX) -package $(OCAMLFINDPACKAGES)  \
-       $(OCAMLFINDPPOPTS) $(OCAMLFINDINCLUDES)
+OCAMLFINDFLAGSNOSYNTAX = -package $(OCAMLFINDPACKAGES) $(OCAMLFINDPPOPTS) $(OCAMLFINDINCLUDES)
+OCAMLFINDFLAGS = -syntax $(OCAMLFINDSYNTAX) $(OCAMLFINDFLAGSNOSYNTAX)
 OCAMLFINDLINKFLAGS = -linkpkg
 PACKAGE = @PACKAGE_TARNAME@
 SRC = src
@@ -17,13 +17,18 @@ OCAMLDEP = @OCAMLDEP@
 ODEPS = tools/odeps.sh $(OCAMLDEP)
 OCAMLC = @OCAMLC@
 OCAMLOPT = @OCAMLOPT@
-OCAMLFLAGS = @OCAMLFLAGS@ 
+OCAMLFLAGS = @OCAMLFLAGS@
 OCAMLOPTFLAGS = @OCAMLOPTFLAGS@
 OCAMLCFLAGS = @OCAMLCFLAGS@
-OCAMLYACC = @OCAMLYACC@
+MENHIR = @MENHIR@
+
+
 
 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
@@ -77,7 +82,7 @@ distclean: clean test_clean
 %.ml:
        if test -f $*.mly; then
                $(REMAKE) $*.mly
-               $(OCAMLYACC) $*.mly
+               $(MENHIR) $*.mly
        elif test -f $*.mll; then
                $(REMAKE) $*.mll
                $(OCAMLLEX) $*.mll
@@ -97,10 +102,7 @@ distclean: clean test_clean
        REMAKE="$(REMAKE) OCAMLNATIVE=$NATIVE"
        OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS)"
        SRC=$(SRC)
-       if test -f "$base".flags; then
-               FLAGS=`cat "$base".flags`
-       fi
-       COMPILE="$(OCAMLOPT) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDFLAGS) $FLAGS"
+       COMPILE="$(OCAMLOPT) $(OCAMLFLAGS) $(OCAMLOPTFLAGS) $(OCAMLFINDFLAGS)"
        . tools/ocamldriver.sh
 
 %.cmo %.depo:
@@ -109,9 +111,10 @@ distclean: clean test_clean
        DEPEXT=depo
        NATIVE=""
        REMAKE="$(REMAKE) OCAMLNATIVE=$NATIVE"
-       OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS)"
+       OCAMLDEP="$(OCAMLDEP) $(OCAMLFINDFLAGS) $(OCAMLFIND_EXTRAFLAGS)"
        SRC=$(SRC)
-       COMPILE="$(OCAMLC) $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFINDFLAGS)"
+       COMPILE="$(OCAMLC) $(OCAMLFLAGS) $(OCAMLCFLAGS) $(OCAMLFIND_EXTRAFLAGS) "
+
        . tools/ocamldriver.sh
 
 %.cmi:
index 5bcb4c0..34a9e31 100644 (file)
@@ -68,49 +68,50 @@ esac
 
 AC_SUBST(OCAMLVERSION)
 
+dnl ocamlyacc and ocamllex are not needed
 #detect ocamlyacc
-OCAMLYACC=ocamlyacc
-AC_ARG_WITH([ocamlyacc],
-            AS_HELP_STRING([--with-ocamlyacc=PATH], [location of the ocamlyacc binary]),
-        [OCAMLYACC="$withval"])
-AC_MSG_CHECKING([for ocamlyacc ($OCAMLYACC)])
-OCAMLYACC_VERSION=$($OCAMLYACC -version 2>/dev/null || echo foo)
-case "$OCAMLYACC_VERSION" in
-     *$OCAMLVERSION)
-     AC_MSG_RESULT([ok])
-     ;;
-     foo)
-     AC_MSG_RESULT([failed])
-     AC_MSG_ERROR([Cannot find ocamlyacc])
-     ;;
-     *)
-     AC_MSG_RESULT([failed])
-     AC_MSG_ERROR([Bad ocamlyacc version])
-     ;;
-esac
-AC_SUBST([OCAMLYACC])
-
-#detect ocamllex
-OCAMLLEX=ocamllex
-AC_ARG_WITH([ocamllex],
-            AS_HELP_STRING([--with-ocamllex=PATH], [location of the ocamllex binary]),
-        [OCAMLLEX="$withval"])
-AC_MSG_CHECKING([for ocamllex ($OCAMLLEX)])
-OCAMLLEX_VERSION=$($OCAMLLEX -version 2>/dev/null || echo foo)
-case "$OCAMLLEX_VERSION" in
-     *$OCAMLVERSION)
-     AC_MSG_RESULT([ok])
-     ;;
-     foo)
-     AC_MSG_RESULT([failed])
-     AC_MSG_ERROR([Cannot find ocamllex])
-     ;;
-     *)
-     AC_MSG_RESULT([failed])
-     AC_MSG_ERROR([Bad ocamllex version])
-     ;;
-esac
-AC_SUBST([OCAMLLEX])
+dnl OCAMLYACC=ocamlyacc
+dnl AC_ARG_WITH([ocamlyacc],
+dnl             AS_HELP_STRING([--with-ocamlyacc=PATH], [location of the ocamlyacc binary]),
+dnl         [OCAMLYACC="$withval"])
+dnl AC_MSG_CHECKING([for ocamlyacc ($OCAMLYACC)])
+dnl OCAMLYACC_VERSION=$($OCAMLYACC -version 2>/dev/null || echo foo)
+dnl case "$OCAMLYACC_VERSION" in
+dnl      *$OCAMLVERSION)
+dnl      AC_MSG_RESULT([ok])
+dnl      ;;
+dnl      foo)
+dnl      AC_MSG_RESULT([failed])
+dnl      AC_MSG_ERROR([Cannot find ocamlyacc])
+dnl      ;;
+dnl      *)
+dnl      AC_MSG_RESULT([failed])
+dnl      AC_MSG_ERROR([Bad ocamlyacc version])
+dnl      ;;
+dnl esac
+dnl AC_SUBST([OCAMLYACC])
+
+dnl #detect ocamllex
+dnl OCAMLLEX=ocamllex
+dnl AC_ARG_WITH([ocamllex],
+dnl             AS_HELP_STRING([--with-ocamllex=PATH], [location of the ocamllex binary]),
+dnl         [OCAMLLEX="$withval"])
+dnl AC_MSG_CHECKING([for ocamllex ($OCAMLLEX)])
+dnl OCAMLLEX_VERSION=$($OCAMLLEX -version 2>/dev/null || echo foo)
+dnl case "$OCAMLLEX_VERSION" in
+dnl      *$OCAMLVERSION)
+dnl      AC_MSG_RESULT([ok])
+dnl      ;;
+dnl      foo)
+dnl      AC_MSG_RESULT([failed])
+dnl      AC_MSG_ERROR([Cannot find ocamllex])
+dnl      ;;
+dnl      *)
+dnl      AC_MSG_RESULT([failed])
+dnl      AC_MSG_ERROR([Bad ocamllex version])
+dnl      ;;
+dnl esac
+dnl AC_SUBST([OCAMLLEX])
 
 
 #detect camlp4
@@ -157,6 +158,32 @@ else
    AC_MSG_ERROR([Cannot find ulex.])
 fi
 
+
+MENHIR=menhir
+AC_ARG_WITH([menhir],
+            AS_HELP_STRING([--with-menhir=PATH], [location of the menhir binary]),
+           [MENHIR="$withval"])
+
+AC_MSG_CHECKING([for menhir ($MENHIR)])
+
+MENHIR_VERSION=$($MENHIR --version 2>/dev/null || echo not_found)
+MENHIR_VERSION=$(echo "$MENHIR_VERSION" | cut -f 2- -d ',' | cut -f 2- -d ' ')
+case "$MENHIR_VERSION" in
+      'version 201'[[0-9]]*)
+      AC_MSG_RESULT([ok (${MENHIR_VERSION})])
+     ;;
+      not_found)
+      AC_MSG_RESULT([failed])
+      AC_MSG_ERROR([Cannot find menhir])
+     ;;
+     *)
+     AC_MSG_RESULT([failed])
+     AC_MSG_ERROR([Your version of  menhir is too old (${MENHIR_VERSION})])
+     ;;
+esac
+AC_SUBST([MENHIR])
+
+
 AC_MSG_CHECKING([for expat])
 expat_path=`$OCAMLFIND query expat 2>/dev/null`
 if test "$expat_path" ; then