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`"
596 SVN_GNOME_KEYRING_PCLIBS="glib-2.0, gnome-keyring-1"
599 if test "$with_old_gnome_keyring" = "yes"; then
600 AC_MSG_ERROR([cannot find GNOME Keyring])
605 if test "$with_old_gnome_keyring" = "yes"; then
606 AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
608 with_old_gnome_keyring=no
612 if test "$with_old_gnome_keyring" = "yes"; then
613 AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
615 with_old_gnome_keyring=no
619 if test "$with_old_gnome_keyring" = "yes"; then
620 AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
622 with_old_gnome_keyring=no
626 if test "$with_old_gnome_keyring" = "yes"; then
627 AC_MSG_ERROR([--with-old-gnome-keyring conflicts with --disable-shared])
629 with_old_gnome_keyring=no
637 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
638 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
640 dnl LibSecret -------------------
643 dnl Ev2 experimental features ----------------------
644 dnl Note: The Ev2 implementations will be built unconditionally, but by
645 dnl providing this flag, users can choose to use the currently-shimmed Ev2
646 dnl editor implementations for various operations. This will probably
647 dnl negatively impact performance, but is useful for testing.
648 AC_ARG_ENABLE(ev2-impl,
649 AS_HELP_STRING([--enable-ev2-impl],
650 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
651 [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
652 if test "$enable_ev2_impl" = "yes"; then
653 AC_DEFINE(ENABLE_EV2_IMPL, 1,
654 [Define to 1 if Ev2 implementations should be used.])
658 dnl I18n -------------------
661 AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
662 [enable_nls=$enableval],[enable_nls=yes])
666 if test "$enable_nls" = "yes"; then
667 dnl First, check to see if there is a working msgfmt.
668 AC_PATH_PROG(MSGFMT, msgfmt, none)
669 AC_PATH_PROG(MSGMERGE, msgmerge, none)
670 AC_PATH_PROG(XGETTEXT, xgettext, none)
671 if test "$MSGFMT" != "none"; then
672 AC_SEARCH_LIBS(bindtextdomain, [intl],
674 # in case libintl needs to be linked explicitly,
675 # $ac_cv_search_bindtextdomain contains -l linker flags
676 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
678 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
684 if test "$enable_nls" = "no"; then
685 # Destroy the cached result so we can test again
686 unset ac_cv_search_bindtextdomain
687 # On some systems, libintl needs libiconv to link properly,
688 # so try again with -liconv.
689 AC_SEARCH_LIBS(bindtextdomain, [intl],
692 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
694 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
696 # This is here so that -liconv ends up in LIBS
697 # if it worked with -liconv.
698 AC_CHECK_LIB(iconv, libiconv_open)
701 AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.])
705 if test "$enable_nls" = "yes"; then
706 AC_DEFINE(ENABLE_NLS, 1,
707 [Define to 1 if translation of program messages to the user's
708 native language is requested.])
714 AC_SUBST(SVN_INTL_LIBS)
717 /* Indicate to translators that string X should be translated. Do not look
718 up the translation at run time; just expand to X. This macro is suitable
719 for use where a constant string is required at compile time. */
721 /* Indicate to translators that we have decided the string X should not be
722 translated. Expand to X. */
727 /* Indicate to translators that string X should be translated. At run time,
728 look up and return the translation of X. */
729 #define _(x) dgettext(PACKAGE_NAME, x)
730 /* Indicate to translators that strings X1 and X2 are singular and plural
731 forms of the same message, and should be translated. At run time, return
732 an appropriate translation depending on the number N. */
733 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
736 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
737 #define gettext(x) (x)
738 #define dgettext(domain, x) (x)
742 #if defined(__GNUC__) && (__GNUC__ >= 3)
743 # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
744 # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
746 # define SVN__PREDICT_FALSE(x) (x)
747 # define SVN__PREDICT_TRUE(x) (x)
750 #if defined(SVN_DEBUG)
751 # define SVN__FORCE_INLINE
752 # define SVN__PREVENT_INLINE
753 #elif defined(__GNUC__)
754 # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
755 # define SVN__PREVENT_INLINE __attribute__ ((noinline))
757 # define SVN__FORCE_INLINE APR_INLINE
758 # define SVN__PREVENT_INLINE
761 /* Macro used to specify that a variable is intentionally left unused.
762 Supresses compiler warnings about the variable being unused. */
763 #define SVN_UNUSED(v) ( (void)(v) )
766 dnl Used to simulate makefile conditionals.
768 NO_GETTEXT_CODESET=\#
769 if test $USE_NLS = "yes"; then
770 AC_CHECK_FUNCS(bind_textdomain_codeset,
771 [ GETTEXT_CODESET="" ],
772 [ NO_GETTEXT_CODESET="" ])
774 AC_SUBST(GETTEXT_CODESET)
775 AC_SUBST(NO_GETTEXT_CODESET)
777 # Check if we are using GNU gettext.
780 if test $USE_NLS = "yes"; then
781 AC_MSG_CHECKING(if we are using GNU gettext)
782 if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
786 AC_MSG_RESULT($GNU_GETTEXT)
788 AC_SUBST(MSGFMTFLAGS)
790 dnl libmagic -------------------
794 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
795 [libmagic filetype detection library]),
797 if test "$withval" = "yes" ; then
798 AC_CHECK_HEADER(magic.h, [
799 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
801 libmagic_prefix="the default locations"
802 elif test "$withval" != "no"; then
803 libmagic_prefix=$withval
804 save_cppflags="$CPPFLAGS"
805 CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
806 AC_CHECK_HEADERS(magic.h,[
807 save_ldflags="$LDFLAGS"
808 LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
809 AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
810 LDFLAGS="$save_ldflags"
812 CPPFLAGS="$save_cppflags"
814 if test "$withval" != "no" && test "$libmagic_found" = "no"; then
815 AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
819 AC_CHECK_HEADER(magic.h, [
820 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
824 if test "$libmagic_found" != "no"; then
825 AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
826 SVN_MAGIC_LIBS="-lmagic"
829 if test "$libmagic_found" = "yes"; then
830 SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
831 LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
834 AC_SUBST(SVN_MAGIC_INCLUDES)
835 AC_SUBST(SVN_MAGIC_LIBS)
837 dnl KWallet -------------------
840 if test "$svn_lib_kwallet" = "yes"; then
841 AC_DEFINE([SVN_HAVE_KWALLET], 1,
842 [Defined if KWallet support is enabled])
845 dnl plaintext passwords -------------------
846 AC_ARG_ENABLE(plaintext-password-storage,
847 AS_HELP_STRING([--enable-plaintext-password-storage],
848 [Enable on-disk caching of plaintext passwords and passphrases.
849 (Enabling this functionality will not force Subversion
850 to store passwords in plaintext, but does permit users to
851 explicitly allow that behavior via runtime configuration.)]),
852 [plaintext_passwordd_storage="$enableval"],
853 [plaintext_passwordd_storage="no"])
855 if test "$plaintext_passwordd_storage" = "yes"; then
856 AC_MSG_WARN([Enabling plaintext password/passphrase storage])
858 AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
859 AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
860 [Defined if plaintext password/passphrase storage is disabled])
863 dnl Build and install rules -------------------
865 INSTALL_STATIC_RULES="install-bin install-docs"
866 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
867 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
868 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
870 if test "$svn_lib_berkeley_db" = "yes"; then
871 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
872 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
873 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
874 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
875 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
878 if test "$svn_lib_serf" = "yes"; then
879 BUILD_RULES="$BUILD_RULES serf-lib"
880 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
881 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
884 if test "$svn_lib_kwallet" = "yes"; then
885 BUILD_RULES="$BUILD_RULES kwallet-lib"
886 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
887 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
890 if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then
891 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
892 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
893 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
896 if test "$USE_NLS" = "yes"; then
897 BUILD_RULES="$BUILD_RULES locale"
898 INSTALL_RULES="$INSTALL_RULES install-locale"
901 AC_SUBST(BUILD_RULES)
902 AC_SUBST(INSTALL_STATIC_RULES)
903 AC_SUBST(INSTALL_RULES)
904 AC_SUBST(BDB_TEST_DEPS)
905 AC_SUBST(BDB_TEST_PROGRAMS)
907 dnl Check for header files ----------------
909 dnl Standard C headers
912 dnl Check for typedefs, structures, and compiler characteristics ----------
914 dnl if compiler doesn't understand `const', then define it empty
917 dnl if non-existent, define size_t to be `unsigned'
921 dnl Check for library functions ----------
925 dnl svn_error's default warning handler uses vfprintf()
928 dnl check for functions needed in special file handling
929 AC_CHECK_FUNCS(symlink readlink)
931 dnl check for uname and ELF headers
932 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
933 AC_CHECK_HEADERS(elf.h)
935 dnl check for termios
936 AC_CHECK_HEADER(termios.h,[
937 AC_CHECK_FUNCS(tcgetattr tcsetattr,[
938 AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
942 dnl Process some configuration options ----------
945 AS_HELP_STRING([--enable-debug],
946 [Turn on debugging]),
948 if test "$enableval" = "yes" ; then
949 enable_debugging="yes"
951 enable_debugging="no"
955 # Neither --enable-debug nor --disable-debug was passed.
956 enable_debugging="maybe"
959 AC_ARG_ENABLE(optimize,
960 AS_HELP_STRING([--enable-optimize],
961 [Turn on optimizations]),
963 if test "$enableval" = "yes" ; then
964 enable_optimization="yes"
966 enable_optimization="no"
970 # Neither --enable-optimize nor --disable-optimize was passed.
971 enable_optimization="maybe"
974 dnl Use -Wl,--no-undefined during linking of some libraries
975 AC_ARG_ENABLE(disallowing-of-undefined-references,
976 [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
977 [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
978 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
979 enable_disallowing_of_undefined_references="no"
981 if test "$enable_disallowing_of_undefined_references" != "no"; then
982 AC_MSG_CHECKING([for -Wl,--no-undefined])
983 old_LDFLAGS="$LDFLAGS"
984 LDFLAGS="$LDFLAGS -Wl,--no-undefined"
985 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
986 LDFLAGS="$old_LDFLAGS"
987 if test "$svn_wl_no_undefined" = "yes"; then
989 for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
990 eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
992 shared_only_LDFLAGS="-Wl,--no-undefined"
995 if test "$enable_disallowing_of_undefined_references" = "yes"; then
996 AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
1000 AC_SUBST([libsvn_client_LDFLAGS])
1001 AC_SUBST([libsvn_delta_LDFLAGS])
1002 AC_SUBST([libsvn_diff_LDFLAGS])
1003 AC_SUBST([libsvn_fs_LDFLAGS])
1004 AC_SUBST([libsvn_fs_base_LDFLAGS])
1005 AC_SUBST([libsvn_fs_fs_LDFLAGS])
1006 AC_SUBST([libsvn_fs_util_LDFLAGS])
1007 AC_SUBST([libsvn_ra_LDFLAGS])
1008 AC_SUBST([libsvn_ra_local_LDFLAGS])
1009 AC_SUBST([libsvn_ra_serf_LDFLAGS])
1010 AC_SUBST([libsvn_ra_svn_LDFLAGS])
1011 AC_SUBST([libsvn_repos_LDFLAGS])
1012 AC_SUBST([libsvn_subr_LDFLAGS])
1013 AC_SUBST([libsvn_wc_LDFLAGS])
1014 AC_SUBST([shared_only_LDFLAGS])
1017 AC_ARG_ENABLE(maintainer-mode,
1018 AS_HELP_STRING([--enable-maintainer-mode],
1019 [Turn on debugging and very strict compile-time warnings]),
1021 if test "$enableval" = "yes" ; then
1022 if test "$enable_debugging" = "no" ; then
1023 AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1025 enable_debugging=yes
1027 dnl Enable some extra warnings. Put these before the user's flags
1028 dnl so the user can specify flags that override these.
1029 if test "$GCC" = "yes"; then
1030 AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1032 dnl some additional flags that can be handy for an occasional review,
1033 dnl but throw too many warnings in svn code, of too little importance,
1034 dnl to keep these enabled. Remove the "dnl" to do a run with these
1035 dnl switches enabled.
1036 dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1038 dnl Add each of the following flags only if the C compiler accepts it.
1039 CFLAGS_KEEP="$CFLAGS"
1042 SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1043 SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1044 SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1045 SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1046 SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1047 SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1048 SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1049 SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1050 SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
1051 SVN_CFLAGS_ADD_IFELSE([-Wno-unused-const-variable])
1053 CMAINTAINERFLAGS="$CFLAGS"
1054 CFLAGS="$CFLAGS_KEEP"
1056 dnl Add flags that all versions of GCC (should) support
1057 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"
1059 if test "$GXX" = "yes"; then
1060 AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1062 dnl Add each of the following flags only if the C++ compiler accepts it.
1063 CXXFLAGS_KEEP="$CXXFLAGS"
1066 SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1067 SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1068 SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1069 SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1071 CXXMAINTAINERFLAGS="$CXXFLAGS"
1072 CXXFLAGS="$CXXFLAGS_KEEP"
1074 dnl Add flags that all versions of G++ (should) support
1075 CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1080 if test "$enable_debugging" = "yes" ; then
1081 dnl At the moment, we don't want optimization, because we're
1082 dnl debugging. Unless optiization was explicitly enabled.
1083 if test "$enable_optimization" != "yes"; then
1084 AC_MSG_NOTICE([Disabling optimizations for debugging])
1085 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1086 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1088 dnl Add debugging flags, unless they were set by the user
1089 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1090 AC_MSG_NOTICE([Enabling debugging for C])
1091 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1092 SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1093 SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1094 SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1095 SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1096 SVN_CFLAGS_ADD_IFELSE([-g])])])
1098 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1099 AC_MSG_NOTICE([Enabling debugging for C++])
1100 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1101 SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1102 SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1103 SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1104 SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1105 SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1107 dnl SVN_DEBUG enables specific features for developer builds
1108 dnl AP_DEBUG enables specific (Apache) features for developer builds
1109 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1110 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1111 elif test "$enable_debugging" = "no" ; then
1112 AC_MSG_NOTICE([Disabling debugging])
1113 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1114 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1115 dnl Compile with NDEBUG to get rid of assertions
1116 CFLAGS="$CFLAGS -DNDEBUG"
1117 CXXFLAGS="$CXXFLAGS -DNDEBUG"
1118 # elif test "$enable_debugging" = "maybe" ; then
1122 if test "$enable_optimization" = "yes"; then
1123 dnl Add optimization flags, unless they were set by the user
1124 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1125 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1126 if test "$enable_debugging" = "yes"; then
1127 AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1128 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1129 SVN_CFLAGS_ADD_IFELSE([-O])])
1131 AC_MSG_NOTICE([Enabling optimizations for C])
1132 SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1133 SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1134 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1135 SVN_CFLAGS_ADD_IFELSE([-O])])])])
1136 SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1139 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1140 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1141 if test "$enable_debugging" = "yes"; then
1142 AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1143 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1144 SVN_CXXFLAGS_ADD_IFELSE([-O])])
1146 AC_MSG_NOTICE([Enabling optimizations for C++])
1147 SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1148 SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1149 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1150 SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1151 SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1154 elif test "$enable_optimization" = "no"; then
1155 dnl Remove all optimization flags
1156 AC_MSG_NOTICE([Disabling optimizations])
1157 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1158 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1159 # elif test "$enable_optimization" = "maybe" ; then
1163 dnl Dump the current compiler options
1164 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1165 AC_MSG_NOTICE([ language-level: $CMODEFLAGS])
1166 AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
1167 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1168 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1169 AC_MSG_NOTICE([ language-level: $CXXMODEFLAGS])
1170 AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
1171 AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
1173 AC_ARG_ENABLE(full-version-match,
1174 AS_HELP_STRING([--disable-full-version-match],
1175 [Disable the full version match rules when checking
1176 Subversion library compatibility.]),
1178 if test "$enableval" = "no" ; then
1179 AC_MSG_NOTICE([Disabling svn full version matching])
1180 AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1181 [Defined if the full version matching rules are disabled])
1186 AS_HELP_STRING([--with-editor=PATH],
1187 [Specify a default editor for the subversion client.]),
1190 if test "$withval" = "yes" ; then
1191 AC_MSG_ERROR([--with-editor requires an argument.])
1193 SVN_CLIENT_EDITOR=$withval
1194 AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1195 [The path of a default editor for the client.])
1208 AC_ARG_ENABLE(mod-activation,
1209 AS_HELP_STRING([--enable-mod-activation],
1210 [Enable mod_dav_svn in httpd.conf]),
1212 if test "$enableval" = "yes" ; then
1214 AC_MSG_NOTICE([Enabling apache module activation])
1216 AC_MSG_NOTICE([Disabling apache module activation])
1219 AC_SUBST(MOD_ACTIVATION)
1224 AC_HELP_STRING([--enable-gcov],
1225 [Turn on gcov coverage testing (GCC only).]),
1227 if test "$enableval" = "yes" ; then
1228 dnl Probably other compilers support something similar;
1229 dnl feel free to extend this to include them.
1230 if test "$GCC" = "yes"; then
1231 if test "$svn_enable_shared" = "yes" ; then
1232 AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1233 recommend also using --enable-all-static).])
1235 if test ! "$enable_all_static" = "yes" ; then
1236 AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1238 AC_MSG_NOTICE([Enabling gcov coverage testing.])
1239 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1240 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1242 AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1247 AC_ARG_ENABLE(gprof,
1248 AS_HELP_STRING([--enable-gprof],
1249 [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1251 if test "$enableval" = "yes" ; then
1252 dnl Probably other compilers support -pg or something similar;
1253 dnl feel free to extend this to include them.
1254 if test "$GCC" = "yes"; then
1255 if test "$svn_enable_shared" = "yes" ; then
1256 AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1257 recommend also using --enable-all-static).])
1259 if test ! "$enable_all_static" = "yes" ; then
1260 AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1262 AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1263 CFLAGS="$CFLAGS -pg"
1264 CXXFLAGS="$CXXFLAGS -pg"
1265 LT_LDFLAGS="$LT_LDFLAGS -pg"
1267 AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1273 # Scripting and Bindings languages
1275 # Python: Used for testsuite, and bindings
1278 PYTHON="`$abs_srcdir/build/find_python.sh`"
1279 if test -z "$PYTHON"; then
1280 AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1281 AC_MSG_WARN([or to use the Subversion Python bindings])
1283 AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1284 AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1285 AC_MSG_WARN([to the Python executable, and re-run configure])
1287 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1289 # The minimum version for the JVM runtime for our Java bytecode.
1290 JAVA_OLDEST_WORKING_VER='1.8'
1291 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1292 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1294 AC_PATH_PROG(PERL, perl, none)
1296 if test -n "$RUBY"; then
1297 AC_PATH_PROG(RUBY, "$RUBY", none)
1299 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)
1301 if test "$RUBY" != "none"; then
1302 AC_MSG_CHECKING([rb_hash_foreach])
1303 if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1304 AC_MSG_RESULT([yes])
1305 if test -n "$RDOC"; then
1306 AC_PATH_PROG(RDOC, "$RDOC", none)
1308 AC_PATH_PROGS(RDOC, 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)
1310 AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1311 svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1313 RUBY_MAJOR="$svn_cv_ruby_major"
1315 AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1316 svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1318 RUBY_MINOR="$svn_cv_ruby_minor"
1320 AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1321 svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1323 RUBY_TEENY="$svn_cv_ruby_teeny"
1325 AC_SUBST(RUBY_MAJOR)
1326 AC_SUBST(RUBY_MINOR)
1327 AC_SUBST(RUBY_TEENY)
1328 if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1329 # Disallow Ruby between 1.8.7 and 1.9.3
1331 AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1332 AC_MSG_WARN([Only 1.8.x and 1.9.3 or later are supported at this time])
1337 AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1338 AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1339 AC_MSG_WARN([Subversion Ruby bindings])
1340 AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1345 AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings])
1346 AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings])
1347 AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings])
1348 AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings])
1352 dnl decide whether we want to link against the RA/FS libraries
1353 AC_ARG_ENABLE(runtime-module-search,
1354 AS_HELP_STRING([--enable-runtime-module-search],
1355 [Turn on dynamic loading of RA/FS libraries including
1356 third-party FS libraries]),
1358 if test "$enableval" = "yes"; then
1360 if test "$svn_enable_shared" = "no"; then
1361 AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1363 AC_DEFINE(SVN_USE_DSO, 1,
1364 [Defined if svn should try to load DSOs])
1366 dnl Mac OS X uses libname.MAJOR.SOVERSION.dylib
1367 dnl Most other unixes use libname.MAJOR.so.SOVERSION
1370 AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.%d.dylib"],
1371 [Shared library file name suffix format])
1374 AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.so.%d"],
1375 [Shared library file name suffix format])
1381 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1382 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_LOCAL, 1,
1383 [Defined if libsvn_ra should link against libsvn_ra_local])
1384 svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1385 svn_ra_lib_install_deps="install-ramod-lib"
1386 svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1388 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SVN, 1,
1389 [Defined if libsvn_ra should link against libsvn_ra_svn])
1390 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1391 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1393 if test "$svn_lib_serf" = "yes"; then
1394 AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SERF, 1,
1395 [Defined if libsvn_ra should link against libsvn_ra_serf])
1396 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1397 svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1398 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1401 SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1402 SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1403 SVN_RA_LIB_LINK=$svn_ra_lib_link
1405 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1406 [Defined if libsvn_fs should link against libsvn_fs_fs])
1407 svn_fs_lib_deps="\$(FS_FS_DEPS)"
1408 svn_fs_lib_install_deps="install-fsmod-lib"
1409 svn_fs_lib_link="\$(FS_FS_LINK)"
1411 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1412 [Defined if libsvn_fs should link against libsvn_fs_x])
1413 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1414 svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1415 dnl FSFS already installs fsmod
1416 dnl svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1418 if test "$svn_lib_berkeley_db" = "yes"; then
1419 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1420 [Defined if libsvn_fs should link against libsvn_fs_base])
1421 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1422 svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1423 svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1426 SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1427 SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1428 SVN_FS_LIB_LINK=$svn_fs_lib_link
1431 AC_SUBST(SVN_RA_LIB_DEPS)
1432 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1433 AC_SUBST(SVN_RA_LIB_LINK)
1434 AC_SUBST(SVN_FS_LIB_DEPS)
1435 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1436 AC_SUBST(SVN_FS_LIB_LINK)
1438 # ==== SVN++ =================================================================
1440 dnl Possibly compile SVN++
1442 AC_ARG_ENABLE(svnxx,
1443 AS_HELP_STRING([--enable-svnxx],
1444 [Enable compilation of the C++ bindings (requires C++)]),
1445 [ if test "$enableval" = "yes" ; then
1446 AC_MSG_NOTICE([Enabling the C++ bindings])
1451 dnl Possibly compile SVN++ tests
1452 do_svnxx_test_build=no
1453 AC_ARG_ENABLE(svnxx-tests,
1454 AS_HELP_STRING([--enable-svnxx-tests],
1455 [Enable compilation of tests for the C++ bindings
1456 (implies --enable-svnxx, requires Boost and Boost.Test)]),
1457 [ if test "$enableval" = "yes" ; then
1458 AC_MSG_NOTICE([Enabling tests for the C++ bindings])
1459 do_svnxx_test_build=yes
1463 AX_BOOST_BASE([1.58],
1465 if test "$do_svnxx_test_build" = "yes"; then
1466 AX_BOOST_UNIT_TEST_FRAMEWORK
1470 if test "$do_svnxx_test_build" = "yes"; then
1471 AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test])
1472 do_svnxx_test_build=no
1476 if test "$do_svnxx_test_build" = "yes"; then
1477 if test "$want_boost" != "yes"; then
1478 AC_MSG_WARN([Tests for the C++ bindings require Boost and Boost.Test])
1479 do_svnxx_test_build=no
1480 SVN_BUILD_SVNXX_TESTS=false
1482 if test "$do_svnxx_build" != "yes"; then
1483 AC_MSG_WARN([Enabling the C++ bindings because their tests are enabled])
1486 SVN_BUILD_SVNXX_TESTS=true
1489 SVN_BUILD_SVNXX_TESTS=false
1492 if test "$do_svnxx_build" = "yes"; then
1493 SVN_BUILD_SVNXX=true
1495 SVN_BUILD_SVNXX=false
1498 AC_SUBST(SVN_BUILD_SVNXX)
1499 AC_SUBST(SVN_BUILD_SVNXX_TESTS)
1501 # ==== JavaHL ================================================================
1503 dnl Possibly compile JavaHL
1505 AC_ARG_ENABLE(javahl,
1506 AS_HELP_STRING([--enable-javahl],
1507 [Enable compilation of Java high-level bindings (requires C++)]),
1508 [ if test "$enableval" = "yes" ; then
1509 do_javahl_build="yes"
1514 INSTALL_EXTRA_JAVAHL_LIB=""
1516 JAVAHL_TESTS_TARGET=""
1517 JAVAHL_COMPAT_TESTS_TARGET=""
1519 if test "$do_javahl_build" = "yes"; then
1520 dnl Check for suitable JDK
1521 if test "$JDK_SUITABLE" = "no"; then
1522 AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK.
1523 Please specify a suitable JDK using the --with-jdk option.])
1526 dnl The temporary directory where libtool compiles libsvnjavahl.
1527 JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1530 if test "$os_arch" = "Darwin"; then
1531 dnl On Darwin, JNI libs must be installed as .jnilib
1532 INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1533 FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1535 # This segment (and the rest of r10800) is very likely unnecessary
1536 # with libtool 1.5, which automatically adds libstdc++ as a
1537 # dependency to the C++ libraries it builds. So at some future time
1538 # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1540 AC_MSG_CHECKING([for additional flags to link C++ libraries])
1541 if test "x$ac_compiler_gnu" = "xyes"; then
1544 AC_MSG_RESULT([none needed])
1547 LT_CXX_LIBADD="-lstdc++"
1548 AC_MSG_RESULT([$LT_CXX_LIBADD])
1552 AC_MSG_RESULT([none needed])
1555 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1556 AC_SUBST(JAVAHL_OBJDIR)
1557 AC_SUBST(FIX_JAVAHL_LIB)
1558 AC_SUBST(LT_CXX_LIBADD)
1561 AS_HELP_STRING([--with-junit=PATH],
1562 [Specify a path to the junit JAR file.]),
1564 if test "$withval" != "no"; then
1565 if test -n "$JAVA_CLASSPATH"; then
1566 JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1568 JAVA_CLASSPATH="$withval"
1570 JAVAHL_TESTS_TARGET="javahl-tests"
1571 JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1574 AC_SUBST(JAVA_CLASSPATH)
1575 AC_SUBST(JAVAHL_TESTS_TARGET)
1576 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1578 # ==== Miscellaneous bits ====================================================
1580 AC_CHECK_HEADERS([stdbool.h stdint.h])
1582 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1583 ### I think we get this flag from APR, so the fix probably belongs there
1584 if test "$CC" = "clang"; then
1585 SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1588 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1589 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1590 [Defined to be the path separator used on your local filesystem])
1592 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1593 [Defined to be the null device for the system])
1595 DEFAULT_FS_TYPE="fsfs"
1596 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1597 [The fs type to use by default])
1599 DEFAULT_HTTP_LIBRARY="serf"
1600 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1601 [The http library to use by default])
1603 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1604 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1607 # Check whether they've installed GNU make
1608 if ! make --version > /dev/null 2>&1; then
1610 INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1614 AC_SUBST(INCLUDE_OUTPUTS)
1616 # ==== Detection complete - output and run config.status =====================
1618 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1619 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1620 [svn_cf=subversion/svn_private_config.h;
1621 $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1622 cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1623 rm -f $svn_cf.tmp.new $svn_cf.tmp],
1625 SVN_DB_HEADER="$SVN_DB_HEADER"])
1626 AC_CONFIG_FILES([Makefile])
1628 # Create pkg-config .pc files from .pc.in files
1629 for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1630 pc_file=${pc_in_file#${abs_srcdir}/}
1631 pc_file=${pc_file%.in}
1632 AC_CONFIG_FILES([${pc_file}])
1635 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1636 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1637 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1638 if test -e packages/solaris/pkginfo.in; then
1639 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1641 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1643 # Ensure that SWIG is checked after reconfiguration.
1646 dnl Provide ${host} for use in compiled code (for svn --version)
1647 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1648 [Defined to the config.guess name of the build system])
1650 dnl Provide ${target} for use in compiled code (for user-agent string)
1651 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1652 [Defined to the config.guess name of the build target])
1656 # ==== Print final messages to user ==========================================
1658 dnl Configure is long - users tend to miss warnings printed during it.
1659 dnl Hence, print a warnings about what we did and didn't configure at the
1660 dnl end, where people will actually see them.
1662 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1663 AC_MSG_WARN([We have configured without BDB filesystem support
1666 Berkeley DB 6 was found, but not used. Please re-run configure (see
1667 ./config.nice) with the '--enable-bdb6' flag to use it,
1668 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1669 to silence this warning.
1671 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1672 General Public License, version 3:
1673 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1675 The AGPL-3.0 licence may impose special requirements for making available
1676 source code of server-side software. The text of the licence is:
1677 https://www.gnu.org/licenses/agpl-3.0.html
1678 http://opensource.org/licenses/AGPL-3.0
1680 The Berkeley DB backend to Subversion is deprecated; see
1681 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1683 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1684 technical problems or bugs.