summaryrefslogtreecommitdiff
path: root/build/ac-macros/swig.m4
diff options
context:
space:
mode:
Diffstat (limited to 'build/ac-macros/swig.m4')
-rw-r--r--build/ac-macros/swig.m4703
1 files changed, 474 insertions, 229 deletions
diff --git a/build/ac-macros/swig.m4 b/build/ac-macros/swig.m4
index 91c6821..167007d 100644
--- a/build/ac-macros/swig.m4
+++ b/build/ac-macros/swig.m4
@@ -21,33 +21,40 @@ dnl check to see if SWIG is current enough.
dnl
dnl if it is, then check to see if we have the correct version of python.
dnl
-dnl if we do, then set up the appropriate SWIG_ variables to build the
-dnl python bindings.
+dnl if we do, then set up the appropriate SWIG_ variables to build the
+dnl Python, Perl, and Ruby bindings.
AC_DEFUN(SVN_CHECK_SWIG,
[
- AC_ARG_WITH(swig,
- AS_HELP_STRING([--with-swig=PATH],
- [Try to use 'PATH/bin/swig' to build the
- swig bindings. If PATH is not specified,
- look for a 'swig' binary in your PATH.]),
+ m4_ifndef([SVN_RELEASE_MODE],
[
- case "$withval" in
- "no")
- SWIG_SUITABLE=no
- SVN_FIND_SWIG(no)
- ;;
- "yes")
- SVN_FIND_SWIG(required)
+ AC_ARG_WITH(swig,
+ AS_HELP_STRING([--with-swig=PATH],
+ [Try to use 'PATH/bin/swig' to build the
+ swig bindings. If PATH is not specified,
+ look for a 'swig' binary in your PATH.]),
+ [
+ case "$withval" in
+ yes)
+ svn_find_swig_arg=required
;;
*)
- SVN_FIND_SWIG($withval)
+ svn_find_swig_arg=$withval
;;
- esac
- ],
- [
- SVN_FIND_SWIG(check)
+ esac
+ ],
+ [
+ if test "$SWIG_PY_PYTHON" != "none" \
+ || test "$SWIG_PL_PERL" != "none" \
+ || test "$SWIG_RB_RUBY" != "none" ; then
+ svn_find_swig_arg=check
+ else
+ svn_find_swig_arg=no
+ fi
+ ])
+ SVN_FIND_SWIG($svn_find_swig_arg)
])
+ SVN_DETERMINE_SWIG_OPTS
])
AC_DEFUN(SVN_FIND_SWIG,
@@ -69,7 +76,7 @@ AC_DEFUN(SVN_FIND_SWIG,
fi
if test ! -f "$SWIG" || test ! -x "$SWIG"; then
AC_MSG_ERROR([Could not find swig binary at $SWIG])
- fi
+ fi
fi
if test "$SWIG" != "none"; then
@@ -78,7 +85,7 @@ AC_DEFUN(SVN_FIND_SWIG,
$SED -ne 's/^.*Version \(.*\)$/\1/p'`"
# We want the version as an integer so we can test against
# which version we're using. SWIG doesn't provide this
- # to us so we have to come up with it on our own.
+ # to us so we have to come up with it on our own.
# The major is passed straight through,
# the minor is zero padded to two places,
# and the patch level is zero padded to three places.
@@ -91,100 +98,116 @@ AC_DEFUN(SVN_FIND_SWIG,
AC_MSG_RESULT([$SWIG_VERSION_RAW])
# If you change the required swig version number, don't forget to update:
# subversion/bindings/swig/INSTALL
- if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103024"; then
- SWIG_SUITABLE=yes
- else
- SWIG_SUITABLE=no
+ if test ! -n "$SWIG_VERSION" || test "$SWIG_VERSION" -lt "103024"; then
AC_MSG_WARN([Detected SWIG version $SWIG_VERSION_RAW])
AC_MSG_WARN([Subversion requires SWIG >= 1.3.24])
fi
fi
-
- SWIG_PY_COMPILE="none"
- SWIG_PY_LINK="none"
- SWIG_PY_OPTS="none"
- SWIG_PY_ERRMSG="check config.log for details"
- if test "$PYTHON" != "none"; then
- AC_MSG_NOTICE([Configuring python swig binding])
-
- AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
- ac_cv_python_includes="`$PYTHON ${abs_srcdir}/build/get-py-info.py --includes`"
- ])
- SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
+])
- if test "$ac_cv_python_includes" = "none"; then
- SWIG_PY_ERRMSG="no distutils found"
- AC_MSG_WARN([python bindings cannot be built without distutils module])
+
+AC_DEFUN(SVN_DETERMINE_SWIG_OPTS,
+[
+ m4_ifndef([SVN_RELEASE_MODE],
+ [
+ # not in release mode
+ SWIG_PY_COMPILE="none"
+ SWIG_PY_LINK="none"
+ SWIG_PY_OPTS="none"
+ SWIG_PY_ERRMSG="check config.log for details"
+ if test "$SWIG_PY_PYTHON" = "none"; then
+ SWIG_PY_ERRMSG="You specfied not to build Python bindings or \
+suitable Python interpreter is not found."
else
+ if test "$SWIG" = "none"; then
+ AC_MSG_WARN([You specified to build SWIG Python bindings, but SWIG is not found.])
+ SWIG_PY_ERRMSG="SWIG is need to build SWIG Python bindings, but it is not found."
+ else
+ AC_MSG_NOTICE([Configuring python swig binding])
- python_header_found="no"
+ AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
+ ac_cv_python_includes="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --includes`"
+ ])
+ SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
- save_cppflags="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
- AC_CHECK_HEADER(Python.h, [
- python_header_found="yes"
- ])
- CPPFLAGS="$save_cppflags"
+ if test "$ac_cv_python_includes" = "none"; then
+ SWIG_PY_ERRMSG="no distutils found"
+ AC_MSG_WARN([python bindings cannot be built without distutils module])
+ else
- if test "$python_header_found" = "no"; then
- SWIG_PY_ERRMSG="no Python.h found"
- AC_MSG_WARN([Python.h not found; disabling python swig bindings])
- else
- SVN_PY3C()
+ python_header_found="no"
- if test "$py3c_found" = "no"; then
- SWIG_PY_ERRMSG="py3c library not found"
- AC_MSG_WARN([py3c library not found; disabling python swig bindings])
- else
- AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[
- ac_cv_python_compile="`$PYTHON ${abs_srcdir}/build/get-py-info.py --compile`"
- ])
- SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
-
- AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
- ac_cv_python_link="`$PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
- ])
- SWIG_PY_LINK="$ac_cv_python_link"
-
- AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
- ac_cv_python_libs="`$PYTHON ${abs_srcdir}/build/get-py-info.py --libs`"
+ save_cppflags="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
+ AC_CHECK_HEADER(Python.h, [
+ python_header_found="yes"
])
- SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
+ CPPFLAGS="$save_cppflags"
- if test "$SWIG" = "none"; then
- SWIG_PY_ERRMSG=""
+ if test "$python_header_found" = "no"; then
+ SWIG_PY_ERRMSG="no Python.h found"
+ AC_MSG_WARN([Python.h not found; disabling python swig bindings])
else
- # Look more closely at the SWIG and Python versions to
- # determine SWIG_PY_OPTS. We can skip this if we already
- # have the SWIG-generated files.
- AC_CACHE_CHECK([for Python >= 3], [ac_cv_python_is_py3],[
- ac_cv_python_is_py3="no"
- $PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \
- ac_cv_python_is_py3="yes"
- ])
-
- if test "$ac_cv_python_is_py3" = "yes"; then
- if test "$SWIG_VERSION" -ge "300010"; then
- dnl SWIG Python bindings successfully configured, clear the error message dnl
- SWIG_PY_ERRMSG=""
- else
- SWIG_PY_ERRMSG="SWIG version is not suitable"
- AC_MSG_WARN([Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer])
- fi
- if test "$SWIG_VERSION" -lt "400000"; then
- SWIG_PY_OPTS="-python -py3 -nofastunpack -modern"
- else
- SWIG_PY_OPTS="-python -py3 -nofastunpack"
- fi
+ SVN_PY3C()
+
+ if test "$py3c_found" = "no"; then
+ SWIG_PY_ERRMSG="py3c library not found"
+ AC_MSG_WARN([py3c library not found; disabling python swig bindings])
else
- if test "$SWIG_VERSION" -lt "400000"; then
- SWIG_PY_OPTS="-python -classic"
- dnl SWIG Python bindings successfully configured, clear the error message dnl
- SWIG_PY_ERRMSG=""
+ AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[
+ ac_cv_python_compile="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --compile`"
+ ])
+ SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
+
+ AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
+ ac_cv_python_link="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
+ ])
+ SWIG_PY_LINK="$ac_cv_python_link"
+
+ AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
+ ac_cv_python_libs="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --libs`"
+ ])
+ SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
+
+ # Look more closely at the SWIG and Python versions to
+ # determine SWIG_PY_OPTS. We can skip this if we already
+ # have the SWIG-generated files.
+ AC_CACHE_CHECK([for Python >= 3], [ac_cv_python_is_py3],[
+ ac_cv_python_is_py3="no"
+ $SWIG_PY_PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \
+ ac_cv_python_is_py3="yes"
+ ])
+
+ if test "$ac_cv_python_is_py3" = "yes"; then
+ if test "$SWIG_VERSION" -ge "300010"; then
+ dnl SWIG Python bindings successfully configured, clear the error message dnl
+ SWIG_PY_ERRMSG=""
+ if test "$SWIG_VERSION" -lt "400000"; then
+ SWIG_PY_OPTS="-python -py3 -nofastunpack -modern"
+ elif test "$SWIG_VERSION" -lt "401000"; then
+ SWIG_PY_OPTS="-python -py3 -nofastunpack"
+ else
+ SWIG_PY_OPTS="-python -nofastunpack"
+ fi
+ if test "$SWIG_VERSION" -gt "400002"; then
+ AC_MSG_WARN([Subversion Python bindings may work,])
+ AC_MSG_WARN([but we didn't check with this SWIG version.])
+ fi
+ else
+ SWIG_PY_OPTS="-no-such-option" # fool proof
+ SWIG_PY_ERRMSG="SWIG version is not suitable"
+ AC_MSG_WARN([Subversion Python bindings for Python 3 require SWIG 3.0.10 or newer])
+ fi
else
- SWIG_PY_OPTS="-python -nofastunpack"
- SWIG_PY_ERRMSG="SWIG version is not suitable"
- AC_MSG_WARN([Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0])
+ if test "$SWIG_VERSION" -lt "400000"; then
+ SWIG_PY_OPTS="-python -classic"
+ dnl SWIG Python bindings successfully configured, clear the error message dnl
+ SWIG_PY_ERRMSG=""
+ else
+ SWIG_PY_OPTS="-no-such-option" # fool proof
+ SWIG_PY_ERRMSG="SWIG version is not suitable"
+ AC_MSG_WARN([Subversion Python bindings for Python 2 require 1.3.24 <= SWIG < 4.0.0])
+ fi
fi
fi
fi
@@ -192,151 +215,373 @@ AC_DEFUN(SVN_FIND_SWIG,
fi
fi
- fi
-
- SWIG_PL_ERRMSG="check config.log for details"
- if test "$PERL" != "none"; then
- AC_MSG_CHECKING([perl version])
- dnl Note that the q() bit is there to avoid unbalanced brackets
- dnl which m4 really doesn't like.
- PERL_VERSION="`$PERL -e 'q([[); print $]] * 1000000,$/;'`"
- AC_MSG_RESULT([$PERL_VERSION])
- if test "$PERL_VERSION" -ge "5008000"; then
- SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$PERL -MExtUtils::Embed -e ccopts`"
- SWIG_PL_LINK="`$PERL -MExtUtils::Embed -e ldopts`"
- SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
-
- dnl SWIG Perl bindings successfully configured, clear the error message
- SWIG_PL_ERRMSG=""
+ SWIG_PL_ERRMSG="check config.log for details"
+ if test "$SWIG_PL_PERL" = "none"; then
+ SWIG_PL_ERRMSG="You specfied not to build Perl bindings or \
+suitable Perl interpreter is not found."
else
- AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
+ if test "$SWIG" = "none"; then
+ AC_MSG_WARN([You specified to build SWIG Perl bindings, but SWIG is not found.])
+ SWIG_PL_ERRMSG="SWIG is need to build SWIG Perl bindings, but it is not found."
+ else
+ AC_MSG_CHECKING([perl version])
+ dnl Note that the q() bit is there to avoid unbalanced brackets
+ dnl which m4 really doesn't like.
+ PERL_VERSION="`$SWIG_PL_PERL -e 'q([[); print $]] * 1000000,$/;'`"
+ AC_MSG_RESULT([$PERL_VERSION])
+ if test "$PERL_VERSION" -ge "5008000"; then
+ SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$SWIG_PL_PERL -MExtUtils::Embed -e ccopts`"
+ SWIG_PL_LINK="`$SWIG_PL_PERL -MExtUtils::Embed -e ldopts`"
+ SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
+
+ dnl SWIG Perl bindings successfully configured, clear the error message
+ SWIG_PL_ERRMSG=""
+ else
+ AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
+ fi
+ fi
fi
- fi
- SWIG_RB_COMPILE="none"
- SWIG_RB_LINK="none"
- SWIG_RB_ERRMSG="check config.log for details"
- if test "$RUBY" != "none"; then
- if test x"$SWIG_VERSION" = x"3""00""008"; then
- # Use a local variable to escape the '#' sign.
- ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602'
- AC_MSG_WARN([Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602])
+ SWIG_RB_COMPILE="none"
+ SWIG_RB_LINK="none"
+ SWIG_RB_ERRMSG="check config.log for details"
+ if test "$SWIG_RB_RUBY" = "none"; then
+ SWIG_RB_ERRMSG="You specfied not to build Ruby bindings or \
+suitable Ruby interpreter is not found."
+ else
+ if test "$SWIG" = "none"; then
+ AC_MSG_WARN([You specified to build SWIG Ruby bindings, but SWIG is not found.])
+ SWIG_RB_ERRMSG="SWIG is need to build SWIG Ruby bindings, but it is not found."
+ else
+ if test x"$SWIG_VERSION" = x"3""00""008"; then
+ # Use a local variable to escape the '#' sign.
+ ruby_swig_issue_602='https://subversion.apache.org/docs/release-notes/1.11#ruby-swig-issue-602'
+ AC_MSG_WARN([Ruby bindings are known not to support swig 3.0.8; see $ruby_swig_issue_602])
+ fi
+ rbconfig="$SWIG_RB_RUBY -rrbconfig -e "
+
+ for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
+ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir
+ do
+ rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"`
+ eval "rbconfig_$var_name=\"$rbconfig_tmp\""
+ done
+
+ AC_MSG_NOTICE([Configuring Ruby SWIG binding])
+
+ AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[
+ if test -d "$rbconfig_rubyhdrdir"; then
+ dnl Ruby >=1.9
+ svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir"
+ if test -d "$rbconfig_rubyarchhdrdir"; then
+ dnl Ruby >=2.0
+ svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir"
+ else
+ svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch"
+ fi
+ else
+ dnl Ruby 1.8
+ svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
+ fi
+ ])
+ SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
+
+ AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
+ svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
+ ])
+ SWIG_RB_COMPILE="$svn_cv_ruby_compile"
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
+ dnl FIXME: Check that the compiler for Ruby actually supports this flag
+ SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
+
+ AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
+ svn_cv_ruby_link="`$SWIG_RB_RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \
+ $rbconfig_LDSHARED`"
+ svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link"
+ svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT"
+ ])
+ SWIG_RB_LINK="$svn_cv_ruby_link"
+
+ AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [
+ ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS"
+ ])
+ SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`"
+
+ AC_MSG_CHECKING([for rb_errinfo])
+ old_CFLAGS="$CFLAGS"
+ old_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $svn_cv_ruby_includes"
+ SVN_STRIP_FLAG([CFLAGS], [-ansi])
+ SVN_STRIP_FLAG([CFLAGS], [-std=c89])
+ SVN_STRIP_FLAG([CFLAGS], [-std=c90])
+ LIBS="$SWIG_RB_LIBS"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
+#include <ruby.h>
+int main()
+{rb_errinfo();}]])], have_rb_errinfo="yes", have_rb_errinfo="no")
+ if test "$have_rb_errinfo" = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_RB_ERRINFO], [1],
+ [Define to 1 if you have the `rb_errinfo' function.])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
+
+ AC_CACHE_VAL([svn_cv_ruby_sitedir],[
+ svn_cv_ruby_sitedir="$rbconfig_sitedir"
+ ])
+ AC_ARG_WITH([ruby-sitedir],
+ AS_HELP_STRING([--with-ruby-sitedir=SITEDIR],
+ [install Ruby bindings in SITEDIR
+ (default is same as ruby's one)]),
+ [svn_ruby_installdir="$withval"],
+ [svn_ruby_installdir="$svn_cv_ruby_sitedir"])
+
+ AC_MSG_CHECKING([where to install Ruby scripts])
+ AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
+ svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
+ $SED -e "s,^$rbconfig_sitedir,,"`"
+ ])
+ SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
+ AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
+
+ AC_MSG_CHECKING([where to install Ruby extensions])
+ AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
+ svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
+ $SED -e "s,^$rbconfig_sitedir,,"`"
+ ])
+ SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
+ AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
+
+ AC_MSG_CHECKING([how to use output level for Ruby bindings tests])
+ AC_CACHE_VAL([svn_cv_ruby_test_verbose],[
+ svn_cv_ruby_test_verbose="normal"
+ ])
+ AC_ARG_WITH([ruby-test-verbose],
+ AS_HELP_STRING([--with-ruby-test-verbose=LEVEL],
+ [how to use output level for Ruby bindings tests
+ (default is normal)]),
+ [svn_ruby_test_verbose="$withval"],
+ [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"])
+ SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose"
+ AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE])
+
+ dnl SWIG Ruby bindings successfully configured, clear the error message
+ SWIG_RB_ERRMSG=""
+ fi
fi
- rbconfig="$RUBY -rrbconfig -e "
-
- for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
- rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir
- do
- rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"`
- eval "rbconfig_$var_name=\"$rbconfig_tmp\""
- done
-
- AC_MSG_NOTICE([Configuring Ruby SWIG binding])
-
- AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[
- if test -d "$rbconfig_rubyhdrdir"; then
- dnl Ruby >=1.9
- svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir"
- if test -d "$rbconfig_rubyarchhdrdir"; then
- dnl Ruby >=2.0
- svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir"
+ ],
+ [
+ # in release mode
+ SWIG_PY_COMPILE="none"
+ SWIG_PY_LINK="none"
+ SWIG_PY_OPTS="none"
+ SWIG_PY_ERRMSG="check config.log for details"
+ if test "$SWIG_PY_PYTHON" = "none"; then
+ SWIG_PY_ERRMSG="You specfied not to build Python bindings or \
+suitable Python interpreter is not found."
+ else
+ AC_MSG_NOTICE([Configuring python swig binding])
+
+ AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
+ ac_cv_python_includes="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --includes`"
+ ])
+ SWIG_PY_INCLUDES="\$(SWIG_INCLUDES) $ac_cv_python_includes"
+
+ if test "$ac_cv_python_includes" = "none"; then
+ SWIG_PY_ERRMSG="no distutils found"
+ AC_MSG_WARN([python bindings cannot be built without distutils module])
else
- svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch"
+
+ python_header_found="no"
+
+ save_cppflags="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $ac_cv_python_includes"
+ AC_CHECK_HEADER(Python.h, [
+ python_header_found="yes"
+ ])
+ CPPFLAGS="$save_cppflags"
+
+ if test "$python_header_found" = "no"; then
+ SWIG_PY_ERRMSG="no Python.h found"
+ AC_MSG_WARN([Python.h not found; disabling python swig bindings])
+ else
+ SVN_PY3C()
+
+ if test "$py3c_found" = "no"; then
+ SWIG_PY_ERRMSG="py3c library not found"
+ AC_MSG_WARN([py3c library not found; disabling python swig bindings])
+ else
+ AC_CACHE_CHECK([for compiling Python extensions], [ac_cv_python_compile],[
+ ac_cv_python_compile="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --compile`"
+ ])
+ SWIG_PY_COMPILE="$ac_cv_python_compile $CFLAGS"
+
+ AC_CACHE_CHECK([for linking Python extensions], [ac_cv_python_link],[
+ ac_cv_python_link="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --link`"
+ ])
+ SWIG_PY_LINK="$ac_cv_python_link"
+
+ AC_CACHE_CHECK([for linking Python libraries], [ac_cv_python_libs],[
+ ac_cv_python_libs="`$SWIG_PY_PYTHON ${abs_srcdir}/build/get-py-info.py --libs`"
+ ])
+ SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
+
+ SWIG_PY_ERRMSG=""
+ fi
+ fi
fi
+ fi
+
+ SWIG_PL_ERRMSG="check config.log for details"
+ if test "$SWIG_PL_PERL" = "none"; then
+ SWIG_PL_ERRMSG="You specfied not to build Perl bindings or \
+suitable Perl interpreter is not found."
else
- dnl Ruby 1.8
- svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
+ AC_MSG_CHECKING([perl version])
+ dnl Note that the q() bit is there to avoid unbalanced brackets
+ dnl which m4 really doesn't like.
+ PERL_VERSION="`$SWIG_PL_PERL -e 'q([[); print $]] * 1000000,$/;'`"
+ AC_MSG_RESULT([$PERL_VERSION])
+ if test "$PERL_VERSION" -ge "5008000"; then
+ SWIG_PL_INCLUDES="\$(SWIG_INCLUDES) `$SWIG_PL_PERL -MExtUtils::Embed -e ccopts`"
+ SWIG_PL_LINK="`$SWIG_PL_PERL -MExtUtils::Embed -e ldopts`"
+ SWIG_PL_LINK="`SVN_REMOVE_STANDARD_LIB_DIRS($SWIG_PL_LINK)`"
+
+ dnl SWIG Perl bindings successfully configured, clear the error message
+ SWIG_PL_ERRMSG=""
+ else
+ AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
+ fi
fi
- ])
- SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
- AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
- svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
- ])
- SWIG_RB_COMPILE="$svn_cv_ruby_compile"
- SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
- SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
- SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
- dnl FIXME: Check that the compiler for Ruby actually supports this flag
- SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
-
- AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
- svn_cv_ruby_link="`$RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \
- $rbconfig_LDSHARED`"
- svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link"
- svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT"
- ])
- SWIG_RB_LINK="$svn_cv_ruby_link"
+ SWIG_RB_COMPILE="none"
+ SWIG_RB_LINK="none"
+ SWIG_RB_ERRMSG="check config.log for details"
+ if test "$SWIG_RB_RUBY" = "none"; then
+ SWIG_RB_ERRMSG="You specfied not to build Ruby bindings or \
+suitable Ruby interpreter is not found."
+ else
+ rbconfig="$SWIG_RB_RUBY -rrbconfig -e "
- AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [
- ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS"
- ])
- SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`"
-
- AC_MSG_CHECKING([for rb_errinfo])
- old_CFLAGS="$CFLAGS"
- old_LIBS="$LIBS"
- CFLAGS="$CFLAGS $svn_cv_ruby_includes"
- SVN_STRIP_FLAG([CFLAGS], [-ansi])
- SVN_STRIP_FLAG([CFLAGS], [-std=c89])
- SVN_STRIP_FLAG([CFLAGS], [-std=c90])
- LIBS="$SWIG_RB_LIBS"
- AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
+ rubyhdrdir rubyarchhdrdir sitedir sitelibdir sitearchdir libdir
+ do
+ rbconfig_tmp=`$rbconfig "print RbConfig::CONFIG@<:@'$var_name'@:>@"`
+ eval "rbconfig_$var_name=\"$rbconfig_tmp\""
+ done
+
+ AC_MSG_NOTICE([Configuring Ruby SWIG binding])
+
+ AC_CACHE_CHECK([for Ruby include path], [svn_cv_ruby_includes],[
+ if test -d "$rbconfig_rubyhdrdir"; then
+ dnl Ruby >=1.9
+ svn_cv_ruby_includes="-I. -I$rbconfig_rubyhdrdir"
+ if test -d "$rbconfig_rubyarchhdrdir"; then
+ dnl Ruby >=2.0
+ svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyarchhdrdir"
+ else
+ svn_cv_ruby_includes="$svn_cv_ruby_includes -I$rbconfig_rubyhdrdir/$rbconfig_arch"
+ fi
+ else
+ dnl Ruby 1.8
+ svn_cv_ruby_includes="-I. -I$rbconfig_archdir"
+ fi
+ ])
+ SWIG_RB_INCLUDES="\$(SWIG_INCLUDES) $svn_cv_ruby_includes"
+
+ AC_CACHE_CHECK([how to compile Ruby extensions], [svn_cv_ruby_compile],[
+ svn_cv_ruby_compile="$rbconfig_CC $CFLAGS"
+ ])
+ SWIG_RB_COMPILE="$svn_cv_ruby_compile"
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-ansi])
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c89])
+ SVN_STRIP_FLAG([SWIG_RB_COMPILE], [-std=c90])
+ dnl FIXME: Check that the compiler for Ruby actually supports this flag
+ SWIG_RB_COMPILE="$SWIG_RB_COMPILE -Wno-int-to-pointer-cast"
+
+ AC_CACHE_CHECK([how to link Ruby extensions], [svn_cv_ruby_link],[
+ svn_cv_ruby_link="`$SWIG_RB_RUBY -e 'ARGV.shift; print ARGV.join(%q( ))' \
+ $rbconfig_LDSHARED`"
+ svn_cv_ruby_link="$rbconfig_CC $svn_cv_ruby_link"
+ svn_cv_ruby_link="$svn_cv_ruby_link -shrext .$rbconfig_DLEXT"
+ ])
+ SWIG_RB_LINK="$svn_cv_ruby_link"
+
+ AC_CACHE_CHECK([how to link Ruby libraries], [ac_cv_ruby_libs], [
+ ac_cv_ruby_libs="$rbconfig_LIBRUBYARG $rbconfig_LIBS"
+ ])
+ SWIG_RB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_ruby_libs)`"
+
+ AC_MSG_CHECKING([for rb_errinfo])
+ old_CFLAGS="$CFLAGS"
+ old_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $svn_cv_ruby_includes"
+ SVN_STRIP_FLAG([CFLAGS], [-ansi])
+ SVN_STRIP_FLAG([CFLAGS], [-std=c89])
+ SVN_STRIP_FLAG([CFLAGS], [-std=c90])
+ LIBS="$SWIG_RB_LIBS"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <ruby.h>
int main()
{rb_errinfo();}]])], have_rb_errinfo="yes", have_rb_errinfo="no")
- if test "$have_rb_errinfo" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE([HAVE_RB_ERRINFO], [1],
- [Define to 1 if you have the `rb_errinfo' function.])
- else
- AC_MSG_RESULT([no])
- fi
- CFLAGS="$old_CFLAGS"
- LIBS="$old_LIBS"
+ if test "$have_rb_errinfo" = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_RB_ERRINFO], [1],
+ [Define to 1 if you have the `rb_errinfo' function.])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ CFLAGS="$old_CFLAGS"
+ LIBS="$old_LIBS"
- AC_CACHE_VAL([svn_cv_ruby_sitedir],[
- svn_cv_ruby_sitedir="$rbconfig_sitedir"
- ])
- AC_ARG_WITH([ruby-sitedir],
- AS_HELP_STRING([--with-ruby-sitedir=SITEDIR],
- [install Ruby bindings in SITEDIR
- (default is same as ruby's one)]),
- [svn_ruby_installdir="$withval"],
- [svn_ruby_installdir="$svn_cv_ruby_sitedir"])
-
- AC_MSG_CHECKING([where to install Ruby scripts])
- AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
- svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
- $SED -e "s,^$rbconfig_sitedir,,"`"
- ])
- SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
- AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
+ AC_CACHE_VAL([svn_cv_ruby_sitedir],[
+ svn_cv_ruby_sitedir="$rbconfig_sitedir"
+ ])
+ AC_ARG_WITH([ruby-sitedir],
+ AS_HELP_STRING([--with-ruby-sitedir=SITEDIR],
+ [install Ruby bindings in SITEDIR
+ (default is same as ruby's one)]),
+ [svn_ruby_installdir="$withval"],
+ [svn_ruby_installdir="$svn_cv_ruby_sitedir"])
- AC_MSG_CHECKING([where to install Ruby extensions])
- AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
- svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
- $SED -e "s,^$rbconfig_sitedir,,"`"
- ])
- SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
- AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
+ AC_MSG_CHECKING([where to install Ruby scripts])
+ AC_CACHE_VAL([svn_cv_ruby_sitedir_libsuffix],[
+ svn_cv_ruby_sitedir_libsuffix="`echo "$rbconfig_sitelibdir" | \
+ $SED -e "s,^$rbconfig_sitedir,,"`"
+ ])
+ SWIG_RB_SITE_LIB_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_libsuffix}"
+ AC_MSG_RESULT([$SWIG_RB_SITE_LIB_DIR])
- AC_MSG_CHECKING([how to use output level for Ruby bindings tests])
- AC_CACHE_VAL([svn_cv_ruby_test_verbose],[
- svn_cv_ruby_test_verbose="normal"
- ])
- AC_ARG_WITH([ruby-test-verbose],
- AS_HELP_STRING([--with-ruby-test-verbose=LEVEL],
- [how to use output level for Ruby bindings tests
- (default is normal)]),
- [svn_ruby_test_verbose="$withval"],
- [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"])
- SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose"
- AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE])
-
- dnl SWIG Ruby bindings successfully configured, clear the error message
- SWIG_RB_ERRMSG=""
- fi
+ AC_MSG_CHECKING([where to install Ruby extensions])
+ AC_CACHE_VAL([svn_cv_ruby_sitedir_archsuffix],[
+ svn_cv_ruby_sitedir_archsuffix="`echo "$rbconfig_sitearchdir" | \
+ $SED -e "s,^$rbconfig_sitedir,,"`"
+ ])
+ SWIG_RB_SITE_ARCH_DIR="${svn_ruby_installdir}${svn_cv_ruby_sitedir_archsuffix}"
+ AC_MSG_RESULT([$SWIG_RB_SITE_ARCH_DIR])
+
+ AC_MSG_CHECKING([how to use output level for Ruby bindings tests])
+ AC_CACHE_VAL([svn_cv_ruby_test_verbose],[
+ svn_cv_ruby_test_verbose="normal"
+ ])
+ AC_ARG_WITH([ruby-test-verbose],
+ AS_HELP_STRING([--with-ruby-test-verbose=LEVEL],
+ [how to use output level for Ruby bindings tests
+ (default is normal)]),
+ [svn_ruby_test_verbose="$withval"],
+ [svn_ruby_test_verbose="$svn_cv_ruby_test_verbose"])
+ SWIG_RB_TEST_VERBOSE="$svn_ruby_test_verbose"
+ AC_MSG_RESULT([$SWIG_RB_TEST_VERBOSE])
+
+ dnl SWIG Ruby bindings successfully configured, clear the error message
+ SWIG_RB_ERRMSG=""
+ fi
+ ])
AC_SUBST(SWIG)
AC_SUBST(SWIG_PY_INCLUDES)
AC_SUBST(SWIG_PY_COMPILE)