/[Apache-SVN]/subversion/trunk/build/ac-macros/swig.m4
ViewVC logotype

Diff of /subversion/trunk/build/ac-macros/swig.m4

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

--- subversion/trunk/build/ac-macros/swig.m4	2020/12/18 14:23:03	1884609
+++ subversion/trunk/build/ac-macros/swig.m4	2020/12/18 15:32:35	1884610
@@ -22,29 +22,39 @@ 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 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
+    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_arg=$withval
       ;;
-    esac
-  ],
-  [
-    svn_find_swig_arg=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_FIND_SWIG($svn_find_swig_arg)
+  SVN_DETERMINE_SWIG_OPTS
 ])
 
 AC_DEFUN(SVN_FIND_SWIG,
@@ -93,92 +103,104 @@ AC_DEFUN(SVN_FIND_SWIG,
       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 "$SWIG_PY_PYTHON" != "none"; then
-    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])
+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
-
-      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])
+      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
-        SVN_PY3C()
+        AC_MSG_NOTICE([Configuring python swig binding])
 
-        if test "$py3c_found" = "no"; then
-          SWIG_PY_ERRMSG="py3c library not found"
-          AC_MSG_WARN([py3c library not found; disabling python swig bindings])
+        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
-          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"
+          python_header_found="no"
 
-          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`"
+          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"
-              $SWIG_PY_PYTHON -c 'import sys; sys.exit(0x3000000 > sys.hexversion)' && \
-                 ac_cv_python_is_py3="yes"
-            ])
+            SVN_PY3C()
 
-            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
+            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=""
+                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
               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="-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])
+                fi
               fi
             fi
           fi
@@ -186,151 +208,373 @@ AC_DEFUN(SVN_FIND_SWIG,
       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
+      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)`"
 
-  SWIG_PL_ERRMSG="check config.log for details"
-  if test "$SWIG_PL_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="`$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
 
-      dnl SWIG Perl bindings successfully configured, clear the error message
-      SWIG_PL_ERRMSG=""
+    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
-      AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
-    fi
-  fi
+      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"
 
-  SWIG_RB_COMPILE="none"
-  SWIG_RB_LINK="none"
-  SWIG_RB_ERRMSG="check config.log for details"
-  if test "$SWIG_RB_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])
+        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="$SWIG_RB_RUBY -rrbconfig -e "
+  ],
+  [
+    # 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"
 
-    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"
+      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="`$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"
+    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)`"
+      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_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([[
+      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 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([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])
+      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
+      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)

 

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26