On 2020/12/02 4:24, Branko Čibej wrote:
> On 01.12.2020 17:34, Yasuhito FUTATSUKI wrote:
>> On 2020/11/17 11:01, Yasuhito FUTATSUKI wrote:
>>> On 2020/11/17 2:16, Daniel Shahaf wrote:
>>>> Yasuhito FUTATSUKI wrote on Sat, 14 Nov 2020 14:52 +0900:
>>>>> +++ subversion/bindings/swig/INSTALL    (working copy)
>>>>> @@ -141,7 +141,15 @@
>>>>> -  Make sure that Subversion's ./configure script sees your installed 
>>>>> SWIG!
>>>>> +  If you are using the distribution tarball and you want to use the 
>>>>> language
>>>>> +  bindings C source files shipped with it, you might need to pass the
>>>>> +  --without-swig option to configure script to avoid detecting and 
>>>>> checking
>>>>> +  SWIG on your system.  A Makefile generated by configure will prevent
>>>>> +  building the language bindings if the configure script detect 
>>>>> unsuitable
>>>>> +  version of SWIG.
>>>> I don't dispute the accuracy of this paragraph, but I think this API
>>>> isn't autotools-idiomatic.
>>>>
>>>> Generally, I'd expect --without-foo to short-circuit the probe for foo
>>>> and assume foo isn't found; i.e., if my system has an unsuitable
>>>> version of foo, I'd the default behaviour (given neither --with-foo nor
>>>> --without-foo) and the behaviour given --without-foo to be identical:
>>>> namely, behave as though foo isn't available (even if /usr/bin/foo
>>>> exists and is perfectly suitable).
>>>>
>>>> In particular, if my system has an unsuitable version of swig,
>>>> I wouldn't expect passing --without-swig to change configure's behaviour.
>>> Probably what is wrong here is that the configure script accepts
>>> --with-swig | --without-swig options and checks it in release mode.
>>>
>>> We never clean SWIG generated language bindings C source files on
>>> clean-foo targets in release mode Makefile. extraclean-foo targets do it,
>>> but they are only parts of the extraclean target which also removes all
>>> release mode stuff. So users never use SWIG in release mode actually.
>>>
>>> That is, r1876662 is not correct.
>> To fix it, I tweaked the configure script again.
>>
>> The patch attached introduce "release mode" for configure generation.
>> With this patch, configure script generated by "autogen.sh --release"
>> does not have --with-swig|--without-swig option and never check SWIG
>> executable.
>>
>> Could anyone please review this?
>>
>> For backward compatibility to back port to 1.14.x, default for
>> --with-swig-perl, --with-swig-python, --with-swig-ruby are "auto",
>> i.e. search the target language, but I'd like to change them to "no" in
>> trunk, because I think those are optional feature.
> 
> 
> This makes sense, yes. More comments below.

Many thanks for the reviw. Then I've amended the patch.
(attached file, introduce-release-mode-configure-patch-v2.txt)

In addition to the items pointed out, I also added two modification:

* Clean up aclocal.m4 on local-extraclean target in Makefile.in.
* Move the task to generate aclocal.m4 earlier in autogen.sh, because
  aclocal.m4 file is also (at least) used by autoheader.

Also, I make diffs for release mode block and non-release mode block
of SVN_DETERMINE_SWIG_OPTS from corresponding block before this patch
in build/ac-macros/swig.m4, to show how they are changed.

Non release mode:
[[[
diff -ubB ./SVN_DETERMINE_SWIG_OPTS_original_block.txt 
./SVN_DETERMINE_SWIG_OPTS_non_release_block.txt 
--- ./SVN_DETERMINE_SWIG_OPTS_original_block.txt        2020-12-04 
01:55:39.289774000 +0900
+++ ./SVN_DETERMINE_SWIG_OPTS_non_release_block.txt     2020-12-04 
06:21:30.416610000 +0900
@@ -1,8 +1,16 @@
+    # 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
+    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])
 
         AC_CACHE_CHECK([for Python includes], [ac_cv_python_includes],[
@@ -49,9 +57,6 @@
           ])
           SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
 
-          if test "$SWIG" = "none"; then
-            SWIG_PY_ERRMSG=""
-          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.
@@ -93,7 +97,14 @@
   fi
 
   SWIG_PL_ERRMSG="check config.log for details"
-  if test "$SWIG_PL_PERL" != "none"; then
+    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.
@@ -110,11 +121,19 @@
           AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
         fi
       fi
+    fi
 
   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 "$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'
@@ -234,4 +253,5 @@
 
         dnl SWIG Ruby bindings successfully configured, clear the error message
         SWIG_RB_ERRMSG=""
+      fi
     fi
]]]

