| dnl =================================================================== |
| dnl Licensed to the Apache Software Foundation (ASF) under one |
| dnl or more contributor license agreements. See the NOTICE file |
| dnl distributed with this work for additional information |
| dnl regarding copyright ownership. The ASF licenses this file |
| dnl to you under the Apache License, Version 2.0 (the |
| dnl "License"); you may not use this file except in compliance |
| dnl with the License. You may obtain a copy of the License at |
| dnl |
| dnl http://www.apache.org/licenses/LICENSE-2.0 |
| dnl |
| dnl Unless required by applicable law or agreed to in writing, |
| dnl software distributed under the License is distributed on an |
| dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| dnl KIND, either express or implied. See the License for the |
| dnl specific language governing permissions and limitations |
| dnl under the License. |
| dnl =================================================================== |
| dnl |
| 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. |
| |
| 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.]), |
| [ |
| case "$withval" in |
| "no") |
| SWIG_SUITABLE=no |
| SVN_FIND_SWIG(no) |
| ;; |
| "yes") |
| SVN_FIND_SWIG(required) |
| ;; |
| *) |
| SVN_FIND_SWIG($withval) |
| ;; |
| esac |
| ], |
| [ |
| SVN_FIND_SWIG(check) |
| ]) |
| ]) |
| |
| AC_DEFUN(SVN_FIND_SWIG, |
| [ |
| where=$1 |
| |
| if test $where = no; then |
| SWIG=none |
| elif test $where = required || test $where = check; then |
| AC_PATH_PROG(SWIG, swig, none) |
| if test "$SWIG" = "none" && test $where = required; then |
| AC_MSG_ERROR([SWIG required, but not found]) |
| fi |
| else |
| if test -f "$where"; then |
| SWIG="$where" |
| else |
| SWIG="$where/bin/swig" |
| fi |
| if test ! -f "$SWIG" || test ! -x "$SWIG"; then |
| AC_MSG_ERROR([Could not find swig binary at $SWIG]) |
| fi |
| fi |
| |
| if test "$SWIG" != "none"; then |
| AC_MSG_CHECKING([swig version]) |
| SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \ |
| $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. |
| # The major is passed straight through, |
| # the minor is zero padded to two places, |
| # and the patch level is zero padded to three places. |
| # e.g. 1.3.24 becomes 103024 |
| SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \ |
| $SED -e 's/[[^0-9\.]].*$//' \ |
| -e 's/\.\([[0-9]]\)$/.0\1/' \ |
| -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \ |
| -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`" |
| 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 |
| 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" |
| 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 |
| AC_MSG_WARN([python bindings cannot be built without distutils module]) |
| fi |
| |
| 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`" |
| ]) |
| SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`" |
| |
| dnl Sun Forte adds an extra space before substituting APR_INT64_T_FMT |
| dnl gcc-2.95 adds an extra space after substituting APR_INT64_T_FMT |
| dnl thus the egrep patterns have a + in them. |
| SVN_PYCFMT_SAVE_CPPFLAGS="$CPPFLAGS" |
| CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" |
| AC_CACHE_CHECK([for apr_int64_t Python/C API format string], |
| [svn_cv_pycfmt_apr_int64_t], [ |
| if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then |
| AC_EGREP_CPP([MaTcHtHiS +\"lld\" +EnDeNd], |
| [#include <apr.h> |
| MaTcHtHiS APR_INT64_T_FMT EnDeNd], |
| [svn_cv_pycfmt_apr_int64_t="L"]) |
| fi |
| if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then |
| AC_EGREP_CPP([MaTcHtHiS +\"ld\" +EnDeNd],r |
| [#include <apr.h> |
| MaTcHtHiS APR_INT64_T_FMT EnDeNd], |
| [svn_cv_pycfmt_apr_int64_t="l"]) |
| fi |
| if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then |
| AC_EGREP_CPP([MaTcHtHiS +\"d\" +EnDeNd], |
| [#include <apr.h> |
| MaTcHtHiS APR_INT64_T_FMT EnDeNd], |
| [svn_cv_pycfmt_apr_int64_t="i"]) |
| fi |
| ]) |
| CPPFLAGS="$SVN_PYCFMT_SAVE_CPPFLAGS" |
| if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then |
| AC_MSG_ERROR([failed to recognize APR_INT64_T_FMT on this platform]) |
| fi |
| AC_DEFINE_UNQUOTED([SVN_APR_INT64_T_PYCFMT], |
| ["$svn_cv_pycfmt_apr_int64_t"], |
| [Define to the Python/C API format character suitable] |
| [ for apr_int64_t]) |
| fi |
| |
| 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)`" |
| else |
| AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.]) |
| fi |
| fi |
| |
| SWIG_RB_COMPILE="none" |
| SWIG_RB_LINK="none" |
| 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]) |
| 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 -I$rbconfig_rubyhdrdir/ruby -I$rbconfig_rubyhdrdir/ruby/backward" |
| 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="`$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]) |
| fi |
| AC_SUBST(SWIG) |
| AC_SUBST(SWIG_PY_INCLUDES) |
| AC_SUBST(SWIG_PY_COMPILE) |
| AC_SUBST(SWIG_PY_LINK) |
| AC_SUBST(SWIG_PY_LIBS) |
| AC_SUBST(SWIG_PL_INCLUDES) |
| AC_SUBST(SWIG_PL_LINK) |
| AC_SUBST(SWIG_RB_LINK) |
| AC_SUBST(SWIG_RB_LIBS) |
| AC_SUBST(SWIG_RB_INCLUDES) |
| AC_SUBST(SWIG_RB_COMPILE) |
| AC_SUBST(SWIG_RB_SITE_LIB_DIR) |
| AC_SUBST(SWIG_RB_SITE_ARCH_DIR) |
| AC_SUBST(SWIG_RB_TEST_VERBOSE) |
| ]) |