1 dnl Licensed to the Apache Software Foundation (ASF) under one
2 dnl or more contributor license agreements. See the NOTICE file
3 dnl distributed with this work for additional information
4 dnl regarding copyright ownership. The ASF licenses this file
5 dnl to you under the Apache License, Version 2.0 (the
6 dnl "License"); you may not use this file except in compliance
7 dnl with the License. You may obtain a copy of the License at
9 dnl http://www.apache.org/licenses/LICENSE-2.0
11 dnl Unless required by applicable law or agreed to in writing,
12 dnl software distributed under the License is distributed on an
13 dnl "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 dnl KIND, either express or implied. See the License for the
15 dnl specific language governing permissions and limitations
16 dnl under the License.
18 dnl configure.ac: Autoconfiscation for Subversion
19 dnl Process this file with autoconf to produce a configure script.
23 dnl Get the version of Subversion, using m4's esyscmd() command to do this
24 dnl at m4-time, since AC_INIT() requires it then.
26 [esyscmd(python build/getversion.py SVN subversion/include/svn_version.h)],
27 [http://subversion.apache.org/])
29 AC_CONFIG_SRCDIR(subversion/include/svn_types.h)
30 AC_CONFIG_AUX_DIR([build])
32 AC_MSG_NOTICE([Configuring Subversion ]AC_PACKAGE_VERSION)
34 AC_SUBST([abs_srcdir], ["`cd $srcdir && pwd`"])
35 AC_SUBST([abs_builddir], ["`pwd`"])
36 if test "$abs_srcdir" = "$abs_builddir"; then
37 canonicalized_srcdir=""
39 canonicalized_srcdir="$srcdir/"
41 AC_SUBST([canonicalized_srcdir])
43 SWIG_LDFLAGS="$LDFLAGS"
44 AC_SUBST([SWIG_LDFLAGS])
46 # Generate config.nice early (before the arguments are munged)
47 SVN_CONFIG_NICE(config.nice)
49 # ==== Check for programs ====================================================
51 # Look for a C compiler (before anything can set CFLAGS)
56 # Look for a C++ compiler (before anything can set CXXFLAGS)
57 CXXUSERFLAGS="$CXXFLAGS"
61 # Look for a C pre-processor
65 # AC_PROG_SED was introduced in Autoconf 2.59b
66 m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
68 # Grab target_cpu, so we can use it in the Solaris pkginfo file
71 # Look for an extended grep
77 # If $INSTALL is relative path to our fallback install-sh, then convert
78 # to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool
79 # may try to use it from a changed working directory.
80 if test "$INSTALL" = "build/install-sh -c"; then
81 INSTALL="$abs_srcdir/$INSTALL"
84 if test -z "$MKDIR"; then
89 # ==== Libraries, for which we may have source to build ======================
91 dnl verify apr version and set apr flags
92 dnl These regular expressions should not contain "\(" and "\)".
94 APR_VER_REGEXES=["1\.[3-9]\. 2\."]
96 SVN_LIB_APR($APR_VER_REGEXES)
98 if test `expr $apr_version : 2` -ne 0; then
99 dnl Bump the library so-version to 2 if using APR-2
100 dnl (Debian uses so-version 1 for APR-1-with-largefile)
102 dnl APR-2 provides APRUTIL
103 apu_config=$apr_config
104 AC_SUBST(SVN_APRUTIL_INCLUDES)
105 AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"])
106 AC_SUBST(SVN_APRUTIL_LIBS)
107 SVN_APR_MAJOR_VERSION=2
110 APU_VER_REGEXES=["1\.[3-9]\."]
111 SVN_LIB_APRUTIL($APU_VER_REGEXES)
112 SVN_APR_MAJOR_VERSION=1
114 AC_SUBST(SVN_APR_MAJOR_VERSION)
115 SVN_LT_SOVERSION="-version-info $svn_lib_ver"
116 AC_SUBST(SVN_LT_SOVERSION)
117 AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
118 [Subversion library major verson])
120 dnl Search for pkg-config
121 AC_PATH_PROG(PKG_CONFIG, pkg-config)
126 if test "$svn_lib_serf" = "yes"; then
127 AC_DEFINE([SVN_HAVE_SERF], 1,
128 [Defined if support for Serf is enabled])
131 dnl Search for apr_memcache (only affects fs_fs)
134 if test "$svn_lib_apr_memcache" = "yes"; then
135 AC_DEFINE(SVN_HAVE_MEMCACHE, 1,
136 [Defined if apr_memcache (standalone or in apr-util) is present])
139 AC_ARG_ENABLE(apache-whitelist,
140 AS_HELP_STRING([--enable-apache-whitelist=VER],
141 [Whitelist a particular Apache version number,
142 typically used to enable the use of a old version
143 patched by a distribution.]),
144 [apache_whitelist_ver=$enableval],
145 [apache_whitelist_ver=no])
146 HTTPD_WHITELIST="$apache_whitelist_ver"
147 AC_SUBST(HTTPD_WHITELIST)
149 dnl Find Apache with a recent-enough magic module number
150 SVN_FIND_APACHE(20051115, $apache_whitelist_ver)
152 dnl Search for SQLite. If you change SQLITE_URL from a .zip to
153 dnl something else also update build/ac-macros/sqlite.m4 to reflect
154 dnl the correct command to unpack the downloaded file.
155 SQLITE_MINIMUM_VER="3.8.2"
156 SQLITE_RECOMMENDED_VER="3.8.11.1"
157 dnl Used to construct the SQLite download URL.
158 SQLITE_RECOMMENDED_VER_REL_YEAR="2015"
159 SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
161 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
164 AC_ARG_ENABLE(sqlite-compatibility-version,
165 AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
166 [Allow binary to run against SQLite as old as ARG]),
167 [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
169 if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
170 SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
171 [sqlite_compat_ver_num])
172 CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
173 CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
176 SVN_CHECK_FOR_ATOMIC_BUILTINS
177 if test "$svn_cv_atomic_builtins" = "yes"; then
178 AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
181 dnl Set up a number of directories ---------------------
183 dnl Create SVN_BINDIR for proper substitution
184 if test "${bindir}" = '${exec_prefix}/bin'; then
185 if test "${exec_prefix}" = "NONE"; then
186 if test "${prefix}" = "NONE"; then
187 SVN_BINDIR="${ac_default_prefix}/bin"
189 SVN_BINDIR="${prefix}/bin"
192 SVN_BINDIR="${exec_prefix}/bin"
195 SVN_BINDIR="${bindir}"
198 dnl fully evaluate this value. when we substitute it into our tool scripts,
199 dnl they will not have things such as ${bindir} available
200 SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
203 dnl provide ${bindir} in svn_private_config.h for use in compiled code
204 AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
205 [Defined to be the path to the installed binaries])
207 dnl This purposely does *not* allow for multiple parallel installs.
208 dnl However, it is compatible with most gettext usages.
209 localedir='${datadir}/locale'
212 dnl For SVN_LOCALE_DIR, we have to expand it to something. See SVN_BINDIR.
213 if test "${prefix}" = "NONE" \
214 && ( test "${datadir}" = '${prefix}/share' \
215 || ( test "${datadir}" = '${datarootdir}' \
216 && test "${datarootdir}" = '${prefix}/share' ) ); then
217 exp_localedir='${ac_default_prefix}/share/locale'
219 exp_localedir=$localedir
221 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
222 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
223 [Defined to be the path to the installed locale dirs])
225 dnl Check for libtool -- we'll definitely need it for all our shared libs!
226 AC_MSG_NOTICE([configuring libtool now])
227 ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
228 AC_ARG_ENABLE(experimental-libtool,
229 AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
230 [experimental_libtool=$enableval],[experimental_libtool=no])
232 if test "$experimental_libtool" = "yes"; then
233 echo "using APR's libtool"
234 sh_libtool="`$apr_config --apr-libtool`"
235 LIBTOOL="$sh_libtool"
236 SVN_LIBTOOL="$sh_libtool"
238 sh_libtool="$abs_builddir/libtool"
239 SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
241 AC_SUBST(SVN_LIBTOOL)
243 dnl Determine the libtool version
245 lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
246 lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
247 lt_major_version=`echo $lt_version | cut -d'.' -f 1`
250 dnl set the default parameters
251 svn_enable_static=yes
252 svn_enable_shared=yes
254 dnl check for --enable-static option
255 AC_ARG_ENABLE(static,
256 AS_HELP_STRING([--enable-static],
257 [Build static libraries]),
258 [svn_enable_static="$enableval"], [svn_enable_static="yes"])
260 dnl check for --enable-shared option
261 AC_ARG_ENABLE(shared,
262 AS_HELP_STRING([--enable-shared],
263 [Build shared libraries]),
264 [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
266 if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
267 AC_MSG_NOTICE([building both shared and static libraries])
268 elif test "$svn_enable_static" = "yes" ; then
269 AC_MSG_NOTICE([building static libraries only])
270 LT_CFLAGS="-static $LT_CFLAGS"
271 LT_LDFLAGS="-static $LT_LDFLAGS"
272 elif test "$svn_enable_shared" = "yes" ; then
273 AC_MSG_NOTICE([building shared libraries only])
274 if test "$lt_major_version" = "1" ; then
275 LT_CFLAGS="-prefer-pic $LT_CFLAGS"
276 elif test "$lt_major_version" = "2" ; then
277 LT_CFLAGS="-shared $LT_CFLAGS"
279 LT_LDFLAGS="-shared $LT_LDFLAGS"
281 AC_MSG_ERROR([cannot disable both shared and static libraries])
284 dnl Check for --enable-all-static option
285 AC_ARG_ENABLE(all-static,
286 AS_HELP_STRING([--enable-all-static],
287 [Build completely static (standalone) binaries.]),
289 if test "$enableval" = "yes" ; then
290 LT_LDFLAGS="-all-static $LT_LDFLAGS"
291 elif test "$enableval" != "no" ; then
292 AC_MSG_ERROR([--enable-all-static doesn't accept argument])
299 AC_ARG_ENABLE(local-library-preloading,
300 AS_HELP_STRING([--enable-local-library-preloading],
301 [Enable preloading of locally built libraries in locally
302 built executables. This may be necessary for testing
303 prior to installation on some platforms. It does not
304 work on some platforms (Darwin, OpenBSD, ...).]),
306 if test "$enableval" != "no"; then
307 if test "$svn_enable_shared" = "yes"; then
308 TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
310 AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
313 TRANSFORM_LIBTOOL_SCRIPTS=""
316 TRANSFORM_LIBTOOL_SCRIPTS=""
318 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
320 dnl Check if -no-undefined is needed for the platform.
321 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
322 dnl So we only turn it on for platforms where we know we really need it.
323 AC_MSG_CHECKING([whether libtool needs -no-undefined])
327 LT_NO_UNDEFINED="-no-undefined"
334 AC_SUBST(LT_NO_UNDEFINED)
339 AS_HELP_STRING([--with-trang=PATH],
340 [Specify the command to run the trang schema converter]),
344 if test "$trang" = "yes"; then
345 AC_PATH_PROG(TRANG, trang, none)
351 dnl Check for doxygen
354 AC_HELP_STRING([--with-doxygen=PATH],
355 [Specify the command to run doxygen]),
359 if test "$doxygen" = "yes"; then
360 AC_PATH_PROG(DOXYGEN, doxygen, none)
367 dnl Check for libraries --------------------
369 dnl Expat -------------------
372 AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS],
373 [Specify location of Expat]),
374 [svn_lib_expat="$withval"],
375 [svn_lib_expat="::expat"])
377 # APR-util accepts "builtin" as an argument to this option so if the user
378 # passed "builtin" pretend the user didn't specify the --with-expat option
379 # at all. Expat will (hopefully) be found in apr-util.
380 test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
382 AC_MSG_CHECKING([for Expat])
383 if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
385 for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
386 SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
388 SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
389 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
390 LDFLAGS="$LDFLAGS -L$l"
392 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
393 SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
395 SVN_XML_LIBS="${SVN_XML_LIBS## }"
396 old_CPPFLAGS="$CPPFLAGS"
398 CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
399 LIBS="$LIBS $SVN_XML_LIBS"
400 AC_LINK_IFELSE([AC_LANG_SOURCE([[
403 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
405 if test "$svn_lib_expat" = "yes"; then
410 CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
411 if test "$enable_all_static" != "yes"; then
412 SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
414 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
417 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
418 if test "$svn_lib_expat" = "yes"; then
420 AC_MSG_WARN([Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option.])
423 AC_MSG_ERROR([Expat not found])
426 CPPFLAGS="$old_CPPFLAGS"
429 if test "$svn_lib_expat" = "yes"; then
430 AC_MSG_ERROR([--with-expat option requires argument])
431 elif test "$svn_lib_expat" = "no"; then
432 AC_MSG_ERROR([Expat is required])
434 AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
437 AC_SUBST(SVN_XML_INCLUDES)
438 AC_SUBST(SVN_XML_LIBS)
440 dnl Berkeley DB -------------------
442 # Berkeley DB on SCO OpenServer needs -lsocket
443 AC_CHECK_LIB(socket, socket)
445 # Build the BDB filesystem library only if we have an appropriate
446 # version of Berkeley DB.
448 powerpc-apple-darwin*)
449 # Berkeley DB 4.0 does not work on OS X.
450 SVN_FS_WANT_DB_MAJOR=4
451 SVN_FS_WANT_DB_MINOR=1
452 SVN_FS_WANT_DB_PATCH=25
455 SVN_FS_WANT_DB_MAJOR=4
456 SVN_FS_WANT_DB_MINOR=0
457 SVN_FS_WANT_DB_PATCH=14
461 # Look for libdb4.so first:
462 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
463 $SVN_FS_WANT_DB_PATCH, [db4 db])
465 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
466 [The desired major version for the Berkeley DB])
467 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
468 [The desired minor version for the Berkeley DB])
469 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
470 [The desired patch version for the Berkeley DB])
472 AC_SUBST(SVN_DB_INCLUDES)
473 AC_SUBST(SVN_DB_LIBS)
477 if test "$svn_lib_sasl" = "yes"; then
478 AC_DEFINE(SVN_HAVE_SASL, 1,
479 [Defined if Cyrus SASL v2 is present on the system])
482 dnl Mac OS specific features -------------------
484 SVN_LIB_MACHO_ITERATE
486 SVN_LIB_MACOS_KEYCHAIN
488 dnl APR_HAS_DSO -------------------
490 AC_MSG_CHECKING([whether APR has support for DSOs])
491 old_CPPFLAGS="$CPPFLAGS"
492 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
493 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
499 AC_MSG_RESULT([yes]),
502 CPPFLAGS="$old_CPPFLAGS"
505 dnl D-Bus (required for support for KWallet) -------------------
507 if test -n "$PKG_CONFIG"; then
508 AC_MSG_CHECKING([for D-Bus .pc file])
509 if $PKG_CONFIG --exists dbus-1; then
511 old_CPPFLAGS="$CPPFLAGS"
513 DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
514 AC_MSG_CHECKING([D-Bus version])
515 DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
516 AC_MSG_RESULT([$DBUS_VERSION])
517 # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
518 if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
519 DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
521 DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
522 CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
523 LIBS="$LIBS $DBUS_LIBS"
524 AC_MSG_CHECKING([for D-Bus])
525 AC_LINK_IFELSE([AC_LANG_SOURCE([[
526 #include <dbus/dbus.h>
528 {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
529 if test "$HAVE_DBUS" = "yes"; then
534 CPPFLAGS="$old_CPPFLAGS"
541 dnl GPG Agent -------------------
543 AC_ARG_WITH(gpg_agent,
544 AS_HELP_STRING([--without-gpg-agent],
545 [Disable support for GPG-Agent]),
546 [], [with_gpg_agent=yes])
547 AC_MSG_CHECKING([whether to support GPG-Agent])
548 if test "$with_gpg_agent" = "yes"; then
550 AC_DEFINE([SVN_HAVE_GPG_AGENT], [1],
551 [Is GPG Agent support enabled?])
556 AC_SUBST(SVN_HAVE_GPG_AGENT)
558 dnl GNOME Keyring -------------------
560 AC_ARG_WITH(old_gnome_keyring,
561 AS_HELP_STRING([--with-old-gnome-keyring],
562 [Enable old GNOME Keyring for auth credentials (prefer --with-gnome-keyring)]),
563 [with_old_gnome_keyring="$withval"],
564 [with_old_gnome_keyring=no])
566 found_old_gnome_keyring=no
567 AC_MSG_CHECKING([whether to look for old GNOME Keyring])
568 if test "$with_old_gnome_keyring" != "no"; then
572 if test "$with_old_gnome_keyring" = "yes"; then
573 AC_MSG_ERROR([--with-old-gnome-keyring is not supported on Mac OS X.])
575 with_old_gnome_keyring=no
579 if test "$svn_enable_shared" = "yes"; then
580 if test "$APR_HAS_DSO" = "yes"; then
581 if test -n "$PKG_CONFIG"; then
582 AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
583 if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
585 old_CPPFLAGS="$CPPFLAGS"
586 SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
587 CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
588 AC_CHECK_HEADER(gnome-keyring.h, found_old_gnome_keyring=yes, found_old_gnome_keyring=no)
589 AC_MSG_CHECKING([for GNOME Keyring])
590 if test "$found_old_gnome_keyring" = "yes"; then
592 AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1],
593 [Is GNOME Keyring support enabled?])
594 CPPFLAGS="$old_CPPFLAGS"
595 SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
598 if test "$with_old_gnome_keyring" = "yes"; then
599 AC_MSG_ERROR([cannot find GNOME Keyring])
604 if test "$with_old_gnome_keyring" = "yes"; then
605 AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
607 with_old_gnome_keyring=no
611 if test "$with_old_gnome_keyring" = "yes"; then
612 AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
614 with_old_gnome_keyring=no
618 if test "$with_old_gnome_keyring" = "yes"; then
619 AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
621 with_old_gnome_keyring=no
625 if test "$with_old_gnome_keyring" = "yes"; then
626 AC_MSG_ERROR([--with-old-gnome-keyring conflicts with --disable-shared])
628 with_old_gnome_keyring=no
636 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
637 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
639 dnl LibSecret -------------------
642 dnl Googlemock -----------------
643 AC_ARG_ENABLE([googlemock],
644 AS_HELP_STRING([--disable-googlemock],
645 [Do not use the Googlemock testing framework]),
647 [enable_googlemock=yes])
649 AC_SUBST([GOOGLEMOCK_SRCDIR], [$abs_srcdir/googlemock])
650 AC_MSG_CHECKING([whether use Googlemock])
651 if test "$enable_googlemock" != "no"; then
652 if test -d "$GOOGLEMOCK_SRCDIR"; then
654 SVN_USE_GOOGLEMOCK=true
657 SVN_USE_GOOGLEMOCK=false
661 SVN_USE_GOOGLEMOCK=false
663 AC_SUBST([SVN_USE_GOOGLEMOCK])
665 dnl Ev2 experimental features ----------------------
666 dnl Note: The Ev2 implementations will be built unconditionally, but by
667 dnl providing this flag, users can choose to use the currently-shimmed Ev2
668 dnl editor implementations for various operations. This will probably
669 dnl negatively impact performance, but is useful for testing.
670 AC_ARG_ENABLE(ev2-impl,
671 AS_HELP_STRING([--enable-ev2-impl],
672 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
673 [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
674 if test "$enable_ev2_impl" = "yes"; then
675 AC_DEFINE(ENABLE_EV2_IMPL, 1,
676 [Define to 1 if Ev2 implementations should be used.])
680 dnl I18n -------------------
683 AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
684 [enable_nls=$enableval],[enable_nls=yes])
688 if test "$enable_nls" = "yes"; then
689 dnl First, check to see if there is a working msgfmt.
690 AC_PATH_PROG(MSGFMT, msgfmt, none)
691 AC_PATH_PROG(MSGMERGE, msgmerge, none)
692 AC_PATH_PROG(XGETTEXT, xgettext, none)
693 if test "$MSGFMT" != "none"; then
694 AC_SEARCH_LIBS(bindtextdomain, [intl],
696 # in case libintl needs to be linked explicitly,
697 # $ac_cv_search_bindtextdomain contains -l linker flags
698 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
700 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
706 if test "$enable_nls" = "no"; then
707 # Destroy the cached result so we can test again
708 unset ac_cv_search_bindtextdomain
709 # On some systems, libintl needs libiconv to link properly,
710 # so try again with -liconv.
711 AC_SEARCH_LIBS(bindtextdomain, [intl],
714 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
716 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
718 # This is here so that -liconv ends up in LIBS
719 # if it worked with -liconv.
720 AC_CHECK_LIB(iconv, libiconv_open)
723 AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.])
727 if test "$enable_nls" = "yes"; then
728 AC_DEFINE(ENABLE_NLS, 1,
729 [Define to 1 if translation of program messages to the user's
730 native language is requested.])
736 AC_SUBST(SVN_INTL_LIBS)
739 /* Indicate to translators that string X should be translated. Do not look
740 up the translation at run time; just expand to X. This macro is suitable
741 for use where a constant string is required at compile time. */
743 /* Indicate to translators that we have decided the string X should not be
744 translated. Expand to X. */
749 /* Indicate to translators that string X should be translated. At run time,
750 look up and return the translation of X. */
751 #define _(x) dgettext(PACKAGE_NAME, x)
752 /* Indicate to translators that strings X1 and X2 are singular and plural
753 forms of the same message, and should be translated. At run time, return
754 an appropriate translation depending on the number N. */
755 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
758 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
759 #define gettext(x) (x)
760 #define dgettext(domain, x) (x)
764 #if defined(__GNUC__) && (__GNUC__ >= 3)
765 # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
766 # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
768 # define SVN__PREDICT_FALSE(x) (x)
769 # define SVN__PREDICT_TRUE(x) (x)
772 #if defined(SVN_DEBUG)
773 # define SVN__FORCE_INLINE
774 # define SVN__PREVENT_INLINE
775 #elif defined(__GNUC__)
776 # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
777 # define SVN__PREVENT_INLINE __attribute__ ((noinline))
779 # define SVN__FORCE_INLINE APR_INLINE
780 # define SVN__PREVENT_INLINE
783 /* Macro used to specify that a variable is intentionally left unused.
784 Supresses compiler warnings about the variable being unused. */
785 #define SVN_UNUSED(v) ( (void)(v) )
788 dnl Used to simulate makefile conditionals.
790 NO_GETTEXT_CODESET=\#
791 if test $USE_NLS = "yes"; then
792 AC_CHECK_FUNCS(bind_textdomain_codeset,
793 [ GETTEXT_CODESET="" ],
794 [ NO_GETTEXT_CODESET="" ])
796 AC_SUBST(GETTEXT_CODESET)
797 AC_SUBST(NO_GETTEXT_CODESET)
799 # Check if we are using GNU gettext.
802 if test $USE_NLS = "yes"; then
803 AC_MSG_CHECKING(if we are using GNU gettext)
804 if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
808 AC_MSG_RESULT($GNU_GETTEXT)
810 AC_SUBST(MSGFMTFLAGS)
812 dnl libmagic -------------------
816 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
817 [libmagic filetype detection library]),
819 if test "$withval" = "yes" ; then
820 AC_CHECK_HEADER(magic.h, [
821 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
823 libmagic_prefix="the default locations"
824 elif test "$withval" != "no"; then
825 libmagic_prefix=$withval
826 save_cppflags="$CPPFLAGS"
827 CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
828 AC_CHECK_HEADERS(magic.h,[
829 save_ldflags="$LDFLAGS"
830 LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
831 AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
832 LDFLAGS="$save_ldflags"
834 CPPFLAGS="$save_cppflags"
836 if test "$withval" != "no" && test "$libmagic_found" = "no"; then
837 AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
841 AC_CHECK_HEADER(magic.h, [
842 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
846 if test "$libmagic_found" != "no"; then
847 AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
848 SVN_MAGIC_LIBS="-lmagic"
851 if test "$libmagic_found" = "yes"; then
852 SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
853 LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
856 AC_SUBST(SVN_MAGIC_INCLUDES)
857 AC_SUBST(SVN_MAGIC_LIBS)
859 dnl KWallet -------------------
862 if test "$svn_lib_kwallet" = "yes"; then
863 AC_DEFINE([SVN_HAVE_KWALLET], 1,
864 [Defined if KWallet support is enabled])
867 dnl plaintext passwords -------------------
868 AC_ARG_ENABLE(plaintext-password-storage,
869 AS_HELP_STRING([--disable-plaintext-password-storage],
870 [Disable on-disk caching of plaintext passwords and passphrases.
871 (Leaving this functionality enabled will not force Subversion
872 to store passwords in plaintext, but does permit users to
873 explicitly allow that behavior via runtime configuration.)]),
875 if test "$enableval" = "no"; then
876 AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
877 AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
878 [Defined if plaintext password/passphrase storage is disabled])
882 dnl Build and install rules -------------------
884 INSTALL_STATIC_RULES="install-bin install-docs"
885 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
886 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
887 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
889 if test "$svn_lib_berkeley_db" = "yes"; then
890 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
891 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
892 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
893 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
894 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
897 if test "$svn_lib_serf" = "yes"; then
898 BUILD_RULES="$BUILD_RULES serf-lib"
899 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
900 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
903 if test "$svn_lib_kwallet" = "yes"; then
904 BUILD_RULES="$BUILD_RULES kwallet-lib"
905 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
906 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
909 if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then
910 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
911 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
912 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
915 if test "$USE_NLS" = "yes"; then
916 BUILD_RULES="$BUILD_RULES locale"
917 INSTALL_RULES="$INSTALL_RULES install-locale"
920 AC_SUBST(BUILD_RULES)
921 AC_SUBST(INSTALL_STATIC_RULES)
922 AC_SUBST(INSTALL_RULES)
923 AC_SUBST(BDB_TEST_DEPS)
924 AC_SUBST(BDB_TEST_PROGRAMS)
926 dnl Check for header files ----------------
928 dnl Standard C headers
931 dnl Check for typedefs, structures, and compiler characteristics ----------
933 dnl if compiler doesn't understand `const', then define it empty
936 dnl if non-existent, define size_t to be `unsigned'
940 dnl Check for library functions ----------
944 dnl svn_error's default warning handler uses vfprintf()
947 dnl check for functions needed in special file handling
948 AC_CHECK_FUNCS(symlink readlink)
951 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
953 dnl check for termios
954 AC_CHECK_HEADER(termios.h,[
955 AC_CHECK_FUNCS(tcgetattr tcsetattr,[
956 AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
960 dnl Process some configuration options ----------
963 AS_HELP_STRING([--enable-debug],
964 [Turn on debugging]),
966 if test "$enableval" = "yes" ; then
967 enable_debugging="yes"
969 enable_debugging="no"
973 # Neither --enable-debug nor --disable-debug was passed.
974 enable_debugging="maybe"
977 AC_ARG_ENABLE(optimize,
978 AS_HELP_STRING([--enable-optimize],
979 [Turn on optimizations]),
981 if test "$enableval" = "yes" ; then
982 enable_optimization="yes"
984 enable_optimization="no"
988 # Neither --enable-optimize nor --disable-optimize was passed.
989 enable_optimization="maybe"
992 dnl Use -Wl,--no-undefined during linking of some libraries
993 AC_ARG_ENABLE(disallowing-of-undefined-references,
994 [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
995 [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
996 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
997 enable_disallowing_of_undefined_references="no"
999 if test "$enable_disallowing_of_undefined_references" != "no"; then
1000 AC_MSG_CHECKING([for -Wl,--no-undefined])
1001 old_LDFLAGS="$LDFLAGS"
1002 LDFLAGS="$LDFLAGS -Wl,--no-undefined"
1003 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
1004 LDFLAGS="$old_LDFLAGS"
1005 if test "$svn_wl_no_undefined" = "yes"; then
1006 AC_MSG_RESULT([yes])
1007 for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
1008 eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
1010 shared_only_LDFLAGS="-Wl,--no-undefined"
1013 if test "$enable_disallowing_of_undefined_references" = "yes"; then
1014 AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
1018 AC_SUBST([libsvn_client_LDFLAGS])
1019 AC_SUBST([libsvn_delta_LDFLAGS])
1020 AC_SUBST([libsvn_diff_LDFLAGS])
1021 AC_SUBST([libsvn_fs_LDFLAGS])
1022 AC_SUBST([libsvn_fs_base_LDFLAGS])
1023 AC_SUBST([libsvn_fs_fs_LDFLAGS])
1024 AC_SUBST([libsvn_fs_util_LDFLAGS])
1025 AC_SUBST([libsvn_ra_LDFLAGS])
1026 AC_SUBST([libsvn_ra_local_LDFLAGS])
1027 AC_SUBST([libsvn_ra_serf_LDFLAGS])
1028 AC_SUBST([libsvn_ra_svn_LDFLAGS])
1029 AC_SUBST([libsvn_repos_LDFLAGS])
1030 AC_SUBST([libsvn_subr_LDFLAGS])
1031 AC_SUBST([libsvn_wc_LDFLAGS])
1032 AC_SUBST([shared_only_LDFLAGS])
1035 AC_ARG_ENABLE(maintainer-mode,
1036 AS_HELP_STRING([--enable-maintainer-mode],
1037 [Turn on debugging and very strict compile-time warnings]),
1039 if test "$enableval" = "yes" ; then
1040 if test "$enable_debugging" = "no" ; then
1041 AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1043 enable_debugging=yes
1045 dnl Enable some extra warnings. Put these before the user's flags
1046 dnl so the user can specify flags that override these.
1047 if test "$GCC" = "yes"; then
1048 AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1050 dnl some additional flags that can be handy for an occasional review,
1051 dnl but throw too many warnings in svn code, of too little importance,
1052 dnl to keep these enabled. Remove the "dnl" to do a run with these
1053 dnl switches enabled.
1054 dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1056 dnl Add each of the following flags only if the C compiler accepts it.
1057 CFLAGS_KEEP="$CFLAGS"
1060 SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1061 SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1062 SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1063 SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1064 SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1065 SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1066 SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1067 SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1068 SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
1069 SVN_CFLAGS_ADD_IFELSE([-Wno-unused-const-variable])
1071 CMAINTAINERFLAGS="$CFLAGS"
1072 CFLAGS="$CFLAGS_KEEP"
1074 dnl Add flags that all versions of GCC (should) support
1075 CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wbad-function-cast $CMAINTAINERFLAGS"
1077 if test "$GXX" = "yes"; then
1078 AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1080 dnl Add each of the following flags only if the C++ compiler accepts it.
1081 CXXFLAGS_KEEP="$CXXFLAGS"
1084 SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1085 SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1086 SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1087 SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1089 CXXMAINTAINERFLAGS="$CXXFLAGS"
1090 CXXFLAGS="$CXXFLAGS_KEEP"
1092 dnl Add flags that all versions of G++ (should) support
1093 CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1098 if test "$enable_debugging" = "yes" ; then
1099 dnl At the moment, we don't want optimization, because we're
1100 dnl debugging. Unless optiization was explicitly enabled.
1101 if test "$enable_optimization" != "yes"; then
1102 AC_MSG_NOTICE([Disabling optimizations for debugging])
1103 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1104 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1106 dnl Add debugging flags, unless they were set by the user
1107 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1108 AC_MSG_NOTICE([Enabling debugging for C])
1109 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1110 SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1111 SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1112 SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1113 SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1114 SVN_CFLAGS_ADD_IFELSE([-g])])])
1116 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1117 AC_MSG_NOTICE([Enabling debugging for C++])
1118 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1119 SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1120 SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1121 SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1122 SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1123 SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1125 dnl SVN_DEBUG enables specific features for developer builds
1126 dnl AP_DEBUG enables specific (Apache) features for developer builds
1127 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1128 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1129 elif test "$enable_debugging" = "no" ; then
1130 AC_MSG_NOTICE([Disabling debugging])
1131 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1132 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1133 dnl Compile with NDEBUG to get rid of assertions
1134 CFLAGS="$CFLAGS -DNDEBUG"
1135 CXXFLAGS="$CXXFLAGS -DNDEBUG"
1136 # elif test "$enable_debugging" = "maybe" ; then
1140 if test "$enable_optimization" = "yes"; then
1141 dnl Add optimization flags, unless they were set by the user
1142 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1143 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1144 if test "$enable_debugging" = "yes"; then
1145 AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1146 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1147 SVN_CFLAGS_ADD_IFELSE([-O])])
1149 AC_MSG_NOTICE([Enabling optimizations for C])
1150 SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1151 SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1152 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1153 SVN_CFLAGS_ADD_IFELSE([-O])])])])
1154 SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1155 SVN_CFLAGS_ADD_IFELSE([-flto])
1158 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1159 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1160 if test "$enable_debugging" = "yes"; then
1161 AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1162 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1163 SVN_CXXFLAGS_ADD_IFELSE([-O])])
1165 AC_MSG_NOTICE([Enabling optimizations for C++])
1166 SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1167 SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1168 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1169 SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1170 SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1171 SVN_CXXFLAGS_ADD_IFELSE([-flto])
1174 elif test "$enable_optimization" = "no"; then
1175 dnl Remove all optimization flags
1176 AC_MSG_NOTICE([Disabling optimizations])
1177 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1178 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1179 # elif test "$enable_optimization" = "maybe" ; then
1183 dnl Dump the current compiler options
1184 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1185 AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
1186 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1187 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1188 AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
1189 AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
1191 AC_ARG_ENABLE(full-version-match,
1192 AS_HELP_STRING([--disable-full-version-match],
1193 [Disable the full version match rules when checking
1194 Subversion library compatibility.]),
1196 if test "$enableval" = "no" ; then
1197 AC_MSG_NOTICE([Disabling svn full version matching])
1198 AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1199 [Defined if the full version matching rules are disabled])
1204 AS_HELP_STRING([--with-editor=PATH],
1205 [Specify a default editor for the subversion client.]),
1208 if test "$withval" = "yes" ; then
1209 AC_MSG_ERROR([--with-editor requires an argument.])
1211 SVN_CLIENT_EDITOR=$withval
1212 AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1213 [The path of a default editor for the client.])
1226 AC_ARG_ENABLE(mod-activation,
1227 AS_HELP_STRING([--enable-mod-activation],
1228 [Enable mod_dav_svn in httpd.conf]),
1230 if test "$enableval" = "yes" ; then
1232 AC_MSG_NOTICE([Enabling apache module activation])
1234 AC_MSG_NOTICE([Disabling apache module activation])
1237 AC_SUBST(MOD_ACTIVATION)
1242 AC_HELP_STRING([--enable-gcov],
1243 [Turn on gcov coverage testing (GCC only).]),
1245 if test "$enableval" = "yes" ; then
1246 dnl Probably other compilers support something similar;
1247 dnl feel free to extend this to include them.
1248 if test "$GCC" = "yes"; then
1249 if test "$svn_enable_shared" = "yes" ; then
1250 AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1251 recommend also using --enable-all-static).])
1253 if test ! "$enable_all_static" = "yes" ; then
1254 AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1256 AC_MSG_NOTICE([Enabling gcov coverage testing.])
1257 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1258 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1260 AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1265 AC_ARG_ENABLE(gprof,
1266 AS_HELP_STRING([--enable-gprof],
1267 [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1269 if test "$enableval" = "yes" ; then
1270 dnl Probably other compilers support -pg or something similar;
1271 dnl feel free to extend this to include them.
1272 if test "$GCC" = "yes"; then
1273 if test "$svn_enable_shared" = "yes" ; then
1274 AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1275 recommend also using --enable-all-static).])
1277 if test ! "$enable_all_static" = "yes" ; then
1278 AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1280 AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1281 CFLAGS="$CFLAGS -pg"
1282 CXXFLAGS="$CXXFLAGS -pg"
1283 LT_LDFLAGS="$LT_LDFLAGS -pg"
1285 AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1291 # Scripting and Bindings languages
1293 # Python: Used for testsuite, and bindings
1296 PYTHON="`$abs_srcdir/build/find_python.sh`"
1297 if test -z "$PYTHON"; then
1298 AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1299 AC_MSG_WARN([or to use the Subversion Python bindings])
1301 AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1302 AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1303 AC_MSG_WARN([to the Python executable, and re-run configure])
1305 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1307 # The minimum version for the JVM runtime for our Java bytecode.
1308 JAVA_OLDEST_WORKING_VER='1.6'
1309 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1310 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1312 AC_PATH_PROG(PERL, perl, none)
1314 if test -n "$RUBY"; then
1315 AC_PATH_PROG(RUBY, "$RUBY", none)
1317 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)
1319 if test "$RUBY" != "none"; then
1320 AC_MSG_CHECKING([rb_hash_foreach])
1321 if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1322 AC_MSG_RESULT([yes])
1323 if test -n "$RDOC"; then
1324 AC_PATH_PROG(RDOC, "$RDOC", none)
1326 AC_PATH_PROGS(RUBY, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none)
1328 AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1329 svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1331 RUBY_MAJOR="$svn_cv_ruby_major"
1333 AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1334 svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1336 RUBY_MINOR="$svn_cv_ruby_minor"
1338 AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1339 svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1341 RUBY_TEENY="$svn_cv_ruby_teeny"
1343 AC_SUBST(RUBY_MAJOR)
1344 AC_SUBST(RUBY_MINOR)
1345 AC_SUBST(RUBY_TEENY)
1346 if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1347 # Disallow Ruby between 1.8.7 and 1.9.3
1349 AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1350 AC_MSG_WARN([Only 1.8.x and 1.9.3 or later are supported at this time])
1355 AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1356 AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1357 AC_MSG_WARN([Subversion Ruby bindings])
1358 AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1363 AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings])
1364 AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings])
1365 AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings])
1366 AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings])
1370 dnl decide whether we want to link against the RA/FS libraries
1371 AC_ARG_ENABLE(runtime-module-search,
1372 AS_HELP_STRING([--enable-runtime-module-search],
1373 [Turn on dynamic loading of RA/FS libraries including
1374 third-party FS libraries]),
1376 if test "$enableval" = "yes"; then
1378 if test "$svn_enable_shared" = "no"; then
1379 AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1381 AC_DEFINE(SVN_USE_DSO, 1,
1382 [Defined if svn should try to load DSOs])
1384 dnl Mac OS X uses libname.MAJOR.SOVERSION.dylib
1385 dnl Most other unixes use libname.MAJOR.so.SOVERSION
1388 AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.%d.dylib"],
1389 [Shared library file name suffix format])
1392 AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.so.%d"],
1393 [Shared library file name suffix format])
1399 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1400 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_LOCAL, 1,
1401 [Defined if libsvn_ra should link against libsvn_ra_local])
1402 svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1403 svn_ra_lib_install_deps="install-ramod-lib"
1404 svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1406 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SVN, 1,
1407 [Defined if libsvn_ra should link against libsvn_ra_svn])
1408 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1409 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1411 if test "$svn_lib_serf" = "yes"; then
1412 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SERF, 1,
1413 [Defined if libsvn_ra should link against libsvn_ra_serf])
1414 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1415 svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1416 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1419 SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1420 SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1421 SVN_RA_LIB_LINK=$svn_ra_lib_link
1423 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1424 [Defined if libsvn_fs should link against libsvn_fs_fs])
1425 svn_fs_lib_deps="\$(FS_FS_DEPS)"
1426 svn_fs_lib_install_deps="install-fsmod-lib"
1427 svn_fs_lib_link="\$(FS_FS_LINK)"
1429 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1430 [Defined if libsvn_fs should link against libsvn_fs_x])
1431 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1432 svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1433 dnl FSFS already installs fsmod
1434 dnl svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1436 if test "$svn_lib_berkeley_db" = "yes"; then
1437 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1438 [Defined if libsvn_fs should link against libsvn_fs_base])
1439 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1440 svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1441 svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1444 SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1445 SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1446 SVN_FS_LIB_LINK=$svn_fs_lib_link
1449 AC_SUBST(SVN_RA_LIB_DEPS)
1450 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1451 AC_SUBST(SVN_RA_LIB_LINK)
1452 AC_SUBST(SVN_FS_LIB_DEPS)
1453 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1454 AC_SUBST(SVN_FS_LIB_LINK)
1456 # ==== JavaHL ================================================================
1458 dnl Possibly compile JavaHL
1460 AC_ARG_ENABLE(javahl,
1461 AS_HELP_STRING([--enable-javahl],
1462 [Enable compilation of Java high-level bindings (requires C++)]),
1463 [ if test "$enableval" = "yes" ; then
1464 do_javahl_build="yes"
1469 INSTALL_EXTRA_JAVAHL_LIB=""
1471 JAVAHL_TESTS_TARGET=""
1472 JAVAHL_COMPAT_TESTS_TARGET=""
1474 if test "$do_javahl_build" = "yes"; then
1475 dnl Check for suitable JDK
1476 if test "$JDK_SUITABLE" = "no"; then
1477 AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK.
1478 Please specify a suitable JDK using the --with-jdk option.])
1481 dnl The temporary directory where libtool compiles libsvnjavahl.
1482 JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1485 if test "$os_arch" = "Darwin"; then
1486 dnl On Darwin, JNI libs must be installed as .jnilib
1487 INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1488 FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1490 # This segment (and the rest of r10800) is very likely unnecessary
1491 # with libtool 1.5, which automatically adds libstdc++ as a
1492 # dependency to the C++ libraries it builds. So at some future time
1493 # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1495 AC_MSG_CHECKING([for additional flags to link C++ libraries])
1496 if test "x$ac_compiler_gnu" = "xyes"; then
1499 AC_MSG_RESULT([none needed])
1502 LT_CXX_LIBADD="-lstdc++"
1503 AC_MSG_RESULT([$LT_CXX_LIBADD])
1507 AC_MSG_RESULT([none needed])
1510 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1511 AC_SUBST(JAVAHL_OBJDIR)
1512 AC_SUBST(FIX_JAVAHL_LIB)
1513 AC_SUBST(LT_CXX_LIBADD)
1516 AS_HELP_STRING([--with-junit=PATH],
1517 [Specify a path to the junit JAR file.]),
1519 if test "$withval" != "no"; then
1520 if test -n "$JAVA_CLASSPATH"; then
1521 JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1523 JAVA_CLASSPATH="$withval"
1525 JAVAHL_TESTS_TARGET="javahl-tests"
1526 JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1529 AC_SUBST(JAVA_CLASSPATH)
1530 AC_SUBST(JAVAHL_TESTS_TARGET)
1531 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1533 # ==== Miscellaneous bits ====================================================
1535 AC_CHECK_HEADERS([stdbool.h stdint.h])
1537 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1538 ### I think we get this flag from APR, so the fix probably belongs there
1539 if test "$CC" = "clang"; then
1540 SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1543 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1544 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1545 [Defined to be the path separator used on your local filesystem])
1547 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1548 [Defined to be the null device for the system])
1550 DEFAULT_FS_TYPE="fsfs"
1551 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1552 [The fs type to use by default])
1554 DEFAULT_HTTP_LIBRARY="serf"
1555 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1556 [The http library to use by default])
1558 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1559 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1562 # Check whether they've installed GNU make
1563 if ! make --version > /dev/null 2>&1; then
1565 INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1569 AC_SUBST(INCLUDE_OUTPUTS)
1571 # ==== Detection complete - output and run config.status =====================
1573 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1574 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1575 [svn_cf=subversion/svn_private_config.h;
1576 $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1577 cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1578 rm -f $svn_cf.tmp.new $svn_cf.tmp],
1580 SVN_DB_HEADER="$SVN_DB_HEADER"])
1581 AC_CONFIG_FILES([Makefile])
1583 # Create pkg-config .pc files from .pc.in files
1584 for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1585 pc_file=${pc_in_file#${abs_srcdir}/}
1586 pc_file=${pc_file%.in}
1587 AC_CONFIG_FILES([${pc_file}])
1590 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1591 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1592 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1593 if test -e packages/solaris/pkginfo.in; then
1594 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1596 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1598 # Ensure that SWIG is checked after reconfiguration.
1601 dnl Provide ${host} for use in compiled code (for svn --version)
1602 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1603 [Defined to the config.guess name of the build system])
1605 dnl Provide ${target} for use in compiled code (for user-agent string)
1606 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1607 [Defined to the config.guess name of the build target])
1611 # ==== Print final messages to user ==========================================
1613 dnl Configure is long - users tend to miss warnings printed during it.
1614 dnl Hence, print a warnings about what we did and didn't configure at the
1615 dnl end, where people will actually see them.
1617 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1618 AC_MSG_WARN([We have configured without BDB filesystem support
1621 Berkeley DB 6 was found, but not used. Please re-run configure (see
1622 ./config.nice) with the '--enable-bdb6' flag to use it,
1623 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1624 to silence this warning.
1626 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1627 General Public License, version 3:
1628 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1630 The AGPL-3.0 licence may impose special requirements for making available
1631 source code of server-side software. The text of the licence is:
1632 https://www.gnu.org/licenses/agpl-3.0.html
1633 http://opensource.org/licenses/AGPL-3.0
1635 The Berkeley DB backend to Subversion is deprecated; see
1636 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1638 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1639 technical problems or bugs.