Release mode:
[[[
diff -ubB ./SVN_DETERMINE_SWIG_OPTS_original_block.txt 
./SVN_DETERMINE_SWIG_OPTS_release_block.txt
--- ./SVN_DETERMINE_SWIG_OPTS_original_block.txt        2020-12-04 
01:55:39.289774000 +0900
+++ ./SVN_DETERMINE_SWIG_OPTS_release_block.txt 2020-12-04 06:21:56.977529000 
+0900
@@ -1,8 +1,12 @@
+    # 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
+    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],[
@@ -49,51 +53,17 @@
           ])
           SWIG_PY_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($ac_cv_python_libs)`"
 
-          if test "$SWIG" = "none"; then
             SWIG_PY_ERRMSG=""
-          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"
-            ])
-
-            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
-              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
-      fi
-    fi
 
-  fi
-
   SWIG_PL_ERRMSG="check config.log for details"
-  if test "$SWIG_PL_PERL" != "none"; then
+    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_CHECKING([perl version])
       dnl Note that the q() bit is there to avoid unbalanced brackets
       dnl which m4 really doesn't like.
@@ -114,12 +84,10 @@
   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])
-    fi
+    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 "
 
       for var_name in arch archdir CC LDSHARED DLEXT LIBS LIBRUBYARG \
]]]

Thanks,
-- 
Yasuhito FUTATSUKI <futat...@yf.bsclub.org>
Distinguish configure scripts on release mode and non release mode.

Although makefiles in Subversion's release tarball do not support generating
SWIG language bindings C source files using swig, the configure scripts
shipped with the release tarball had an option to specify how to find
SWIG executable, and checked it.  To avoid this, we introduce "release mode"
to the configure script and hide the option and code to check a SWIG
executable on it.  

* . (svn:ignore):
  Ignore aclocal.m4.
* Makefile.in (local-extraclean):
  Clean up aclocal.m4.
* aclocal.m4.in ():
  Renamed from aclocal.m4
* autogen.sh ():
  Write an macro "SVN_RELEASE_MODE" definition to aclocal.m4 if --release
  is specfied on the command line.
* build/ac-macros/swig.m4
  (): Also mension about Perl and Ruby.
  (SVN_CHECK_SWIG):
   - Hide --with-swig option in release mode.
   - Check SWIG executable only if non release mode and at least one of 
     SWIG bindings is specfied to be built.
  (SVN_FIND_SWIG):
    Move checks for each bindings into new macro SVN_DETERMINE_SWIG_OPTS.
  (SVN_DETERMINE_SWIG_OPTS): New macro split from SVN_FIND_SWIG. 
  - When not in release mode, warn if Perl/Python/Ruby interpreter is set but
   SWIG is not found. Also do not build them with make swig-pl/make
   swig-py/make swig-rb in this case.
  - Check swig version only when it is needed and when not in release mode.
* configure.ac ():
  - Tweak help string for --with-swig-perl, --with-swig-python,
    --with-swig-ruby. 
  - Warn if --with-swig-perl is not specified but variable 'PERL' is set.
  - Warn if --with-swig-ruby is not specified but variable 'RUBY' is set,
    even the value is not 'no' nor 'none'.
* subversion/bindings/swig/INSTALL (Step 2):
  Mention that configure and makefiles in the release tarball don't
  support generating SWIG bindings C source files.
 
Index: Makefile.in
===================================================================
--- Makefile.in (revision 1883722)
+++ Makefile.in (working copy)
@@ -475,6 +475,7 @@
 local-extraclean: extraclean-bindings local-distclean
        rm -f $(top_srcdir)/build-outputs.mk \
               $(top_srcdir)/subversion/svn_private_config.h.in \
+              $(top_srcdir)/aclocal.m4 \
               $(top_srcdir)/configure \
               $(top_srcdir)/gen-make.opts \
               $(top_srcdir)/build/config.guess \
Index: aclocal.m4 (deleted)
===================================================================
Index: aclocal.m4.in (added)
===================================================================
Index: autogen.sh
===================================================================
--- autogen.sh  (revision 1883722)
+++ autogen.sh  (working copy)
@@ -51,6 +51,17 @@
       ;;
   esac
 done
+
+# Generate aclocal.m4
+cp -f aclocal.m4.in aclocal.m4
+if test -n "$RELEASE_MODE"; then
+  cat <<EOF >>aclocal.m4
+
+# Generated by 'autogen.sh --release'
+AC_DEFUN([SVN_RELEASE_MODE],[1])
+EOF
+fi
+
 # ### The order of parameters is important; buildcheck.sh depends on it and
 # ### we don't want to copy the fancy option parsing loop there. For the
 # ### same reason, all parameters should be quoted, so that buildcheck.sh
Index: build/ac-macros/swig.m4
===================================================================
--- build/ac-macros/swig.m4     (revision 1883722)
+++ build/ac-macros/swig.m4     (working copy)
@@ -22,17 +22,19 @@
 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
       ;;
@@ -39,12 +41,20 @@
       *)
         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_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
+      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 "$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])
+        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,374 @@
       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.])
+      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
-  fi
+  ],
+  [
+    # 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])
 
-  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([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
+
+        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
-    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
+    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_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)`"
 
-    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"
+        dnl SWIG Perl bindings successfully configured, clear the error message
+        SWIG_PL_ERRMSG=""
       else
-        svn_cv_ruby_includes="$svn_cv_ruby_includes 
-I$rbconfig_rubyhdrdir/$rbconfig_arch"
+        AC_MSG_WARN([perl bindings require perl 5.8.0 or newer.])
       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"
+    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 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"
+      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_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_NOTICE([Configuring Ruby SWIG binding])
 
-    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([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_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 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)
Index: configure.ac
===================================================================
--- configure.ac        (revision 1883722)
+++ configure.ac        (working copy)
@@ -1319,15 +1319,29 @@
 
 AC_ARG_WITH(swig_perl,
 [AS_HELP_STRING([[--with-swig-perl[=PATH|auto|no]|--without-swig-perl]],
-                [specify path to SWIG bindings target Perl interpreter 
[default=auto]])],
+                [Specify path to SWIG bindings target Perl interpreter
+                 [default=auto]. If the option value is 'auto' or it is not
+                  specfied, search for the Perl program.]
+                m4_ifndef([SVN_RELEASE_MODE],
+                  [[Implies --with-swig=yes if PATH is specfied or Perl 
+                    is found on 'auto' detection.]]))
+],
 [],
 [
-if test "$PERL" = "no" -o "$PERL" = "none"; then
-  with_swig_perl=no
-  AC_MSG_WARN([Disabling the SWIG Perl bindings' build by setting the PERL])
-  AC_MSG_WARN([environment variable to "none" is deprecated.])
-  AC_MSG_WARN([])
-  AC_MSG_WARN([Please use --without-swig-perl instead.])
+if test -n "$PERL"; then
+  if test "$PERL" = "no" -o "$PERL" = "none"; then
+    with_swig_perl=no
+    AC_MSG_WARN([Disabling the SWIG Perl bindings' build by setting the PERL])
+    AC_MSG_WARN([environment variable to "none" is deprecated.])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([Please use --without-swig-perl instead.])
+  else
+    with_swig_perl=auto
+    AC_MSG_WARN([Specfying the Perl path for SWIG Perl bindings' build])
+    AC_MSG_WARN([by setting the PERL environment variable is deprecated.])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([Please use --with-swig-perl=PATH instead.])
+  fi
 else
   with_swig_perl=auto
 fi
@@ -1334,6 +1348,7 @@
 ])
 case $with_swig_perl in
   yes|auto|"")
+    # honor PERL variable only if it is set and is full path. 
     AC_PATH_PROG(PERL, perl, none)
     SWIG_PL_PERL="$PERL"
     ;;
@@ -1349,14 +1364,16 @@
 # Python: as a target of SWIG Python bindings
 AC_ARG_WITH(swig_python,
 [AS_HELP_STRING([[--with-swig-python[=PATH|auto|no]|--without-swig-python]],
-                [specify path to SWIG bindings target Python interpreter 
[default=auto]])],
+                [Specify path to SWIG bindings target Python interpreter
+                 [default=auto]. If the option value is 'auto' or it is not
+                 specfied, search for the Python program.]
+                m4_ifndef([SVN_RELEASE_MODE],
+                  [[Implies --with-swig=yes if PATH is specfied or Python
+                    is found on 'auto' detection.]]))
+],
 [],
 [
-if test "$PYTHON" = "no" -o "$PYTHON" = "none"; then
-  with_swig_python=no
-else
   with_swig_python=auto
-fi
 ])
 case $with_swig_python in
   yes|auto|"")
@@ -1373,15 +1390,29 @@
 
 AC_ARG_WITH(swig_ruby,
 [AS_HELP_STRING([[--with-swig-ruby[=PATH|auto|no]|--without-swig-ruby]],
-                [specify path to SWIG bindings target Ruby interpreter 
[default=auto]])],
+                [specify path to SWIG bindings target Ruby interpreter
+                 [default=auto]. If the option value is 'auto' or it is not
+                  specfied, search for the Ruby program.] 
+                m4_ifndef([SVN_RELEASE_MODE],
+                  [[Implies --with-swig=yes if PATH is specfied or Ruby
+                    is found on 'auto' detection.]]))
+],
 [],
 [
-if test "$RUBY" = "no" -o "$RUBY" = "none"; then
-  with_swig_ruby=no
-  AC_MSG_WARN([Disabling the SWIG Ruby bindings' build by setting the RUBY])
-  AC_MSG_WARN([environment variable to "none" is deprecated.])
-  AC_MSG_WARN([])
-  AC_MSG_WARN([Please use --without-swig-ruby instead.])
+if test -n "$RUBY"; then
+  if test "$RUBY" = "no" -o "$RUBY" = "none"; then
+    with_swig_ruby=no
+    AC_MSG_WARN([Disabling the SWIG Ruby bindings' build by setting the RUBY])
+    AC_MSG_WARN([environment variable to "none" is deprecated.])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([Please use --without-swig-ruby instead.])
+  else
+    with_swig_ruby="$RUBY"
+    AC_MSG_WARN([Specfying the Ruby path for SWIG Ruby bindings' build])
+    AC_MSG_WARN([by setting the RUBY environment variable is deprecated.])
+    AC_MSG_WARN([])
+    AC_MSG_WARN([Please use --with-swig-ruby=PATH instead.])
+  fi
 else
   with_swig_ruby=auto
 fi
@@ -1388,6 +1419,7 @@
 ])
 case $with_swig_ruby in
   yes|auto|"")
+    # honor RUBY variable only if it is set and is full path. 
     AC_PATH_PROGS(RUBY, ruby ruby1 ruby1.8 ruby18 ruby1.9 ruby19 ruby1.9.3 
ruby193 ruby2 ruby2.0 ruby20 ruby2.1 ruby21 ruby2.2 ruby22 ruby2.3 ruby23 
ruby2.4 ruby24, none)
     SWIG_RB_RUBY="$RUBY"
     ;;
Index: subversion/bindings/swig/INSTALL
===================================================================
--- subversion/bindings/swig/INSTALL    (revision 1883722)
+++ subversion/bindings/swig/INSTALL    (working copy)
@@ -141,7 +141,13 @@
 
   See Subversion's own INSTALL file for details.
 
-  Make sure that Subversion's ./configure script sees your installed SWIG!
+  If you are using a Subversion distribution tarball and want to rebuild
+  the SWIG language bindings C source files with your installed SWIG, 
+  you need to execute autogen.sh, because the bundled configure script 
+  and makefiles don't support it.
+
+  If you don't use SWIG bindings C source files already generated,
+  make sure that Subversion's ./configure script sees your installed SWIG!
   It tries to detect SWIG near the very end of its output.
   You can find it by running 'grep "^SWIG=" config.log'.
 
Index: .
===================================================================
--- .   (revision 1883722)
+++ .   (working copy)

Property changes on: .
___________________________________________________________________
Modified: svn:ignore
## -14,6 +14,7 ##
 tags
 neon
 build-outputs.mk
+aclocal.m4
 autogen-standalone.mk
 autom4te.cache
 gen-make.opts

Reply via email to