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])
140 dnl Find Apache with a recent-enough magic module number
141 SVN_FIND_APACHE(20051115)
143 dnl Search for SQLite. If you change SQLITE_URL from a .zip to
144 dnl something else also update build/ac-macros/sqlite.m4 to reflect
145 dnl the correct command to unpack the downloaded file.
146 SQLITE_MINIMUM_VER="3.7.12"
147 SQLITE_RECOMMENDED_VER="3.7.15.1"
148 SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
150 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
153 AC_ARG_ENABLE(sqlite-compatibility-version,
154 AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
155 [Allow binary to run against SQLite as old as ARG]),
156 [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
158 if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
159 SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
160 [sqlite_compat_ver_num])
161 CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
162 CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
165 SVN_CHECK_FOR_ATOMIC_BUILTINS
166 if test "$svn_cv_atomic_builtins" = "yes"; then
167 AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
170 dnl Set up a number of directories ---------------------
172 dnl Create SVN_BINDIR for proper substitution
173 if test "${bindir}" = '${exec_prefix}/bin'; then
174 if test "${exec_prefix}" = "NONE"; then
175 if test "${prefix}" = "NONE"; then
176 SVN_BINDIR="${ac_default_prefix}/bin"
178 SVN_BINDIR="${prefix}/bin"
181 SVN_BINDIR="${exec_prefix}/bin"
184 SVN_BINDIR="${bindir}"
187 dnl fully evaluate this value. when we substitute it into our tool scripts,
188 dnl they will not have things such as ${bindir} available
189 SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
192 dnl provide ${bindir} in svn_private_config.h for use in compiled code
193 AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
194 [Defined to be the path to the installed binaries])
196 dnl This purposely does *not* allow for multiple parallel installs.
197 dnl However, it is compatible with most gettext usages.
198 localedir='${datadir}/locale'
201 dnl For SVN_LOCALE_DIR, we have to expand it to something. See SVN_BINDIR.
202 if test "${prefix}" = "NONE" \
203 && ( test "${datadir}" = '${prefix}/share' \
204 || ( test "${datadir}" = '${datarootdir}' \
205 && test "${datarootdir}" = '${prefix}/share' ) ); then
206 exp_localedir='${ac_default_prefix}/share/locale'
208 exp_localedir=$localedir
210 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
211 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
212 [Defined to be the path to the installed locale dirs])
214 dnl Check for libtool -- we'll definitely need it for all our shared libs!
215 AC_MSG_NOTICE([configuring libtool now])
216 ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
217 AC_ARG_ENABLE(experimental-libtool,
218 AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
219 [experimental_libtool=$enableval],[experimental_libtool=no])
221 if test "$experimental_libtool" = "yes"; then
222 echo "using APR's libtool"
223 sh_libtool="`$apr_config --apr-libtool`"
224 LIBTOOL="$sh_libtool"
225 SVN_LIBTOOL="$sh_libtool"
227 sh_libtool="$abs_builddir/libtool"
228 SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
230 AC_SUBST(SVN_LIBTOOL)
232 dnl Determine the libtool version
234 lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
235 lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
236 lt_major_version=`echo $lt_version | cut -d'.' -f 1`
239 dnl set the default parameters
240 svn_enable_static=yes
241 svn_enable_shared=yes
243 dnl check for --enable-static option
244 AC_ARG_ENABLE(static,
245 AS_HELP_STRING([--enable-static],
246 [Build static libraries]),
247 [svn_enable_static="$enableval"], [svn_enable_static="yes"])
249 dnl check for --enable-shared option
250 AC_ARG_ENABLE(shared,
251 AS_HELP_STRING([--enable-shared],
252 [Build shared libraries]),
253 [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
255 if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
256 AC_MSG_NOTICE([building both shared and static libraries])
257 elif test "$svn_enable_static" = "yes" ; then
258 AC_MSG_NOTICE([building static libraries only])
259 LT_CFLAGS="-static $LT_CFLAGS"
260 LT_LDFLAGS="-static $LT_LDFLAGS"
261 elif test "$svn_enable_shared" = "yes" ; then
262 AC_MSG_NOTICE([building shared libraries only])
263 if test "$lt_major_version" = "1" ; then
264 LT_CFLAGS="-prefer-pic $LT_CFLAGS"
265 elif test "$lt_major_version" = "2" ; then
266 LT_CFLAGS="-shared $LT_CFLAGS"
268 LT_LDFLAGS="-shared $LT_LDFLAGS"
270 AC_MSG_ERROR([cannot disable both shared and static libraries])
273 dnl Check for --enable-all-static option
274 AC_ARG_ENABLE(all-static,
275 AS_HELP_STRING([--enable-all-static],
276 [Build completely static (standalone) binaries.]),
278 if test "$enableval" = "yes" ; then
279 LT_LDFLAGS="-all-static $LT_LDFLAGS"
280 elif test "$enableval" != "no" ; then
281 AC_MSG_ERROR([--enable-all-static doesn't accept argument])
288 AC_ARG_ENABLE(local-library-preloading,
289 AS_HELP_STRING([--enable-local-library-preloading],
290 [Enable preloading of locally built libraries in locally
291 built executables. This may be necessary for testing
292 prior to installation on some platforms. It does not
293 work on some platforms (Darwin, OpenBSD, ...).]),
295 if test "$enableval" != "no"; then
296 if test "$svn_enable_shared" = "yes"; then
297 TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
299 AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
302 TRANSFORM_LIBTOOL_SCRIPTS=""
305 TRANSFORM_LIBTOOL_SCRIPTS=""
307 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
309 dnl Check if -no-undefined is needed for the platform.
310 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
311 dnl So we only turn it on for platforms where we know we really need it.
312 AC_MSG_CHECKING([whether libtool needs -no-undefined])
316 LT_NO_UNDEFINED="-no-undefined"
323 AC_SUBST(LT_NO_UNDEFINED)
328 AS_HELP_STRING([--with-trang=PATH],
329 [Specify the command to run the trang schema converter]),
333 if test "$trang" = "yes"; then
334 AC_PATH_PROG(TRANG, trang, none)
340 dnl Check for doxygen
343 AC_HELP_STRING([--with-doxygen=PATH],
344 [Specify the command to run doxygen]),
348 if test "$doxygen" = "yes"; then
349 AC_PATH_PROG(DOXYGEN, doxygen, none)
356 dnl Check for libraries --------------------
358 dnl Expat -------------------
361 AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS],
362 [Specify location of Expat]),
363 [svn_lib_expat="$withval"],
364 [svn_lib_expat="::expat"])
366 # APR-util accepts "builtin" as an argument to this option so if the user
367 # passed "builtin" pretend the user didn't specify the --with-expat option
368 # at all. Expat will (hopefully) be found in apr-util.
369 test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
371 AC_MSG_CHECKING([for Expat])
372 if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
374 for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
375 SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
377 SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
378 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
379 LDFLAGS="$LDFLAGS -L$l"
381 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
382 SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
384 SVN_XML_LIBS="${SVN_XML_LIBS## }"
385 old_CPPFLAGS="$CPPFLAGS"
387 CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
388 LIBS="$LIBS $SVN_XML_LIBS"
389 AC_LINK_IFELSE([AC_LANG_SOURCE([[
392 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
394 if test "$svn_lib_expat" = "yes"; then
399 CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
400 if test "$enable_all_static" != "yes"; then
401 SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
403 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
406 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
407 if test "$svn_lib_expat" = "yes"; then
409 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.])
412 AC_MSG_ERROR([Expat not found])
415 CPPFLAGS="$old_CPPFLAGS"
418 if test "$svn_lib_expat" = "yes"; then
419 AC_MSG_ERROR([--with-expat option requires argument])
420 elif test "$svn_lib_expat" = "no"; then
421 AC_MSG_ERROR([Expat is required])
423 AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
426 AC_SUBST(SVN_XML_INCLUDES)
427 AC_SUBST(SVN_XML_LIBS)
429 dnl Berkeley DB -------------------
431 # Berkeley DB on SCO OpenServer needs -lsocket
432 AC_CHECK_LIB(socket, socket)
434 # Build the BDB filesystem library only if we have an appropriate
435 # version of Berkeley DB.
437 powerpc-apple-darwin*)
438 # Berkeley DB 4.0 does not work on OS X.
439 SVN_FS_WANT_DB_MAJOR=4
440 SVN_FS_WANT_DB_MINOR=1
441 SVN_FS_WANT_DB_PATCH=25
444 SVN_FS_WANT_DB_MAJOR=4
445 SVN_FS_WANT_DB_MINOR=0
446 SVN_FS_WANT_DB_PATCH=14
450 # Look for libdb4.so first:
451 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
452 $SVN_FS_WANT_DB_PATCH, [db4 db])
454 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
455 [The desired major version for the Berkeley DB])
456 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
457 [The desired minor version for the Berkeley DB])
458 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
459 [The desired patch version for the Berkeley DB])
461 AC_SUBST(SVN_DB_INCLUDES)
462 AC_SUBST(SVN_DB_LIBS)
466 if test "$svn_lib_sasl" = "yes"; then
467 AC_DEFINE(SVN_HAVE_SASL, 1,
468 [Defined if Cyrus SASL v2 is present on the system])
471 dnl Mac OS specific features -------------------
473 SVN_LIB_MACHO_ITERATE
475 SVN_LIB_MACOS_KEYCHAIN
477 dnl APR_HAS_DSO -------------------
479 AC_MSG_CHECKING([whether APR has support for DSOs])
480 old_CPPFLAGS="$CPPFLAGS"
481 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
482 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
488 AC_MSG_RESULT([yes]),
491 CPPFLAGS="$old_CPPFLAGS"
494 dnl D-Bus (required for support for KWallet) -------------------
496 if test -n "$PKG_CONFIG"; then
497 AC_MSG_CHECKING([for D-Bus .pc file])
498 if $PKG_CONFIG --exists dbus-1; then
500 old_CPPFLAGS="$CPPFLAGS"
502 DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
503 AC_MSG_CHECKING([D-Bus version])
504 DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
505 AC_MSG_RESULT([$DBUS_VERSION])
506 # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
507 if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
508 DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
510 DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
511 CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
512 LIBS="$LIBS $DBUS_LIBS"
513 AC_MSG_CHECKING([for D-Bus])
514 AC_LINK_IFELSE([AC_LANG_SOURCE([[
515 #include <dbus/dbus.h>
517 {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
518 if test "$HAVE_DBUS" = "yes"; then
523 CPPFLAGS="$old_CPPFLAGS"
530 dnl GPG Agent -------------------
532 AC_ARG_WITH(gpg_agent,
533 AS_HELP_STRING([--without-gpg-agent],
534 [Disable support for GPG-Agent]),
535 [], [with_gpg_agent=yes])
536 AC_MSG_CHECKING([whether to support GPG-Agent])
537 if test "$with_gpg_agent" = "yes"; then
539 AC_DEFINE([SVN_HAVE_GPG_AGENT], [1],
540 [Is GPG Agent support enabled?])
545 AC_SUBST(SVN_HAVE_GPG_AGENT)
547 dnl GNOME Keyring -------------------
549 AC_ARG_WITH(gnome_keyring,
550 AS_HELP_STRING([--with-gnome-keyring],
551 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
552 [with_gnome_keyring="$withval"],
553 [with_gnome_keyring=auto])
555 found_gnome_keyring=no
556 AC_MSG_CHECKING([whether to look for GNOME Keyring])
557 if test "$with_gnome_keyring" != "no"; then
561 if test "$with_gnome_keyring" = "yes"; then
562 AC_MSG_ERROR([--with-gnome-keyring is not supported on Mac OS X.])
564 with_gnome_keyring=no
568 if test "$svn_enable_shared" = "yes"; then
569 if test "$APR_HAS_DSO" = "yes"; then
570 if test -n "$PKG_CONFIG"; then
571 AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
572 if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
574 old_CPPFLAGS="$CPPFLAGS"
575 SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
576 CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
577 AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
578 AC_MSG_CHECKING([for GNOME Keyring])
579 if test "$found_gnome_keyring" = "yes"; then
581 AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1],
582 [Is GNOME Keyring support enabled?])
583 CPPFLAGS="$old_CPPFLAGS"
584 SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
587 if test "$with_gnome_keyring" = "yes"; then
588 AC_MSG_ERROR([cannot find GNOME Keyring])
593 if test "$with_gnome_keyring" = "yes"; then
594 AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
596 with_gnome_keyring=no
600 if test "$with_gnome_keyring" = "yes"; then
601 AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
603 with_gnome_keyring=no
607 if test "$with_gnome_keyring" = "yes"; then
608 AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
610 with_gnome_keyring=no
614 if test "$with_gnome_keyring" = "yes"; then
615 AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
617 with_gnome_keyring=no
625 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
626 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
628 dnl Googlemock -----------------
629 AC_ARG_ENABLE([gmock],
630 AS_HELP_STRING([--disable-gmock],
631 [Do not use the Googlemock testing framework]),
635 AC_SUBST([GMOCK_SRCDIR], [$abs_srcdir/gmock-fused])
636 AC_MSG_CHECKING([whether use Googlemock])
637 if test "$enable_gmock" != "no"; then
638 if test -d "$GMOCK_SRCDIR"; then
647 SVN_USE_GMOCK_SOURCES=false
649 AC_SUBST([SVN_USE_GMOCK])
651 dnl Ev2 experimental features ----------------------
652 dnl Note: The Ev2 implementations will be built unconditionally, but by
653 dnl providing this flag, users can choose to use the currently-shimmed Ev2
654 dnl editor implementations for various operations. This will probably
655 dnl negatively impact performance, but is useful for testing.
656 AC_ARG_ENABLE(ev2-impl,
657 AS_HELP_STRING([--enable-ev2-impl],
658 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
659 [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
660 if test "$enable_ev2_impl" = "yes"; then
661 AC_DEFINE(ENABLE_EV2_IMPL, 1,
662 [Define to 1 if Ev2 implementations should be used.])
666 dnl I18n -------------------
669 AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
670 [enable_nls=$enableval],[enable_nls=yes])
674 if test "$enable_nls" = "yes"; then
675 dnl First, check to see if there is a working msgfmt.
676 AC_PATH_PROG(MSGFMT, msgfmt, none)
677 AC_PATH_PROG(MSGMERGE, msgmerge, none)
678 AC_PATH_PROG(XGETTEXT, xgettext, none)
679 if test "$MSGFMT" != "none"; then
680 AC_SEARCH_LIBS(bindtextdomain, [intl],
682 # in case libintl needs to be linked explicitly,
683 # $ac_cv_search_bindtextdomain contains -l linker flags
684 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
686 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
692 if test "$enable_nls" = "no"; then
693 # Destroy the cached result so we can test again
694 unset ac_cv_search_bindtextdomain
695 # On some systems, libintl needs libiconv to link properly,
696 # so try again with -liconv.
697 AC_SEARCH_LIBS(bindtextdomain, [intl],
700 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
702 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
704 # This is here so that -liconv ends up in LIBS
705 # if it worked with -liconv.
706 AC_CHECK_LIB(iconv, libiconv_open)
709 AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.])
713 if test "$enable_nls" = "yes"; then
714 AC_DEFINE(ENABLE_NLS, 1,
715 [Define to 1 if translation of program messages to the user's
716 native language is requested.])
722 AC_SUBST(SVN_INTL_LIBS)
725 /* Indicate to translators that string X should be translated. Do not look
726 up the translation at run time; just expand to X. This macro is suitable
727 for use where a constant string is required at compile time. */
729 /* Indicate to translators that we have decided the string X should not be
730 translated. Expand to X. */
735 /* Indicate to translators that string X should be translated. At run time,
736 look up and return the translation of X. */
737 #define _(x) dgettext(PACKAGE_NAME, x)
738 /* Indicate to translators that strings X1 and X2 are singular and plural
739 forms of the same message, and should be translated. At run time, return
740 an appropriate translation depending on the number N. */
741 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
744 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
745 #define gettext(x) (x)
746 #define dgettext(domain, x) (x)
750 #if defined(__GNUC__) && (__GNUC__ >= 3)
751 # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
752 # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
754 # define SVN__PREDICT_FALSE(x) (x)
755 # define SVN__PREDICT_TRUE(x) (x)
758 #if defined(SVN_DEBUG)
759 # define SVN__FORCE_INLINE
760 # define SVN__PREVENT_INLINE
761 #elif defined(__GNUC__)
762 # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
763 # define SVN__PREVENT_INLINE __attribute__ ((noinline))
765 # define SVN__FORCE_INLINE APR_INLINE
766 # define SVN__PREVENT_INLINE
769 /* Macro used to specify that a variable is intentionally left unused.
770 Supresses compiler warnings about the variable being unused. */
771 #define SVN_UNUSED(v) ( (void)(v) )
774 dnl Used to simulate makefile conditionals.
776 NO_GETTEXT_CODESET=\#
777 if test $USE_NLS = "yes"; then
778 AC_CHECK_FUNCS(bind_textdomain_codeset,
779 [ GETTEXT_CODESET="" ],
780 [ NO_GETTEXT_CODESET="" ])
782 AC_SUBST(GETTEXT_CODESET)
783 AC_SUBST(NO_GETTEXT_CODESET)
785 # Check if we are using GNU gettext.
788 if test $USE_NLS = "yes"; then
789 AC_MSG_CHECKING(if we are using GNU gettext)
790 if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
794 AC_MSG_RESULT($GNU_GETTEXT)
796 AC_SUBST(MSGFMTFLAGS)
798 dnl libmagic -------------------
802 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
803 [libmagic filetype detection library]),
805 if test "$withval" = "yes" ; then
806 AC_CHECK_HEADER(magic.h, [
807 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
809 libmagic_prefix="the default locations"
810 elif test "$withval" != "no"; then
811 libmagic_prefix=$withval
812 save_cppflags="$CPPFLAGS"
813 CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
814 AC_CHECK_HEADERS(magic.h,[
815 save_ldflags="$LDFLAGS"
816 LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
817 AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
818 LDFLAGS="$save_ldflags"
820 CPPFLAGS="$save_cppflags"
822 if test "$withval" != "no" && test "$libmagic_found" = "no"; then
823 AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
827 AC_CHECK_HEADER(magic.h, [
828 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
832 if test "$libmagic_found" != "no"; then
833 AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
834 SVN_MAGIC_LIBS="-lmagic"
837 if test "$libmagic_found" = "yes"; then
838 SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
839 LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
842 AC_SUBST(SVN_MAGIC_INCLUDES)
843 AC_SUBST(SVN_MAGIC_LIBS)
845 dnl KWallet -------------------
848 if test "$svn_lib_kwallet" = "yes"; then
849 AC_DEFINE([SVN_HAVE_KWALLET], 1,
850 [Defined if KWallet support is enabled])
853 dnl plaintext passwords -------------------
854 AC_ARG_ENABLE(plaintext-password-storage,
855 AS_HELP_STRING([--disable-plaintext-password-storage],
856 [Disable on-disk caching of plaintext passwords and passphrases.
857 (Leaving this functionality enabled will not force Subversion
858 to store passwords in plaintext, but does permit users to
859 explicitly allow that behavior via runtime configuration.)]),
861 if test "$enableval" = "no"; then
862 AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
863 AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
864 [Defined if plaintext password/passphrase storage is disabled])
868 dnl Build and install rules -------------------
870 INSTALL_STATIC_RULES="install-bin install-docs"
871 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
872 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
873 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
875 if test "$svn_lib_berkeley_db" = "yes"; then
876 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
877 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
878 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
879 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
880 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
883 if test "$svn_lib_serf" = "yes"; then
884 BUILD_RULES="$BUILD_RULES serf-lib"
885 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
886 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
889 if test "$svn_lib_kwallet" = "yes"; then
890 BUILD_RULES="$BUILD_RULES kwallet-lib"
891 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
892 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
895 if test "$found_gnome_keyring" = "yes"; then
896 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
897 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
898 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
901 if test "$USE_NLS" = "yes"; then
902 BUILD_RULES="$BUILD_RULES locale"
903 INSTALL_RULES="$INSTALL_RULES install-locale"
906 AC_SUBST(BUILD_RULES)
907 AC_SUBST(INSTALL_STATIC_RULES)
908 AC_SUBST(INSTALL_RULES)
909 AC_SUBST(BDB_TEST_DEPS)
910 AC_SUBST(BDB_TEST_PROGRAMS)
912 dnl Check for header files ----------------
914 dnl Standard C headers
917 dnl Check for typedefs, structures, and compiler characteristics ----------
919 dnl if compiler doesn't understand `const', then define it empty
922 dnl if non-existent, define size_t to be `unsigned'
926 dnl Check for library functions ----------
930 dnl svn_error's default warning handler uses vfprintf()
933 dnl check for functions needed in special file handling
934 AC_CHECK_FUNCS(symlink readlink)
937 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
939 dnl check for termios
940 AC_CHECK_HEADER(termios.h,[
941 AC_CHECK_FUNCS(tcgetattr tcsetattr,[
942 AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
946 dnl Process some configuration options ----------
949 AS_HELP_STRING([--enable-debug],
950 [Turn on debugging]),
952 if test "$enableval" = "yes" ; then
953 enable_debugging="yes"
955 enable_debugging="no"
959 # Neither --enable-debug nor --disable-debug was passed.
960 enable_debugging="maybe"
963 AC_ARG_ENABLE(optimize,
964 AS_HELP_STRING([--enable-optimize],
965 [Turn on optimizations]),
967 if test "$enableval" = "yes" ; then
968 enable_optimization="yes"
970 enable_optimization="no"
974 # Neither --enable-optimize nor --disable-optimize was passed.
975 enable_optimization="maybe"
978 dnl Use -Wl,--no-undefined during linking of some libraries
979 AC_ARG_ENABLE(disallowing-of-undefined-references,
980 [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
981 [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
982 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
983 enable_disallowing_of_undefined_references="no"
985 if test "$enable_disallowing_of_undefined_references" != "no"; then
986 AC_MSG_CHECKING([for -Wl,--no-undefined])
987 old_LDFLAGS="$LDFLAGS"
988 LDFLAGS="$LDFLAGS -Wl,--no-undefined"
989 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
990 LDFLAGS="$old_LDFLAGS"
991 if test "$svn_wl_no_undefined" = "yes"; then
993 for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
994 eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
998 if test "$enable_disallowing_of_undefined_references" = "yes"; then
999 AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
1003 AC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
1004 AC_SUBST([libsvn_auth_kwallet_LDFLAGS])
1005 AC_SUBST([libsvn_client_LDFLAGS])
1006 AC_SUBST([libsvn_delta_LDFLAGS])
1007 AC_SUBST([libsvn_diff_LDFLAGS])
1008 AC_SUBST([libsvn_fs_LDFLAGS])
1009 AC_SUBST([libsvn_fs_base_LDFLAGS])
1010 AC_SUBST([libsvn_fs_fs_LDFLAGS])
1011 AC_SUBST([libsvn_fs_util_LDFLAGS])
1012 AC_SUBST([libsvn_ra_LDFLAGS])
1013 AC_SUBST([libsvn_ra_local_LDFLAGS])
1014 AC_SUBST([libsvn_ra_serf_LDFLAGS])
1015 AC_SUBST([libsvn_ra_svn_LDFLAGS])
1016 AC_SUBST([libsvn_repos_LDFLAGS])
1017 AC_SUBST([libsvn_subr_LDFLAGS])
1018 AC_SUBST([libsvn_wc_LDFLAGS])
1021 AC_ARG_ENABLE(maintainer-mode,
1022 AS_HELP_STRING([--enable-maintainer-mode],
1023 [Turn on debugging and very strict compile-time warnings]),
1025 if test "$enableval" = "yes" ; then
1026 if test "$enable_debugging" = "no" ; then
1027 AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1029 enable_debugging=yes
1031 dnl Enable some extra warnings. Put these before the user's flags
1032 dnl so the user can specify flags that override these.
1033 if test "$GCC" = "yes"; then
1034 AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1036 dnl some additional flags that can be handy for an occasional review,
1037 dnl but throw too many warnings in svn code, of too little importance,
1038 dnl to keep these enabled. Remove the "dnl" to do a run with these
1039 dnl switches enabled.
1040 dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1042 dnl Add each of the following flags only if the C compiler accepts it.
1043 CFLAGS_KEEP="$CFLAGS"
1046 SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1047 SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1048 SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1049 SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1050 SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1051 SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1052 SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1053 SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1054 SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
1056 CMAINTAINERFLAGS="$CFLAGS"
1057 CFLAGS="$CFLAGS_KEEP"
1059 dnl Add flags that all versions of GCC (should) support
1060 CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wbad-function-cast $CMAINTAINERFLAGS"
1062 if test "$GXX" = "yes"; then
1063 AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1065 dnl Add each of the following flags only if the C++ compiler accepts it.
1066 CXXFLAGS_KEEP="$CXXFLAGS"
1069 SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1070 SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1071 SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1072 SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1074 CXXMAINTAINERFLAGS="$CXXFLAGS"
1075 CXXFLAGS="$CXXFLAGS_KEEP"
1077 dnl Add flags that all versions of G++ (should) support
1078 CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1083 if test "$enable_debugging" = "yes" ; then
1084 dnl At the moment, we don't want optimization, because we're
1085 dnl debugging. Unless optiization was explicitly enabled.
1086 if test "$enable_optimization" != "yes"; then
1087 AC_MSG_NOTICE([Disabling optimizations for debugging])
1088 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1089 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1091 dnl Add debugging flags, unless they were set by the user
1092 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1093 AC_MSG_NOTICE([Enabling debugging for C])
1094 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1095 SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1096 SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1097 SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1098 SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1099 SVN_CFLAGS_ADD_IFELSE([-g])])])
1101 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1102 AC_MSG_NOTICE([Enabling debugging for C++])
1103 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1104 SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1105 SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1106 SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1107 SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1108 SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1110 dnl SVN_DEBUG enables specific features for developer builds
1111 dnl AP_DEBUG enables specific (Apache) features for developer builds
1112 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1113 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1114 elif test "$enable_debugging" = "no" ; then
1115 AC_MSG_NOTICE([Disabling debugging])
1116 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1117 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1118 dnl Compile with NDEBUG to get rid of assertions
1119 CFLAGS="$CFLAGS -DNDEBUG"
1120 CXXFLAGS="$CXXFLAGS -DNDEBUG"
1121 # elif test "$enable_debugging" = "maybe" ; then
1125 if test "$enable_optimization" = "yes"; then
1126 dnl Add optimization flags, unless they were set by the user
1127 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1128 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1129 if test "$enable_debugging" = "yes"; then
1130 AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1131 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1132 SVN_CFLAGS_ADD_IFELSE([-O])])
1134 AC_MSG_NOTICE([Enabling optimizations for C])
1135 SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1136 SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1137 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1138 SVN_CFLAGS_ADD_IFELSE([-O])])])])
1139 SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1140 SVN_CFLAGS_ADD_IFELSE([-flto])
1143 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1144 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1145 if test "$enable_debugging" = "yes"; then
1146 AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1147 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1148 SVN_CXXFLAGS_ADD_IFELSE([-O])])
1150 AC_MSG_NOTICE([Enabling optimizations for C++])
1151 SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1152 SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1153 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1154 SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1155 SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1156 SVN_CXXFLAGS_ADD_IFELSE([-flto])
1159 elif test "$enable_optimization" = "no"; then
1160 dnl Remove all optimization flags
1161 AC_MSG_NOTICE([Disabling optimizations])
1162 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1163 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1164 # elif test "$enable_optimization" = "maybe" ; then
1168 dnl Dump the current compiler options
1169 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1170 AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
1171 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1172 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1173 AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
1174 AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
1176 AC_ARG_ENABLE(full-version-match,
1177 AS_HELP_STRING([--disable-full-version-match],
1178 [Disable the full version match rules when checking
1179 Subversion library compatibility.]),
1181 if test "$enableval" = "no" ; then
1182 AC_MSG_NOTICE([Disabling svn full version matching])
1183 AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1184 [Defined if the full version matching rules are disabled])
1189 AS_HELP_STRING([--with-editor=PATH],
1190 [Specify a default editor for the subversion client.]),
1193 if test "$withval" = "yes" ; then
1194 AC_MSG_ERROR([--with-editor requires an argument.])
1196 SVN_CLIENT_EDITOR=$withval
1197 AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1198 [The path of a default editor for the client.])
1207 AC_ARG_ENABLE(mod-activation,
1208 AS_HELP_STRING([--enable-mod-activation],
1209 [Enable mod_dav_svn in httpd.conf]),
1211 if test "$enableval" = "yes" ; then
1213 AC_MSG_NOTICE([Enabling apache module activation])
1215 AC_MSG_NOTICE([Disabling apache module activation])
1218 AC_SUBST(MOD_ACTIVATION)
1223 AC_HELP_STRING([--enable-gcov],
1224 [Turn on gcov coverage testing (GCC only).]),
1226 if test "$enableval" = "yes" ; then
1227 dnl Probably other compilers support something similar;
1228 dnl feel free to extend this to include them.
1229 if test "$GCC" = "yes"; then
1230 if test "$svn_enable_shared" = "yes" ; then
1231 AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1232 recommend also using --enable-all-static).])
1234 if test ! "$enable_all_static" = "yes" ; then
1235 AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1237 AC_MSG_NOTICE([Enabling gcov coverage testing.])
1238 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1239 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1241 AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1246 AC_ARG_ENABLE(gprof,
1247 AS_HELP_STRING([--enable-gprof],
1248 [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1250 if test "$enableval" = "yes" ; then
1251 dnl Probably other compilers support -pg or something similar;
1252 dnl feel free to extend this to include them.
1253 if test "$GCC" = "yes"; then
1254 if test "$svn_enable_shared" = "yes" ; then
1255 AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1256 recommend also using --enable-all-static).])
1258 if test ! "$enable_all_static" = "yes" ; then
1259 AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1261 AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1262 CFLAGS="$CFLAGS -pg"
1263 CXXFLAGS="$CXXFLAGS -pg"
1264 LT_LDFLAGS="$LT_LDFLAGS -pg"
1266 AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1272 # Scripting and Bindings languages
1274 # Python: Used for testsuite, and bindings
1277 PYTHON="`$abs_srcdir/build/find_python.sh`"
1278 if test -z "$PYTHON"; then
1279 AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1280 AC_MSG_WARN([or to use the Subversion Python bindings])
1282 AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1283 AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1284 AC_MSG_WARN([to the Python executable, and re-run configure])
1286 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1288 # The minimum version for the JVM runtime for our Java bytecode.
1289 JAVA_OLDEST_WORKING_VER='1.6'
1290 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1291 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1293 AC_PATH_PROG(PERL, perl, none)
1295 if test -n "$RUBY"; then
1296 AC_PATH_PROG(RUBY, "$RUBY", none)
1298 AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193 ruby2.0 ruby2.1, none)
1300 if test "$RUBY" != "none"; then
1301 AC_MSG_CHECKING([rb_hash_foreach])
1302 if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1303 AC_MSG_RESULT([yes])
1304 if test -n "$RDOC"; then
1305 AC_PATH_PROG(RDOC, "$RDOC", none)
1307 AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2.0 rdoc2.1, none)
1309 AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1310 svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1312 RUBY_MAJOR="$svn_cv_ruby_major"
1314 AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1315 svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1317 RUBY_MINOR="$svn_cv_ruby_minor"
1319 AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1320 svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1322 RUBY_TEENY="$svn_cv_ruby_teeny"
1324 AC_SUBST(RUBY_MAJOR)
1325 AC_SUBST(RUBY_MINOR)
1326 AC_SUBST(RUBY_TEENY)
1327 if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1328 # Disallow Ruby between 1.8.7 and 1.9.3
1330 AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1331 AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
1336 AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1337 AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1338 AC_MSG_WARN([Subversion Ruby bindings])
1339 AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1347 dnl decide whether we want to link against the RA/FS libraries
1348 AC_ARG_ENABLE(runtime-module-search,
1349 AS_HELP_STRING([--enable-runtime-module-search],
1350 [Turn on dynamic loading of RA/FS libraries including
1351 third-party FS libraries]),
1353 if test "$enableval" = "yes"; then
1355 if test "$svn_enable_shared" = "no"; then
1356 AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1358 AC_DEFINE(SVN_USE_DSO, 1,
1359 [Defined if svn should try to load DSOs])
1363 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1364 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
1365 [Defined if libsvn_client should link against libsvn_ra_local])
1366 svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1367 svn_ra_lib_install_deps="install-ramod-lib"
1368 svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1370 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
1371 [Defined if libsvn_client should link against libsvn_ra_svn])
1372 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1373 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1375 if test "$svn_lib_serf" = "yes"; then
1376 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
1377 [Defined if libsvn_client should link against libsvn_ra_serf])
1378 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1379 svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1380 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1383 SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1384 SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1385 SVN_RA_LIB_LINK=$svn_ra_lib_link
1387 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1388 [Defined if libsvn_fs should link against libsvn_fs_fs])
1389 svn_fs_lib_deps="\$(FS_FS_DEPS)"
1390 svn_fs_lib_install_deps="install-fsmod-lib"
1391 svn_fs_lib_link="\$(FS_FS_LINK)"
1393 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1394 [Defined if libsvn_fs should link against libsvn_fs_x])
1395 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1396 svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1397 dnl FSFS already installs fsmod
1398 dnl svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1400 if test "$svn_lib_berkeley_db" = "yes"; then
1401 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1402 [Defined if libsvn_fs should link against libsvn_fs_base])
1403 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1404 svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1405 svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1408 SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1409 SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1410 SVN_FS_LIB_LINK=$svn_fs_lib_link
1413 AC_SUBST(SVN_RA_LIB_DEPS)
1414 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1415 AC_SUBST(SVN_RA_LIB_LINK)
1416 AC_SUBST(SVN_FS_LIB_DEPS)
1417 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1418 AC_SUBST(SVN_FS_LIB_LINK)
1420 # ==== JavaHL ================================================================
1422 dnl Possibly compile JavaHL
1424 AC_ARG_ENABLE(javahl,
1425 AS_HELP_STRING([--enable-javahl],
1426 [Enable compilation of Java high-level bindings (requires C++)]),
1427 [ if test "$enableval" = "yes" ; then
1428 do_javahl_build="yes"
1433 INSTALL_EXTRA_JAVAHL_LIB=""
1435 JAVAHL_TESTS_TARGET=""
1436 JAVAHL_COMPAT_TESTS_TARGET=""
1438 if test "$do_javahl_build" = "yes"; then
1439 dnl Check for suitable JDK
1440 if test "$JDK_SUITABLE" = "no"; then
1441 AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK.
1442 Please specify a suitable JDK using the --with-jdk option.])
1445 dnl The temporary directory where libtool compiles libsvnjavahl.
1446 JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1449 if test "$os_arch" = "Darwin"; then
1450 dnl On Darwin, JNI libs must be installed as .jnilib
1451 INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1452 FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1454 # This segment (and the rest of r10800) is very likely unnecessary
1455 # with libtool 1.5, which automatically adds libstdc++ as a
1456 # dependency to the C++ libraries it builds. So at some future time
1457 # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1459 AC_MSG_CHECKING([for additional flags to link C++ libraries])
1460 if test "x$ac_compiler_gnu" = "xyes"; then
1463 AC_MSG_RESULT([none needed])
1466 LT_CXX_LIBADD="-lstdc++"
1467 AC_MSG_RESULT([$LT_CXX_LIBADD])
1471 AC_MSG_RESULT([none needed])
1474 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1475 AC_SUBST(JAVAHL_OBJDIR)
1476 AC_SUBST(FIX_JAVAHL_LIB)
1477 AC_SUBST(LT_CXX_LIBADD)
1480 AS_HELP_STRING([--with-junit=PATH],
1481 [Specify a path to the junit JAR file.]),
1483 if test "$withval" != "no"; then
1484 if test -n "$JAVA_CLASSPATH"; then
1485 JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1487 JAVA_CLASSPATH="$withval"
1489 JAVAHL_TESTS_TARGET="javahl-tests"
1490 JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1493 AC_SUBST(JAVA_CLASSPATH)
1494 AC_SUBST(JAVAHL_TESTS_TARGET)
1495 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1497 # ==== Miscellaneous bits ====================================================
1499 AC_CHECK_HEADERS([stdbool.h inttypes.h])
1501 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1502 ### I think we get this flag from APR, so the fix probably belongs there
1503 if test "$CC" = "clang"; then
1504 SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1507 # Need to strip '-no-cpp-precomp' from CPPFLAGS for SWIG as well.
1508 SWIG_CPPFLAGS="$CPPFLAGS"
1509 SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-no-cpp-precomp ])
1510 SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-Wdate-time ])
1511 AC_SUBST([SWIG_CPPFLAGS])
1513 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1514 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1515 [Defined to be the path separator used on your local filesystem])
1517 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1518 [Defined to be the null device for the system])
1520 DEFAULT_FS_TYPE="fsfs"
1521 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1522 [The fs type to use by default])
1524 DEFAULT_HTTP_LIBRARY="serf"
1525 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1526 [The http library to use by default])
1528 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1529 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1532 # Check whether they've installed GNU make
1533 if ! make --version > /dev/null 2>&1; then
1535 INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1539 AC_SUBST(INCLUDE_OUTPUTS)
1541 # ==== Detection complete - output and run config.status =====================
1543 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1544 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1545 [svn_cf=subversion/svn_private_config.h;
1546 $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1547 cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1548 rm -f $svn_cf.tmp.new $svn_cf.tmp],
1550 SVN_DB_HEADER="$SVN_DB_HEADER"])
1551 AC_CONFIG_FILES([Makefile])
1553 # Create pkg-config .pc files from .pc.in files
1554 for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1555 pc_file=${pc_in_file#${abs_srcdir}/}
1556 pc_file=${pc_file%.in}
1557 AC_CONFIG_FILES([${pc_file}])
1560 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1561 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1562 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1563 if test -e packages/solaris/pkginfo.in; then
1564 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1566 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1568 # Ensure that SWIG is checked after reconfiguration.
1571 dnl Provide ${host} for use in compiled code (for svn --version)
1572 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1573 [Defined to the config.guess name of the build system])
1575 dnl Provide ${target} for use in compiled code (for user-agent string)
1576 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1577 [Defined to the config.guess name of the build target])
1581 # ==== Print final messages to user ==========================================
1583 dnl Configure is long - users tend to miss warnings printed during it.
1584 dnl Hence, print a warnings about what we did and didn't configure at the
1585 dnl end, where people will actually see them.
1587 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1588 AC_MSG_WARN([We have configured without BDB filesystem support
1591 Berkeley DB 6 was found, but not used. Please re-run configure (see
1592 ./config.nice) with the '--enable-bdb6' flag to use it,
1593 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1594 to silence this warning.
1596 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1597 General Public License, version 3:
1598 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1600 The AGPL-3.0 licence may impose special requirements for making available
1601 source code of server-side software. The text of the licence is:
1602 https://www.gnu.org/licenses/agpl-3.0.html
1603 http://opensource.org/licenses/AGPL-3.0
1605 The Berkeley DB backend to Subversion is deprecated; see
1606 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1608 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1609 technical problems or bugs.