diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-08-05 16:22:51 +0000 |
commit | cf46733632c7279a9fd0fe6ce26f9185a4ae82a9 (patch) | |
tree | da27775a2161723ef342e91af41a8b51fedef405 /build/ac-macros | |
parent | bb0ef45f7c46b0ae221b26265ef98a768c33f820 (diff) | |
download | subversion-tarball-master.tar.gz |
subversion-1.9.7HEADsubversion-1.9.7master
Diffstat (limited to 'build/ac-macros')
-rw-r--r-- | build/ac-macros/apache.m4 | 104 | ||||
-rw-r--r-- | build/ac-macros/apr.m4 | 2 | ||||
-rw-r--r-- | build/ac-macros/compiler.m4 | 56 | ||||
-rw-r--r-- | build/ac-macros/java.m4 | 15 | ||||
-rw-r--r-- | build/ac-macros/kwallet.m4 | 117 | ||||
-rw-r--r-- | build/ac-macros/serf.m4 | 49 | ||||
-rw-r--r-- | build/ac-macros/swig.m4 | 2 | ||||
-rw-r--r-- | build/ac-macros/zlib.m4 | 86 |
8 files changed, 286 insertions, 145 deletions
diff --git a/build/ac-macros/apache.m4 b/build/ac-macros/apache.m4 index 610d956..8146425 100644 --- a/build/ac-macros/apache.m4 +++ b/build/ac-macros/apache.m4 @@ -89,6 +89,33 @@ else AC_MSG_RESULT(no) fi +# check for some busted versions of mod_dav +# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are +# troublesome for Subversion: +# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304 +# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306 +# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397 +if test -n "$APXS" && test "$APXS" != "no"; then + AC_MSG_CHECKING([mod_dav version]) + HTTPD_MAJOR=`$SED -ne '/^#define AP_SERVER_MAJORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` + HTTPD_MINOR=`$SED -ne '/^#define AP_SERVER_MINORVERSION_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` + HTTPD_PATCH=`$SED -ne '/^#define AP_SERVER_PATCHLEVEL_NUMBER/p' "$APXS_INCLUDE/ap_release.h" | $SED -e 's/^.*NUMBER *//'` + HTTPD_VERSION="${HTTPD_MAJOR}.${HTTPD_MINOR}.${HTTPD_PATCH}" + case "$HTTPD_VERSION" in + 2.2.25 | 2.4.[[5-6]]) + AC_MSG_RESULT([broken]) + AC_MSG_ERROR([Apache httpd version $HTTPD_VERSION includes a broken mod_dav; use a newer version of httpd]) + ;; + 2.[[0-9]]*.[[0-9]]*) + AC_MSG_RESULT([acceptable]) + ;; + *) + AC_MSG_RESULT([unrecognised]) + AC_MSG_ERROR([Apache httpd version $HTTPD_VERSION not recognised]) + ;; + esac +fi + if test -n "$APXS" && test "$APXS" != "no"; then AC_MSG_CHECKING([whether Apache version is compatible with APR version]) apr_major_version="${apr_version%%.*}" @@ -106,37 +133,15 @@ if test -n "$APXS" && test "$APXS" != "no"; then AC_MSG_ERROR([unknown APR version]) ;; esac - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" - AC_EGREP_CPP([apache_minor_version= *\"$apache_minor_version_wanted_regex\"], - [ -#include "$APXS_INCLUDE/ap_release.h" -apache_minor_version=AP_SERVER_MINORVERSION], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Apache version incompatible with APR version])]) - CPPFLAGS="$old_CPPFLAGS" -fi - -# check for some busted versions of mod_dav -# in particular 2.2.25, 2.4.5, and 2.4.6 had the following bugs which are -# troublesome for Subversion: -# PR 55304: https://issues.apache.org/bugzilla/show_bug.cgi?id=55304 -# PR 55306: https://issues.apache.org/bugzilla/show_bug.cgi?id=55306 -# PR 55397: https://issues.apache.org/bugzilla/show_bug.cgi?id=55397 -if test -n "$APXS" && test "$APXS" != "no"; then - AC_MSG_CHECKING([mod_dav version]) - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES" - blacklisted_versions_regex=["\"2\" \"\.\" (\"2\" \"\.\" \"25\"|\"4\" \"\.\" \"[56]\")"] - AC_EGREP_CPP([apache_version= *$blacklisted_versions_regex], - [ -#include "$APXS_INCLUDE/ap_release.h" -apache_version=AP_SERVER_BASEREVISION], - [AC_MSG_RESULT([broken]) - AC_MSG_ERROR([Apache httpd version includes a broken mod_dav; use a newer version of httpd])], - [AC_MSG_RESULT([acceptable])]) - CPPFLAGS="$old_CPPFLAGS" + case $HTTPD_MINOR in + $apache_minor_version_wanted_regex) + AC_MSG_RESULT([yes]) + ;; + *) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Apache version $HTTPD_VERSION incompatible with APR version $apr_version]) + ;; + esac fi AC_ARG_WITH(apache-libexecdir, @@ -157,10 +162,44 @@ if test -n "$APXS" && test "$APXS" != "no"; then APACHE_LIBEXECDIR="`$APXS -q libexecdir`" fi + AC_CHECK_HEADERS(unistd.h, [AC_CHECK_FUNCS(getpid)], []) + + MMN_MAJOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MAJOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MAJOR *//'` + MMN_MINOR=`$SED -ne '/^#define MODULE_MAGIC_NUMBER_MINOR/p' "$APXS_INCLUDE/ap_mmn.h" | $SED -e 's/^.*MINOR *//' | $SED -e 's/ .*//'` + if test "$MMN_MAJOR" = "20120211" && test "$MMN_MINOR" -lt "47" ; then + # This is httpd 2.4 and it doesn't appear to have the required + # API but the installation may have been patched. + AC_ARG_ENABLE(broken-httpd-auth, + AS_HELP_STRING([--enable-broken-httpd-auth], + [Force build against httpd 2.4 with broken auth]), + [broken_httpd_auth=$enableval],[broken_httpd_auth=no]) + AC_MSG_CHECKING([for ap_some_authn_required]) + old_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $APACHE_INCLUDES $SVN_APR_INCLUDES" + AC_EGREP_CPP([int.*\sap_some_authn_required\s*\(], + [#include "http_request.h"], + [AC_MSG_RESULT([yes]) + working_auth=yes], + [AC_MSG_RESULT([no])]) + CPPFLAGS="$old_CPPFLAGS" + if test "$working_auth" = "yes" ; then + AC_DEFINE(SVN_USE_FORCE_AUTHN, 1, + [Defined to build with patched httpd 2.4 and working auth]) + elif test "$enable_broken_httpd_auth" = "yes"; then + AC_MSG_WARN([==============================================]) + AC_MSG_WARN([Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR]) + AC_MSG_WARN([Subversion will be vulnerable to CVE-2015-3184]) + AC_MSG_WARN([==============================================]) + AC_DEFINE(SVN_ALLOW_BROKEN_HTTPD_AUTH, 1, + [Defined to build against httpd 2.4 with broken auth]) + else + AC_MSG_ERROR([Apache httpd $HTTPD_VERSION MMN $MMN_MAJOR.$MMN_MINOR has broken auth (CVE-2015-3184)]) + fi + fi + BUILD_APACHE_RULE=apache-mod INSTALL_APACHE_RULE=install-mods-shared INSTALL_APACHE_MODS=true - case $host in *-*-cygwin*) APACHE_LDFLAGS="-shrext .so" @@ -178,6 +217,7 @@ AC_SUBST(APACHE_LDFLAGS) AC_SUBST(APACHE_INCLUDES) AC_SUBST(APACHE_LIBEXECDIR) AC_SUBST(INSTALL_APACHE_MODS) +AC_SUBST(HTTPD_VERSION) # there aren't any flags that interest us ... #if test -n "$APXS" && test "$APXS" != "no"; then diff --git a/build/ac-macros/apr.m4 b/build/ac-macros/apr.m4 index 49774ba..7054a6e 100644 --- a/build/ac-macros/apr.m4 +++ b/build/ac-macros/apr.m4 @@ -32,7 +32,7 @@ AC_DEFUN(SVN_LIB_APR, AC_MSG_NOTICE([Apache Portable Runtime (APR) library configuration]) - APR_FIND_APR("", "", 1, [1 0]) + APR_FIND_APR("", "", 1, [2 1 0]) if test $apr_found = "no"; then AC_MSG_WARN([APR not found]) diff --git a/build/ac-macros/compiler.m4 b/build/ac-macros/compiler.m4 index 117bc18..98d9539 100644 --- a/build/ac-macros/compiler.m4 +++ b/build/ac-macros/compiler.m4 @@ -61,21 +61,36 @@ AC_DEFUN([SVN_CC_MODE_SETUP], CFLAGS_KEEP="$CFLAGS" CFLAGS="" - dnl Find flags to force C90 mode - dnl gcc and clang - SVN_CFLAGS_ADD_IFELSE([-std=c90],[],[ - SVN_CFLAGS_ADD_IFELSE([-std=c89],[],[ - SVN_CFLAGS_ADD_IFELSE([-ansi]) + if test "$GCC" = "yes"; then + dnl Find flags to force C90 mode + dnl gcc and clang + SVN_CFLAGS_ADD_IFELSE([-std=c90],[],[ + SVN_CFLAGS_ADD_IFELSE([-std=c89],[],[ + SVN_CFLAGS_ADD_IFELSE([-ansi]) + ]) ]) - ]) + fi CMODEFLAGS="$CFLAGS" + CFLAGS="" + + if test "$GCC" = "yes"; then + dnl Find flags to silence all warnings + SVN_CFLAGS_ADD_IFELSE([-w]) + fi + + CNOWARNFLAGS="$CFLAGS" CFLAGS="$CFLAGS_KEEP" + AC_SUBST(CMODEFLAGS) + AC_SUBST(CNOWARNFLAGS) AC_SUBST(CMAINTAINERFLAGS) + AC_SUBST(CUSERFLAGS) - dnl Tell clang to not accept unknown warning flags - SVN_CFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) + if test "$GCC" = "yes"; then + dnl Tell clang to not accept unknown warning flags + SVN_CFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) + fi ]) @@ -84,15 +99,30 @@ AC_DEFUN([SVN_CXX_MODE_SETUP], CXXFLAGS_KEEP="$CXXFLAGS" CXXFLAGS="" - dnl Find flags to force C++98 mode - dnl g++ and clang++ - SVN_CXXFLAGS_ADD_IFELSE([-std=c++98]) + if test "$GXX" = "yes"; then + dnl Find flags to force C++98 mode + dnl g++ and clang++ + SVN_CXXFLAGS_ADD_IFELSE([-std=c++98]) + fi CXXMODEFLAGS="$CXXFLAGS" + CXXFLAGS="" + + if test "$GXX" = "yes"; then + dnl Find flags to silence all warnings + SVN_CXXFLAGS_ADD_IFELSE([-w]) + fi + + CXXNOWARNFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS_KEEP" + AC_SUBST(CXXMODEFLAGS) + AC_SUBST(CXXNOWARNFLAGS) AC_SUBST(CXXMAINTAINERFLAGS) + AC_SUBST(CXXUSERFLAGS) - dnl Tell clang++ to not accept unknown warning flags - SVN_CXXFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) + if test "$GXX" = "yes"; then + dnl Tell clang++ to not accept unknown warning flags + SVN_CXXFLAGS_ADD_IFELSE([-Werror=unknown-warning-option]) + fi ]) diff --git a/build/ac-macros/java.m4 b/build/ac-macros/java.m4 index 9ef4015..a45cee9 100644 --- a/build/ac-macros/java.m4 +++ b/build/ac-macros/java.m4 @@ -62,10 +62,13 @@ AC_DEFUN(SVN_FIND_JDK, JDK_SUITABLE=no AC_MSG_CHECKING([for JDK]) if test $where = check; then - dnl Prefer /Library/Java/Home first to try to be nice on Darwin. - dnl We'll correct later if we get caught in the tangled web of JAVA_HOME. + dnl Prefer /usr/libexec/java_home, then /Library/Java/Home first + dnl to try to be nice on Darwin. We'll correct later if we get + dnl caught in the tangled web of JAVA_HOME. if test -x "$JAVA_HOME/bin/java"; then JDK="$JAVA_HOME" + elif test -x "/usr/libexec/java_home"; then + JDK=`/usr/libexec/java_home` elif test -x "/Library/Java/Home/bin/java"; then JDK="/Library/Java/Home" elif test -x "/usr/bin/java"; then @@ -190,9 +193,12 @@ AC_DEFUN(SVN_FIND_JDK, # The release for "-source" could actually be greater than that # of "-target", if we want to cross-compile for lesser JVMs. if test -z "$JAVAC_FLAGS"; then - JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.5" + JAVAC_FLAGS="-target $JAVA_OLDEST_WORKING_VER -source 1.6" if test "$enable_debugging" = "yes"; then - JAVAC_FLAGS="-g -Xlint:unchecked $JAVAC_FLAGS" + JAVAC_FLAGS="-g -Xlint -Xlint:unchecked -Xlint:serial -Xlint:path $JAVAC_FLAGS" + if test -z "$JAVAC_COMPAT_FLAGS"; then + JAVAC_COMPAT_FLAGS="$JAVAC_FLAGS -Xlint:-unchecked -Xlint:-deprecation -Xlint:-dep-ann -Xlint:-rawtypes" + fi fi fi @@ -208,6 +214,7 @@ AC_DEFUN(SVN_FIND_JDK, AC_SUBST(JAVA) AC_SUBST(JAVAC) AC_SUBST(JAVAC_FLAGS) + AC_SUBST(JAVAC_COMPAT_FLAGS) AC_SUBST(JAVADOC) AC_SUBST(JAVAH) AC_SUBST(JAR) diff --git a/build/ac-macros/kwallet.m4 b/build/ac-macros/kwallet.m4 index 0f0f6ac..2e2638a 100644 --- a/build/ac-macros/kwallet.m4 +++ b/build/ac-macros/kwallet.m4 @@ -33,78 +33,85 @@ AC_DEFUN(SVN_LIB_KWALLET, AC_MSG_CHECKING([whether to look for KWallet]) if test "$svn_lib_kwallet" != "no"; then AC_MSG_RESULT([yes]) - if test "$svn_enable_shared" = "yes"; then - if test "$APR_HAS_DSO" = "yes"; then - if test -n "$PKG_CONFIG"; then - if test "$HAVE_DBUS" = "yes"; then - AC_MSG_CHECKING([for QtCore, QtDBus, QtGui]) - if $PKG_CONFIG --exists QtCore QtDBus QtGui; then - AC_MSG_RESULT([yes]) - if test "$svn_lib_kwallet" != "yes"; then - AC_MSG_CHECKING([for kde4-config]) - KDE4_CONFIG="$svn_lib_kwallet/bin/kde4-config" - if test -f "$KDE4_CONFIG" && test -x "$KDE4_CONFIG"; then - AC_MSG_RESULT([yes]) + case "$host" in + *-*-darwin*) + AC_MSG_ERROR([--with-kwallet is not supported on Mac OS X.]) + ;; + *) + if test "$svn_enable_shared" = "yes"; then + if test "$APR_HAS_DSO" = "yes"; then + if test -n "$PKG_CONFIG"; then + if test "$HAVE_DBUS" = "yes"; then + AC_MSG_CHECKING([for QtCore, QtDBus, QtGui]) + if $PKG_CONFIG --exists QtCore QtDBus QtGui; then + AC_MSG_RESULT([yes]) + if test "$svn_lib_kwallet" != "yes"; then + AC_MSG_CHECKING([for kde4-config]) + KDE4_CONFIG="$svn_lib_kwallet/bin/kde4-config" + if test -f "$KDE4_CONFIG" && test -x "$KDE4_CONFIG"; then + AC_MSG_RESULT([yes]) + else + KDE4_CONFIG="" + AC_MSG_RESULT([no]) + fi else - KDE4_CONFIG="" - AC_MSG_RESULT([no]) + AC_PATH_PROG(KDE4_CONFIG, kde4-config) fi - else - AC_PATH_PROG(KDE4_CONFIG, kde4-config) - fi - if test -n "$KDE4_CONFIG"; then - AC_MSG_CHECKING([for KWallet]) - old_CXXFLAGS="$CXXFLAGS" - old_LDFLAGS="$LDFLAGS" - old_LIBS="$LIBS" - for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui`]; do - if test -n ["`echo "$d" | $EGREP -- '^-D[^[:space:]]*'`"]; then - CPPFLAGS="$CPPFLAGS $d" - fi - done - qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" - kde_dir="`$KDE4_CONFIG --prefix`" - SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_dir/include" - qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`" - SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options" - CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES" - LIBS="$LIBS $SVN_KWALLET_LIBS" - qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" - kde_lib_suffix="`$KDE4_CONFIG --libsuffix`" - LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs -L$kde_dir/lib$kde_lib_suffix)`" - AC_LANG(C++) - AC_LINK_IFELSE([AC_LANG_SOURCE([[ + if test -n "$KDE4_CONFIG"; then + AC_MSG_CHECKING([for KWallet]) + old_CXXFLAGS="$CXXFLAGS" + old_LDFLAGS="$LDFLAGS" + old_LIBS="$LIBS" + for d in [`$PKG_CONFIG --cflags QtCore QtDBus QtGui`]; do + if test -n ["`echo "$d" | $EGREP -- '^-D[^[:space:]]*'`"]; then + CPPFLAGS="$CPPFLAGS $d" + fi + done + qt_include_dirs="`$PKG_CONFIG --cflags-only-I QtCore QtDBus QtGui`" + kde_incdir="`$KDE4_CONFIG --install include`" + SVN_KWALLET_INCLUDES="$DBUS_CPPFLAGS $qt_include_dirs -I$kde_incdir" + qt_libs_other_options="`$PKG_CONFIG --libs-only-other QtCore QtDBus QtGui`" + SVN_KWALLET_LIBS="$DBUS_LIBS -lQtCore -lQtDBus -lQtGui -lkdecore -lkdeui $qt_libs_other_options" + CXXFLAGS="$CXXFLAGS $SVN_KWALLET_INCLUDES" + LIBS="$LIBS $SVN_KWALLET_LIBS" + qt_lib_dirs="`$PKG_CONFIG --libs-only-L QtCore QtDBus QtGui`" + kde_libdir="`$KDE4_CONFIG --install lib`" + LDFLAGS="$old_LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS($qt_lib_dirs -L$kde_libdir)`" + AC_LANG(C++) + AC_LINK_IFELSE([AC_LANG_SOURCE([[ #include <kwallet.h> int main() {KWallet::Wallet::walletList();}]])], svn_lib_kwallet="yes", svn_lib_kwallet="no") - AC_LANG(C) - if test "$svn_lib_kwallet" = "yes"; then - AC_MSG_RESULT([yes]) - CXXFLAGS="$old_CXXFLAGS" - LIBS="$old_LIBS" + AC_LANG(C) + if test "$svn_lib_kwallet" = "yes"; then + AC_MSG_RESULT([yes]) + CXXFLAGS="$old_CXXFLAGS" + LIBS="$old_LIBS" + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([cannot find KWallet]) + fi else - AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot find KWallet]) + AC_MSG_ERROR([cannot find kde4-config]) fi else - AC_MSG_ERROR([cannot find kde4-config]) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui]) fi else - AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot find QtCore, QtDBus, QtGui]) + AC_MSG_ERROR([cannot find D-Bus]) fi else - AC_MSG_ERROR([cannot find D-Bus]) + AC_MSG_ERROR([cannot find pkg-config]) fi else - AC_MSG_ERROR([cannot find pkg-config]) + AC_MSG_ERROR([APR does not have support for DSOs]) fi else - AC_MSG_ERROR([APR does not have support for DSOs]) + AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared]) fi - else - AC_MSG_ERROR([--with-kwallet conflicts with --disable-shared]) - fi + ;; + esac else AC_MSG_RESULT([no]) fi diff --git a/build/ac-macros/serf.m4 b/build/ac-macros/serf.m4 index ae11e75..902e648 100644 --- a/build/ac-macros/serf.m4 +++ b/build/ac-macros/serf.m4 @@ -29,8 +29,14 @@ dnl performed with pkg-config. If --with-serf=yes was actually passed dnl then we error if we can't actually find serf. dnl dnl If a --with-serf=PREFIX option is passed search for a suitable -dnl serf installed on the system under that PREFIX. We will -dnl error if we can't find serf. +dnl serf installed on the system under that PREFIX. First we will +dnl try to find a pc file for serf under the prefix or directly +dnl in the prefix (allowing the path that the serf-?.pc file to be +dnl passed to configure if the pc file is in a non-standard location) +dnl and then use pkg-config to determine the options to use that library. +dnl If pkg-confg can't provide us the options to use that library fall +dnl back on trying to use the guess the options based on just the prefix. +dnl We will error if we can't find serf. dnl dnl If a --with-serf=no option is passed then no search will be dnl conducted. @@ -58,13 +64,15 @@ AC_DEFUN(SVN_LIB_SERF, elif test "$withval" = "no" ; then serf_skip=yes else - SVN_SERF_PREFIX_CONFIG() + serf_required=yes + serf_prefix="$withval" fi ]) if test "$serf_skip" = "no" ; then - if test "$serf_found" = "no" ; then - SVN_SERF_PKG_CONFIG() + SVN_SERF_PKG_CONFIG() + if test -n "$serf_prefix" && test "$serf_found" = "no" ; then + SVN_SERF_PREFIX_CONFIG() fi AC_MSG_CHECKING([was serf enabled]) @@ -91,7 +99,6 @@ AC_DEFUN(SVN_SERF_PREFIX_CONFIG, [ AC_MSG_NOTICE([serf library configuration via prefix]) serf_required=yes - serf_prefix=$withval for serf_major in serf-2 serf-1; do if ! test -d $serf_prefix/include/$serf_major; then continue; fi save_cppflags="$CPPFLAGS" @@ -134,17 +141,37 @@ AC_DEFUN(SVN_SERF_PKG_CONFIG, if test -n "$PKG_CONFIG"; then for serf_major in serf-2 serf-1; do AC_MSG_CHECKING([for $serf_major library]) - if $PKG_CONFIG $serf_major --exists; then + if test -n "$serf_prefix" ; then + dnl User provided a prefix so we try to find the pc file under + dnl the prefix. PKG_CONFIG_PATH isn't useful for this because + dnl we want to make sure that we get the library in the prefix + dnl the user specifies and we want to allow the prefix path to + dnl point at the path for the pc file is in (if it's in some + dnl other path than $serf_prefx/lib/pkgconfig). + if test -e "$serf_prefix/$serf_major.pc" ; then + serf_pc_arg="$serf_prefix/$serf_major.pc" + elif test -e "$serf_prefix/lib/pkgconfig/$serf_major.pc" ; then + serf_pc_arg="$serf_prefix/lib/pkgconfig/$serf_major.pc" + else + AC_MSG_RESULT([no]) + continue + fi + else + serf_pc_arg="$serf_major" + fi + if $PKG_CONFIG $serf_pc_arg --exists; then AC_MSG_RESULT([yes]) AC_MSG_CHECKING([serf library version]) - SERF_VERSION=`$PKG_CONFIG $serf_major --modversion` + SERF_VERSION=`$PKG_CONFIG $serf_pc_arg --modversion` AC_MSG_RESULT([$SERF_VERSION]) AC_MSG_CHECKING([serf version is suitable]) - if $PKG_CONFIG $serf_major --atleast-version=$serf_check_version; then + if $PKG_CONFIG $serf_pc_arg --atleast-version=$serf_check_version; then AC_MSG_RESULT([yes]) serf_found=yes - SVN_SERF_INCLUDES=[`$PKG_CONFIG $serf_major --cflags | $SED -e 's/-D[^ ]*//g'`] - SVN_SERF_LIBS=`$PKG_CONFIG $serf_major --libs` + SVN_SERF_INCLUDES=[`$PKG_CONFIG $serf_pc_arg --cflags | $SED -e 's/-D[^ ]*//g'`] + SVN_SERF_LIBS=`$PKG_CONFIG $serf_pc_arg --libs-only-l` + dnl don't use --libs-only-L because then we might miss some options + LDFLAGS=["$LDFLAGS `$PKG_CONFIG $serf_pc_arg --libs | $SED -e 's/-l[^ ]*//g'`"] break else AC_MSG_RESULT([no]) diff --git a/build/ac-macros/swig.m4 b/build/ac-macros/swig.m4 index b7fec72..ae6cf10 100644 --- a/build/ac-macros/swig.m4 +++ b/build/ac-macros/swig.m4 @@ -97,7 +97,7 @@ AC_DEFUN(SVN_FIND_SWIG, else SWIG_SUITABLE=no AC_MSG_WARN([Detected SWIG version $SWIG_VERSION_RAW]) - AC_MSG_WARN([Subversion requires SWIG 1.3.24 or later]) + AC_MSG_WARN([Subversion requires SWIG >= 1.3.24]) fi fi diff --git a/build/ac-macros/zlib.m4 b/build/ac-macros/zlib.m4 index e6ad31c..978fb39 100644 --- a/build/ac-macros/zlib.m4 +++ b/build/ac-macros/zlib.m4 @@ -26,47 +26,77 @@ dnl AC_DEFUN(SVN_LIB_Z, [ zlib_found=no + zlib_skip=no AC_ARG_WITH(zlib,AS_HELP_STRING([--with-zlib=PREFIX], [zlib compression library]), [ - if test "$withval" = "yes" ; then - AC_CHECK_HEADER(zlib.h, [ - AC_CHECK_LIB(z, inflate, [zlib_found="builtin"]) - ]) - elif test "$withval" = "no" ; then - AC_MSG_ERROR([cannot compile without zlib.]) + if test "$withval" = "yes"; then + zlib_skip=no + elif test "$withval" = "no"; then + zlib_skip=yes else - AC_MSG_NOTICE([zlib library configuration]) - zlib_prefix=$withval - save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -I$zlib_prefix/include" - AC_CHECK_HEADERS(zlib.h,[ - save_ldflags="$LDFLAGS" - LDFLAGS="$LDFLAGS -L$zlib_prefix/lib" - AC_CHECK_LIB(z, inflate, [zlib_found="yes"]) - LDFLAGS="$save_ldflags" - ]) - CPPFLAGS="$save_cppflags" + zlib_skip=no + zlib_prefix="$withval" fi - ], - [ - AC_CHECK_HEADER(zlib.h, [ - AC_CHECK_LIB(z, inflate, [zlib_found="builtin"]) - ]) ]) - if test "$zlib_found" = "no"; then + if test "$zlib_skip" = "yes"; then AC_MSG_ERROR([subversion requires zlib]) fi - if test "$zlib_found" = "yes"; then - SVN_ZLIB_INCLUDES="-I$zlib_prefix/include" - LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$zlib_prefix/lib)`" - fi + if test -n "$zlib_prefix"; then + AC_MSG_NOTICE([zlib library configuration via prefix]) + save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -I$zlib_prefix/include" + AC_CHECK_HEADERS(zlib.h,[ + save_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS -L$zlib_prefix/lib" + AC_CHECK_LIB(z, inflate, [ + zlib_found="yes" + SVN_ZLIB_INCLUDES="-I$zlib_prefix/include" + SVN_ZLIB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS(-L$zlib_prefix/lib)` -lz" + ]) + LDFLAGS="$save_ldflags" + ]) + CPPFLAGS="$save_cppflags" + else + SVN_ZLIB_PKG_CONFIG() - SVN_ZLIB_LIBS="-lz" + if test "$zlib_found" = "no"; then + AC_MSG_NOTICE([zlib library configuration]) + AC_CHECK_HEADER(zlib.h, [ + AC_CHECK_LIB(z, inflate, [ + zlib_found="builtin" + SVN_ZLIB_LIBS="-lz" + ]) + ]) + fi + fi + + if test "$zlib_found" = "no"; then + AC_MSG_ERROR([subversion requires zlib]) + fi AC_SUBST(SVN_ZLIB_INCLUDES) AC_SUBST(SVN_ZLIB_LIBS) ]) + +dnl SVN_ZLIB_PKG_CONFIG() +dnl Use pkg-config to try and detect and configure zlib +AC_DEFUN(SVN_ZLIB_PKG_CONFIG, +[ + AC_MSG_NOTICE([zlib library configuration via pkg-config]) + if test -n "$PKG_CONFIG"; then + AC_MSG_CHECKING([for zlib library]) + if $PKG_CONFIG zlib --exists; then + AC_MSG_RESULT([yes]) + zlib_found=yes + SVN_ZLIB_INCLUDES=`$PKG_CONFIG zlib --cflags` + SVN_ZLIB_LIBS=`$PKG_CONFIG zlib --libs` + SVN_ZLIB_LIBS="`SVN_REMOVE_STANDARD_LIB_DIRS($SVN_ZLIB_LIBS)`" + else + AC_MSG_RESULT([no]) + fi + fi +]) |