diff --git a/configure.ac b/configure.ac --- a/configure.ac +++ b/configure.ac @@ -187,14 +187,26 @@ AC_CHECK_FUNC([open_memstream]) AM_CONDITIONAL([HAVE_HIVEXSH],[test "x$ac_cv_func_open_memstream" = "xyes"]) dnl Check for OCaml (optional, for OCaml bindings). -AC_PROG_OCAML -AC_PROG_FINDLIB +OCAMLC=no +OCAMLFIND=no +AC_ARG_ENABLE([ocaml], + AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]), + [], + [enable_ocaml=yes]) +AS_IF([test "x$enable_ocaml" != "xno"], + [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise + dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look. + OCAMLC= + OCAMLFIND= + AC_PROG_OCAML + AC_PROG_FINDLIB + ]) AM_CONDITIONAL([HAVE_OCAML], - [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) + [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"]) AM_CONDITIONAL([HAVE_OCAMLOPT], - [test "x$OCAMLOPT" != "xno" && test "x$OCAMLFIND" != "xno"]) + [test "x$OCAMLOPT" != "xno" && test "x$OCAMLFIND" != "xno"]) -if test "x$OCAMLC" != "xno"; then +if test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"; then dnl Check if we have caml/unixsupport.h header (OCaml bindings only). old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -I$OCAMLLIB" @@ -223,28 +235,32 @@ if test "x$OCAMLC" != "xno"; then rm -f conftest conftest.* conftest_ml.* fi -dnl Check for Perl (optional, for Perl bindings). -dnl XXX This isn't quite right, we should check for Perl devel library. +dnl Check for Perl (optional, for Perl bindings and Perl tools). AC_CHECK_PROG([PERL],[perl],[perl],[no]) -dnl Check for Perl modules that must be present to compile and -dnl test the Perl bindings. -missing_perl_modules=no -for pm in Test::More ExtUtils::MakeMaker IO::Stringy; do - AC_MSG_CHECKING([for $pm]) - if ! perl -M$pm -e1 >/dev/null 2>&1; then - AC_MSG_RESULT([no]) - missing_perl_modules=yes - else - AC_MSG_RESULT([yes]) - fi -done -if test "x$missing_perl_modules" = "xyes"; then - AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing]) -fi - +AC_ARG_ENABLE([perl], + AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]), + [], + [enable_perl=yes]) +AS_IF([test "x$enable_perl" != "xno"],[ + dnl Check for Perl modules that must be present to compile and + dnl test the Perl bindings. + missing_perl_modules=no + for pm in Test::More ExtUtils::MakeMaker IO::Stringy; do + AC_MSG_CHECKING([for $pm]) + if ! $PERL -M$pm -e1 >/dev/null 2>&1; then + AC_MSG_RESULT([no]) + missing_perl_modules=yes + else + AC_MSG_RESULT([yes]) + fi + done + if test "x$missing_perl_modules" = "xyes"; then + AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing]) + fi + ]) AM_CONDITIONAL([HAVE_PERL], - [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"]) + [test "x$enable_perl" != "xno" && test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"]) dnl Check for Python (optional, for Python bindings). PYTHON_PREFIX= @@ -252,85 +268,111 @@ PYTHON_VERSION= PYTHON_INCLUDEDIR= PYTHON_INSTALLDIR= -AC_CHECK_PROG([PYTHON],[python],[python],[no]) - -if test "x$PYTHON" != "xno"; then - AC_MSG_CHECKING([Python prefix]) - PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"` - AC_MSG_RESULT([$PYTHON_PREFIX]) - - AC_MSG_CHECKING([Python version]) - PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"` - PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"` - PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR" - AC_MSG_RESULT([$PYTHON_VERSION]) - - AC_MSG_CHECKING([for Python include path]) - if test -z "$PYTHON_INCLUDEDIR"; then - python_path=`$PYTHON -c "import distutils.sysconfig; \ - print (distutils.sysconfig.get_python_inc ());"` - PYTHON_INCLUDEDIR=$python_path - fi - AC_MSG_RESULT([$PYTHON_INCLUDEDIR]) - - AC_ARG_WITH([python-installdir], - [AS_HELP_STRING([--with-python-installdir], - [directory to install python modules @<:@default=check@:>@])], - [PYTHON_INSTALLDIR="$withval" - AC_MSG_NOTICE([Python install dir $PYTHON_INSTALLDIR])], - [PYTHON_INSTALLDIR=check]) - - if test "x$PYTHON_INSTALLDIR" = "xcheck"; then - PYTHON_INSTALLDIR= - AC_MSG_CHECKING([for Python site-packages path]) - if test -z "$PYTHON_INSTALLDIR"; then - PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \ - print (distutils.sysconfig.get_python_lib(1,0));"` +AC_ARG_ENABLE([python], + AS_HELP_STRING([--disable-python], [Disable Python language bindings]), + [], + [enable_python=yes]) +AS_IF([test "x$enable_python" != "xno"], + [ + AC_CHECK_PROG([PYTHON],[python],[python],[no]) + + if test "x$PYTHON" != "xno"; then + AC_MSG_CHECKING([Python prefix]) + PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"` + AC_MSG_RESULT([$PYTHON_PREFIX]) + + AC_MSG_CHECKING([Python version]) + PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"` + PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"` + PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR" + AC_MSG_RESULT([$PYTHON_VERSION]) + + AC_MSG_CHECKING([for Python include path]) + if test -z "$PYTHON_INCLUDEDIR"; then + python_path=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_python_inc ());"` + PYTHON_INCLUDEDIR=$python_path + fi + AC_MSG_RESULT([$PYTHON_INCLUDEDIR]) + + AC_ARG_WITH([python-installdir], + [AS_HELP_STRING([--with-python-installdir], + [directory to install python modules @<:@default=check@:>@])], + [PYTHON_INSTALLDIR="$withval" + AC_MSG_NOTICE([Python install dir $PYTHON_INSTALLDIR])], + [PYTHON_INSTALLDIR=check]) + + if test "x$PYTHON_INSTALLDIR" = "xcheck"; then + PYTHON_INSTALLDIR= + AC_MSG_CHECKING([for Python site-packages path]) + if test -z "$PYTHON_INSTALLDIR"; then + PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_python_lib(1,0));"` + fi + AC_MSG_RESULT([$PYTHON_INSTALLDIR]) + fi + + dnl Look for some optional symbols in libpython. + old_LIBS="$LIBS" + + PYTHON_BLDLIBRARY=`$PYTHON -c "import distutils.sysconfig; \ + print (distutils.sysconfig.get_config_var('BLDLIBRARY'))"` + AC_CHECK_LIB([c],[PyCapsule_New], + [AC_DEFINE([HAVE_PYCAPSULE_NEW],1, + [Found PyCapsule_New in libpython])], + [],[$PYTHON_BLDLIBRARY]) + AC_CHECK_LIB([c],[PyString_AsString], + [AC_DEFINE([HAVE_PYSTRING_ASSTRING],1, + [Found PyString_AsString in libpython])], + [],[$PYTHON_BLDLIBRARY]) + + LIBS="$old_LIBS" fi - AC_MSG_RESULT([$PYTHON_INSTALLDIR]) - fi - - dnl Look for libpython and some optional symbols in it. - old_LIBS="$LIBS" - if test "x$PYTHON_VERSION_MAJOR" = "x3"; then - dnl libpython3 is called "libpython3.Xmu.so" - LIBPYTHON="python${PYTHON_VERSION}mu" - else - LIBPYTHON="python$PYTHON_VERSION" - fi - AC_CHECK_LIB([$LIBPYTHON], [PyList_Size], [], - [AC_MSG_FAILURE([$LIBPYTHON is not installed])]) - - AC_CHECK_FUNCS([PyCapsule_New \ - PyString_AsString]) - LIBS="$old_LIBS" -fi - -AC_SUBST(PYTHON_PREFIX) -AC_SUBST(PYTHON_VERSION) -AC_SUBST(PYTHON_INCLUDEDIR) -AC_SUBST(PYTHON_INSTALLDIR) + AC_SUBST(PYTHON_PREFIX) + AC_SUBST(PYTHON_VERSION) + AC_SUBST(PYTHON_INCLUDEDIR) + AC_SUBST(PYTHON_INSTALLDIR) + ]) AM_CONDITIONAL([HAVE_PYTHON], [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"]) dnl Check for Ruby and rake (optional, for Ruby bindings). AC_ARG_ENABLE([ruby], - AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]), - [], - [enable_ruby=yes]) -AS_IF([test "x$enable_ruby" != "xno"], - [ - AC_CHECK_PROG([RUBY],[ruby],[ruby],[no]) - AC_CHECK_PROG([RAKE],[rake],[rake],[no]) - AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0]) - AC_SUBST(RAKE) + AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]), + [], + [enable_ruby=yes]) +AS_IF([test "x$enable_ruby" != "xno"],[ + AC_CHECK_PROG([RUBY],[ruby],[ruby],[no]) + AC_CHECK_PROG([RAKE],[rake],[rake],[no]) + + AS_IF([test -n "$RUBY" && test -n "$RAKE"],[ + dnl Find the library. Note on Debian it's not -lruby. + AC_MSG_CHECKING([for C library for Ruby extensions]) + ruby_cmd='puts RbConfig::CONFIG@<:@"RUBY_SO_NAME"@:>@' + echo running: $RUBY -rrbconfig -e \'$ruby_cmd\' >&AS_MESSAGE_LOG_FD + $RUBY -rrbconfig -e "$ruby_cmd" >conftest 2>&AS_MESSAGE_LOG_FD + libruby="$(cat conftest)" + rm conftest + AS_IF([test -n "$libruby"],[ + AC_MSG_RESULT([-l$libruby]) + AC_CHECK_LIB([$libruby],[ruby_init], + [have_libruby=1],[have_libruby=]) + + dnl Symbols that we substitute when missing. + AS_IF([test -n "$have_libruby"],[ + old_LIBS="$LIBS" + LIBS="$LIBS -l$libruby" + AC_CHECK_FUNCS([rb_hash_lookup]) + LIBS="$old_LIBS" + ]) + ],[ + AC_MSG_RESULT([not found]) ]) + ]) +]) AM_CONDITIONAL([HAVE_RUBY], - [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"]) - -AM_CONDITIONAL([HAVE_RUBY], - [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"]) + [test -n "$RUBY" && test -n "$RAKE" && test -n "$have_libruby"]) dnl dnl Check for Java. dnl AC_ARG_WITH(java_home,