Less old version, and work better with newer versions of autoconf.
Adapt configure.ac to it:
- use the different variable names set by AC_CHECK_OCAML_PKG
- remove the comment about using ocamlfind, as it is what the new macros
do already
Signed-off-by: Pino Toscano <ptoscano(a)redhat.com>
---
configure.ac | 5 +-
m4/ocaml.m4 | 331 +++++++++++++++++++++++++++++----------------------
2 files changed, 191 insertions(+), 145 deletions(-)
diff --git a/configure.ac b/configure.ac
index dcb4ae7..11ff2bf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -82,11 +82,10 @@ if test "x$OCAMLFIND" = "x"; then
AC_MSG_ERROR([OCaml findlib is required])
fi
-dnl Use ocamlfind to find the required packages ...
-
dnl Check for required OCaml packages.
+OCAML_PKG_unix=no
AC_CHECK_OCAML_PKG(unix)
-if test "x$pkg_unix" != "xyes"; then
+if test "x$OCAML_PKG_unix" = "xno"; then
AC_MSG_ERROR([Cannot find required OCaml package 'unix'])
fi
diff --git a/m4/ocaml.m4 b/m4/ocaml.m4
index 38ad15f..fddd6a0 100644
--- a/m4/ocaml.m4
+++ b/m4/ocaml.m4
@@ -1,170 +1,217 @@
dnl autoconf macros for OCaml
-dnl by Olivier Andrieu
-dnl modified by Richard W.M. Jones
-dnl from a configure.in by Jean-Christophe Filli�tre,
-dnl from a first script by Georges Mariano
dnl
-dnl defines AC_PROG_OCAML that will check the OCaml compiler
-dnl and set the following variables :
-dnl OCAMLC "ocamlc" if present in the path, or a failure
-dnl or "ocamlc.opt" if present with same version number as
ocamlc
-dnl OCAMLOPT "ocamlopt" (or "ocamlopt.opt" if present), or
"no"
-dnl OCAMLBEST either "byte" if no native compiler was found,
-dnl or "opt" otherwise
-dnl OCAMLDEP "ocamldep"
-dnl OCAMLLIB the path to the ocaml standard library
-dnl OCAMLVERSION the ocaml version number
-AC_DEFUN(AC_PROG_OCAML,
+dnl Copyright © 2009 Richard W.M. Jones
+dnl Copyright © 2009 Stefano Zacchiroli
+dnl Copyright © 2000-2005 Olivier Andrieu
+dnl Copyright © 2000-2005 Jean-Christophe Filliâtre
+dnl Copyright © 2000-2005 Georges Mariano
+dnl
+dnl For documentation, please read the ocaml.m4 man page.
+
+AC_DEFUN([AC_PROG_OCAML],
[dnl
-# checking for ocamlc
-AC_CHECK_PROG(OCAMLC,ocamlc,ocamlc,AC_MSG_ERROR(Cannot find ocamlc.))
-OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
-AC_MSG_RESULT(OCaml version is $OCAMLVERSION)
-OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f 4`
-AC_MSG_RESULT(OCaml library path is $OCAMLLIB)
-# checking for ocamlopt
-AC_CHECK_PROG(OCAMLOPT,ocamlopt,ocamlopt)
-OCAMLBEST=byte
-if test -z "$OCAMLOPT"; then
- AC_MSG_WARN(Cannot find ocamlopt; bytecode compilation only.)
-else
- TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
- if test "$TMPVERSION" != "$OCAMLVERSION" ; then
- AC_MSG_RESULT(versions differs from ocamlc; ocamlopt discarded.)
- unset OCAMLOPT
- else
- OCAMLBEST=opt
- fi
-fi
-# checking for ocamlc.opt
-AC_CHECK_PROG(OCAMLCDOTOPT,ocamlc.opt,ocamlc.opt)
-if test -z "$OCAMLCDOTOPT"; then
- TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
- if test "$TMPVERSION" != "$OCAMLVERSION" ; then
- AC_MSG_RESULT(versions differs from ocamlc; ocamlc.opt discarded.)
- else
- OCAMLC=$OCAMLCDOTOPT
- fi
-fi
-# checking for ocamlopt.opt
-if test "$OCAMLOPT" ; then
- AC_CHECK_PROG(OCAMLOPTDOTOPT,ocamlopt.opt,ocamlopt.opt)
- if test "$OCAMLOPTDOTOPT"; then
- TMPVER=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
- if test "$TMPVER" != "$OCAMLVERSION" ; then
- AC_MSG_RESULT(version differs from ocamlc; ocamlopt.opt discarded.)
- else
- OCAMLOPT=$OCAMLOPTDOTOPT
- fi
- fi
-fi
-# checking for ocamldep
-AC_CHECK_PROG(OCAMLDEP,ocamldep,ocamldep,AC_MSG_ERROR(Cannot find ocamldep.))
-
-#checking for ocamlmktop
-AC_CHECK_PROG(OCAMLMKTOP,ocamlmktop,ocamlmktop, AC_MSG_WARN(Cannot find ocamlmktop.))
-#checking for ocamlmklib
-AC_CHECK_PROG(OCAMLMKLIB,ocamlmklib,ocamlmklib, AC_MSG_WARN(Cannot find ocamlmklib.))
-# checking for ocamldoc
-AC_CHECK_PROG(OCAMLDOC,ocamldoc,ocamldoc, AC_MSG_WARN(Cannot find ocamldoc.))
-
-
-AC_SUBST(OCAMLC)
-AC_SUBST(OCAMLOPT)
-AC_SUBST(OCAMLDEP)
-AC_SUBST(OCAMLBEST)
-AC_SUBST(OCAMLVERSION)
-AC_SUBST(OCAMLLIB)
-AC_SUBST(OCAMLMKLIB)
-AC_SUBST(OCAMLDOC)
+ # checking for ocamlc
+ AC_CHECK_TOOL([OCAMLC],[ocamlc],[no])
+
+ if test "$OCAMLC" != "no"; then
+ OCAMLVERSION=`$OCAMLC -v | sed -n -e 's|.*version* *\(.*\)$|\1|p'`
+ AC_MSG_RESULT([OCaml version is $OCAMLVERSION])
+ OCAMLLIB=`$OCAMLC -where 2>/dev/null || $OCAMLC -v|tail -1|cut -d ' ' -f
4`
+ AC_MSG_RESULT([OCaml library path is $OCAMLLIB])
+
+ AC_SUBST([OCAMLVERSION])
+ AC_SUBST([OCAMLLIB])
+
+ # checking for ocamlopt
+ AC_CHECK_TOOL([OCAMLOPT],[ocamlopt],[no])
+ OCAMLBEST=byte
+ if test "$OCAMLOPT" = "no"; then
+ AC_MSG_WARN([Cannot find ocamlopt; bytecode compilation only.])
+ else
+ TMPVERSION=`$OCAMLOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+ if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+ AC_MSG_RESULT([versions differs from ocamlc; ocamlopt discarded.])
+ OCAMLOPT=no
+ else
+ OCAMLBEST=opt
+ fi
+ fi
+
+ AC_SUBST([OCAMLBEST])
+
+ # checking for ocamlc.opt
+ AC_CHECK_TOOL([OCAMLCDOTOPT],[ocamlc.opt],[no])
+ if test "$OCAMLCDOTOPT" != "no"; then
+ TMPVERSION=`$OCAMLCDOTOPT -v | sed -n -e 's|.*version* *\(.*\)$|\1|p' `
+ if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+ AC_MSG_RESULT([versions differs from ocamlc; ocamlc.opt discarded.])
+ else
+ OCAMLC=$OCAMLCDOTOPT
+ fi
+ fi
+
+ # checking for ocamlopt.opt
+ if test "$OCAMLOPT" != "no" ; then
+ AC_CHECK_TOOL([OCAMLOPTDOTOPT],[ocamlopt.opt],[no])
+ if test "$OCAMLOPTDOTOPT" != "no"; then
+ TMPVERSION=`$OCAMLOPTDOTOPT -v | sed -n -e 's|.*version*
*\(.*\)$|\1|p' `
+ if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+ AC_MSG_RESULT([version differs from ocamlc; ocamlopt.opt discarded.])
+ else
+ OCAMLOPT=$OCAMLOPTDOTOPT
+ fi
+ fi
+ fi
+
+ AC_SUBST([OCAMLOPT])
+ fi
+
+ AC_SUBST([OCAMLC])
+
+ # checking for ocamldep
+ AC_CHECK_TOOL([OCAMLDEP],[ocamldep],[no])
+
+ # checking for ocamlmktop
+ AC_CHECK_TOOL([OCAMLMKTOP],[ocamlmktop],[no])
+
+ # checking for ocamlmklib
+ AC_CHECK_TOOL([OCAMLMKLIB],[ocamlmklib],[no])
+
+ # checking for ocamldoc
+ AC_CHECK_TOOL([OCAMLDOC],[ocamldoc],[no])
+
+ # checking for ocamlbuild
+ AC_CHECK_TOOL([OCAMLBUILD],[ocamlbuild],[no])
])
-dnl macro AC_PROG_OCAML_TOOLS will check OCamllex and OCamlyacc :
-dnl OCAMLLEX "ocamllex" or "ocamllex.opt" if present
-dnl OCAMLYACC "ocamlyac"
-AC_DEFUN(AC_PROG_OCAML_TOOLS,
+AC_DEFUN([AC_PROG_OCAMLLEX],
[dnl
-# checking for ocamllex and ocamlyacc
-AC_CHECK_PROG(OCAMLLEX,ocamllex,ocamllex)
-if test "$OCAMLLEX"; then
- AC_CHECK_PROG(OCAMLLEXDOTOPT,ocamllex.opt,ocamllex.opt)
- if test "$OCAMLLEXDOTOPT"; then
- OCAMLLEX=$OCAMLLEXDOTOPT
+ # checking for ocamllex
+ AC_CHECK_TOOL([OCAMLLEX],[ocamllex],[no])
+ if test "$OCAMLLEX" != "no"; then
+ AC_CHECK_TOOL([OCAMLLEXDOTOPT],[ocamllex.opt],[no])
+ if test "$OCAMLLEXDOTOPT" != "no"; then
+ OCAMLLEX=$OCAMLLEXDOTOPT
fi
-else
- AC_MSG_ERROR(Cannot find ocamllex.)
-fi
-AC_CHECK_PROG(OCAMLYACC,ocamlyacc,ocamlyacc,AC_MSG_ERROR(Cannot find ocamlyacc.))
-AC_SUBST(OCAMLLEX)
-AC_SUBST(OCAMLYACC)
+ fi
+ AC_SUBST([OCAMLLEX])
+])
+
+AC_DEFUN([AC_PROG_OCAMLYACC],
+[dnl
+ AC_CHECK_TOOL([OCAMLYACC],[ocamlyacc],[no])
+ AC_SUBST([OCAMLYACC])
])
-dnl AC_PROG_CAMLP4 checks for Camlp4
-AC_DEFUN(AC_PROG_CAMLP4,
+AC_DEFUN([AC_PROG_CAMLP4],
[dnl
-AC_REQUIRE([AC_PROG_OCAML])
-# checking for camlp4
-AC_CHECK_PROG(CAMLP4,camlp4,camlp4)
-if test "$CAMLP4"; then
- TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'`
- if test "$TMPVERSION" != "$OCAMLVERSION" ; then
- AC_MSG_RESULT(versions differs from ocamlc)
- fi
-fi
+ AC_REQUIRE([AC_PROG_OCAML])dnl
+
+ # checking for camlp4
+ AC_CHECK_TOOL([CAMLP4],[camlp4],[no])
+ if test "$CAMLP4" != "no"; then
+ TMPVERSION=`$CAMLP4 -v 2>&1| sed -n -e 's|.*version *\(.*\)$|\1|p'`
+ if test "$TMPVERSION" != "$OCAMLVERSION" ; then
+ AC_MSG_RESULT([versions differs from ocamlc])
+ CAMLP4=no
+ fi
+ fi
+ AC_SUBST([CAMLP4])
+
+ # checking for companion tools
+ AC_CHECK_TOOL([CAMLP4BOOT],[camlp4boot],[no])
+ AC_CHECK_TOOL([CAMLP4O],[camlp4o],[no])
+ AC_CHECK_TOOL([CAMLP4OF],[camlp4of],[no])
+ AC_CHECK_TOOL([CAMLP4OOF],[camlp4oof],[no])
+ AC_CHECK_TOOL([CAMLP4ORF],[camlp4orf],[no])
+ AC_CHECK_TOOL([CAMLP4PROF],[camlp4prof],[no])
+ AC_CHECK_TOOL([CAMLP4R],[camlp4r],[no])
+ AC_CHECK_TOOL([CAMLP4RF],[camlp4rf],[no])
+ AC_SUBST([CAMLP4BOOT])
+ AC_SUBST([CAMLP4O])
+ AC_SUBST([CAMLP4OF])
+ AC_SUBST([CAMLP4OOF])
+ AC_SUBST([CAMLP4ORF])
+ AC_SUBST([CAMLP4PROF])
+ AC_SUBST([CAMLP4R])
+ AC_SUBST([CAMLP4RF])
])
-dnl macro AC_PROG_FINDLIB will check for the presence of
-dnl ocamlfind
-AC_DEFUN(AC_PROG_FINDLIB,
+AC_DEFUN([AC_PROG_FINDLIB],
[dnl
-# checking for ocamlfind
-AC_CHECK_PROG(OCAMLFIND,ocamlfind,ocamlfind,
- AC_MSG_WARN([ocamlfind not found]))
-AC_SUBST(OCAMLFIND)
+ AC_REQUIRE([AC_PROG_OCAML])dnl
+
+ # checking for ocamlfind
+ AC_CHECK_TOOL([OCAMLFIND],[ocamlfind],[no])
+ AC_SUBST([OCAMLFIND])
])
-dnl AC_CHECK_OCAML_PKG checks wether a findlib package is present
-dnl defines pkg_name to "yes"
-AC_DEFUN(AC_CHECK_OCAML_PKG,
+dnl Thanks to Jim Meyering for working this next bit out for us.
+dnl XXX We should define AS_TR_SH if it's not defined already
+dnl (eg. for old autoconf).
+AC_DEFUN([AC_CHECK_OCAML_PKG],
[dnl
-AC_REQUIRE([AC_PROG_FINDLIB])
-AC_MSG_CHECKING(findlib package $1)
-if $OCAMLFIND query $1 >/dev/null 2>/dev/null; then
-AC_MSG_RESULT(found)
-eval "pkg_`echo $1 | tr - _`=yes"
-else
-AC_MSG_RESULT(not found)
-eval "pkg_`echo $1 | tr - _`=no"
-fi
+ AC_REQUIRE([AC_PROG_FINDLIB])dnl
+
+ AC_MSG_CHECKING([for OCaml findlib package $1])
+
+ unset found
+ unset pkg
+ found=no
+ for pkg in $1 $2 ; do
+ if $OCAMLFIND query $pkg >/dev/null 2>/dev/null; then
+ AC_MSG_RESULT([found])
+ AS_TR_SH([OCAML_PKG_$1])=$pkg
+ found=yes
+ break
+ fi
+ done
+ if test "$found" = "no" ; then
+ AC_MSG_RESULT([not found])
+ AS_TR_SH([OCAML_PKG_$1])=no
+ fi
+
+ AC_SUBST(AS_TR_SH([OCAML_PKG_$1]))
])
-dnl AC_CHECK_OCAML_MODULE looks for a module in a given path
-dnl 1st arg -> name (just for printing messages)
-dnl 2nd arg -> env var name (set to include path, or "no" if not found)
-dnl 3rd arg -> module to check
-dnl 4th arg -> default include dirs to check
AC_DEFUN([AC_CHECK_OCAML_MODULE],
[dnl
-AC_MSG_CHECKING(for module $1)
-cat > conftest.ml <<EOF
+ AC_MSG_CHECKING([for OCaml module $2])
+
+ cat > conftest.ml <<EOF
open $3
EOF
-unset found
-for $2 in $$2 $4 ; do
- if $OCAMLC -c -I "$$2" conftest.ml >&5 2>&5 ; then
- found=yes
- break
+ unset found
+ for $1 in $$1 $4 ; do
+ if $OCAMLC -c -I "$$1" conftest.ml >&5 2>&5 ; then
+ found=yes
+ break
+ fi
+ done
+
+ if test "$found" ; then
+ AC_MSG_RESULT([$$1])
+ else
+ AC_MSG_RESULT([not found])
+ $1=no
fi
-done
-if test "$found" ; then
- AC_MSG_RESULT($$2)
-else
- AC_MSG_RESULT(not found)
- $2=no
-fi
-AC_SUBST($2)])
+ AC_SUBST([$1])
+])
+
+
+dnl XXX Cross-compiling
+AC_DEFUN([AC_CHECK_OCAML_WORD_SIZE],
+[dnl
+ AC_MSG_CHECKING([for OCaml compiler word size])
+ cat > conftest.ml <<EOF
+ print_endline (string_of_int Sys.word_size)
+ EOF
+ OCAML_WORD_SIZE=`ocaml conftest.ml`
+ AC_MSG_RESULT([$OCAML_WORD_SIZE])
+ AC_SUBST([OCAML_WORD_SIZE])
+])
--
2.17.2