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. Review by: brane 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 <>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,373 @@ 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 +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 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