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 "${datadir}" = '${prefix}/share' && test "${prefix}" = "NONE"; then
203 exp_localedir='${ac_default_prefix}/share/locale'
205 exp_localedir=$localedir
207 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
208 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
209 [Defined to be the path to the installed locale dirs])
211 dnl Check for libtool -- we'll definitely need it for all our shared libs!
212 AC_MSG_NOTICE([configuring libtool now])
213 ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
214 AC_ARG_ENABLE(experimental-libtool,
215 AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
216 [experimental_libtool=$enableval],[experimental_libtool=no])
218 if test "$experimental_libtool" = "yes"; then
219 echo "using APR's libtool"
220 sh_libtool="`$apr_config --apr-libtool`"
221 LIBTOOL="$sh_libtool"
222 SVN_LIBTOOL="$sh_libtool"
224 sh_libtool="$abs_builddir/libtool"
225 SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
227 AC_SUBST(SVN_LIBTOOL)
229 dnl Determine the libtool version
231 lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
232 lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
233 lt_major_version=`echo $lt_version | cut -d'.' -f 1`
236 dnl set the default parameters
237 svn_enable_static=yes
238 svn_enable_shared=yes
240 dnl check for --enable-static option
241 AC_ARG_ENABLE(static,
242 AS_HELP_STRING([--enable-static],
243 [Build static libraries]),
244 [svn_enable_static="$enableval"], [svn_enable_static="yes"])
246 dnl check for --enable-shared option
247 AC_ARG_ENABLE(shared,
248 AS_HELP_STRING([--enable-shared],
249 [Build shared libraries]),
250 [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
252 if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
253 AC_MSG_NOTICE([building both shared and static libraries])
254 elif test "$svn_enable_static" = "yes" ; then
255 AC_MSG_NOTICE([building static libraries only])
256 LT_CFLAGS="-static $LT_CFLAGS"
257 LT_LDFLAGS="-static $LT_LDFLAGS"
258 elif test "$svn_enable_shared" = "yes" ; then
259 AC_MSG_NOTICE([building shared libraries only])
260 if test "$lt_major_version" = "1" ; then
261 LT_CFLAGS="-prefer-pic $LT_CFLAGS"
262 elif test "$lt_major_version" = "2" ; then
263 LT_CFLAGS="-shared $LT_CFLAGS"
265 LT_LDFLAGS="-shared $LT_LDFLAGS"
267 AC_MSG_ERROR([cannot disable both shared and static libraries])
270 dnl Check for --enable-all-static option
271 AC_ARG_ENABLE(all-static,
272 AS_HELP_STRING([--enable-all-static],
273 [Build completely static (standalone) binaries.]),
275 if test "$enableval" = "yes" ; then
276 LT_LDFLAGS="-all-static $LT_LDFLAGS"
277 elif test "$enableval" != "no" ; then
278 AC_MSG_ERROR([--enable-all-static doesn't accept argument])
285 AC_ARG_ENABLE(local-library-preloading,
286 AS_HELP_STRING([--enable-local-library-preloading],
287 [Enable preloading of locally built libraries in locally
288 built executables. This may be necessary for testing
289 prior to installation on some platforms. It does not
290 work on some platforms (Darwin, OpenBSD, ...).]),
292 if test "$enableval" != "no"; then
293 if test "$svn_enable_shared" = "yes"; then
294 TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
296 AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
299 TRANSFORM_LIBTOOL_SCRIPTS=""
302 TRANSFORM_LIBTOOL_SCRIPTS=""
304 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
306 dnl Check if -no-undefined is needed for the platform.
307 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
308 dnl So we only turn it on for platforms where we know we really need it.
309 AC_MSG_CHECKING([whether libtool needs -no-undefined])
313 LT_NO_UNDEFINED="-no-undefined"
320 AC_SUBST(LT_NO_UNDEFINED)
325 AS_HELP_STRING([--with-trang=PATH],
326 [Specify the command to run the trang schema converter]),
330 if test "$trang" = "yes"; then
331 AC_PATH_PROG(TRANG, trang, none)
337 dnl Check for doxygen
340 AC_HELP_STRING([--with-doxygen=PATH],
341 [Specify the command to run doxygen]),
345 if test "$doxygen" = "yes"; then
346 AC_PATH_PROG(DOXYGEN, doxygen, none)
353 dnl Check for libraries --------------------
355 dnl Expat -------------------
358 AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS],
359 [Specify location of Expat]),
360 [svn_lib_expat="$withval"],
361 [svn_lib_expat="::expat"])
363 # APR-util accepts "builtin" as an argument to this option so if the user
364 # passed "builtin" pretend the user didn't specify the --with-expat option
365 # at all. Expat will (hopefully) be found in apr-util.
366 test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
368 AC_MSG_CHECKING([for Expat])
369 if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
371 for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
372 SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
374 SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
375 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
376 LDFLAGS="$LDFLAGS -L$l"
378 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
379 SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
381 SVN_XML_LIBS="${SVN_XML_LIBS## }"
382 old_CPPFLAGS="$CPPFLAGS"
384 CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
385 LIBS="$LIBS $SVN_XML_LIBS"
386 AC_LINK_IFELSE([AC_LANG_SOURCE([[
389 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
391 if test "$svn_lib_expat" = "yes"; then
396 CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
397 if test "$enable_all_static" != "yes"; then
398 SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
403 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
404 if test "$svn_lib_expat" = "yes"; then
406 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.])
409 AC_MSG_ERROR([Expat not found])
412 CPPFLAGS="$old_CPPFLAGS"
415 if test "$svn_lib_expat" = "yes"; then
416 AC_MSG_ERROR([--with-expat option requires argument])
417 elif test "$svn_lib_expat" = "no"; then
418 AC_MSG_ERROR([Expat is required])
420 AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
423 AC_SUBST(SVN_XML_INCLUDES)
424 AC_SUBST(SVN_XML_LIBS)
426 dnl Berkeley DB -------------------
428 # Berkeley DB on SCO OpenServer needs -lsocket
429 AC_CHECK_LIB(socket, socket)
431 # Build the BDB filesystem library only if we have an appropriate
432 # version of Berkeley DB.
434 powerpc-apple-darwin*)
435 # Berkeley DB 4.0 does not work on OS X.
436 SVN_FS_WANT_DB_MAJOR=4
437 SVN_FS_WANT_DB_MINOR=1
438 SVN_FS_WANT_DB_PATCH=25
441 SVN_FS_WANT_DB_MAJOR=4
442 SVN_FS_WANT_DB_MINOR=0
443 SVN_FS_WANT_DB_PATCH=14
447 # Look for libdb4.so first:
448 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
449 $SVN_FS_WANT_DB_PATCH, [db4 db])
451 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
452 [The desired major version for the Berkeley DB])
453 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
454 [The desired minor version for the Berkeley DB])
455 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
456 [The desired patch version for the Berkeley DB])
458 AC_SUBST(SVN_DB_INCLUDES)
459 AC_SUBST(SVN_DB_LIBS)
463 if test "$svn_lib_sasl" = "yes"; then
464 AC_DEFINE(SVN_HAVE_SASL, 1,
465 [Defined if Cyrus SASL v2 is present on the system])
468 dnl Mac OS specific features -------------------
470 SVN_LIB_MACHO_ITERATE
472 SVN_LIB_MACOS_KEYCHAIN
474 dnl APR_HAS_DSO -------------------
476 AC_MSG_CHECKING([whether APR has support for DSOs])
477 old_CPPFLAGS="$CPPFLAGS"
478 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
479 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
485 AC_MSG_RESULT([yes]),
488 CPPFLAGS="$old_CPPFLAGS"
491 dnl D-Bus (required for support for KWallet) -------------------
493 if test -n "$PKG_CONFIG"; then
494 AC_MSG_CHECKING([for D-Bus .pc file])
495 if $PKG_CONFIG --exists dbus-1; then
497 old_CPPFLAGS="$CPPFLAGS"
499 DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
500 AC_MSG_CHECKING([D-Bus version])
501 DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
502 AC_MSG_RESULT([$DBUS_VERSION])
503 # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
504 if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
505 DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
507 DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
508 CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
509 LIBS="$LIBS $DBUS_LIBS"
510 AC_MSG_CHECKING([for D-Bus])
511 AC_LINK_IFELSE([AC_LANG_SOURCE([[
512 #include <dbus/dbus.h>
514 {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
515 if test "$HAVE_DBUS" = "yes"; then
520 CPPFLAGS="$old_CPPFLAGS"
527 dnl GPG Agent -------------------
529 AC_ARG_WITH(gpg_agent,
530 AS_HELP_STRING([--without-gpg-agent],
531 [Disable support for GPG-Agent]),
532 [], [with_gpg_agent=yes])
533 AC_MSG_CHECKING([whether to support GPG-Agent])
534 if test "$with_gpg_agent" = "yes"; then
536 AC_DEFINE([SVN_HAVE_GPG_AGENT], [1],
537 [Is GPG Agent support enabled?])
542 AC_SUBST(SVN_HAVE_GPG_AGENT)
544 dnl GNOME Keyring -------------------
546 AC_ARG_WITH(gnome_keyring,
547 AS_HELP_STRING([--with-gnome-keyring],
548 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
549 [with_gnome_keyring="$withval"],
550 [with_gnome_keyring=auto])
552 found_gnome_keyring=no
553 AC_MSG_CHECKING([whether to look for GNOME Keyring])
554 if test "$with_gnome_keyring" != "no"; then
558 if test "$with_gnome_keyring" = "yes"; then
559 AC_MSG_ERROR([--with-gnome-keyring is not supported on Mac OS X.])
561 with_gnome_keyring=no
565 if test "$svn_enable_shared" = "yes"; then
566 if test "$APR_HAS_DSO" = "yes"; then
567 if test -n "$PKG_CONFIG"; then
568 AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
569 if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
571 old_CPPFLAGS="$CPPFLAGS"
572 SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
573 CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
574 AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
575 AC_MSG_CHECKING([for GNOME Keyring])
576 if test "$found_gnome_keyring" = "yes"; then
578 AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1],
579 [Is GNOME Keyring support enabled?])
580 CPPFLAGS="$old_CPPFLAGS"
581 SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
584 if test "$with_gnome_keyring" = "yes"; then
585 AC_MSG_ERROR([cannot find GNOME Keyring])
590 if test "$with_gnome_keyring" = "yes"; then
591 AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
593 with_gnome_keyring=no
597 if test "$with_gnome_keyring" = "yes"; then
598 AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
600 with_gnome_keyring=no
604 if test "$with_gnome_keyring" = "yes"; then
605 AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
607 with_gnome_keyring=no
611 if test "$with_gnome_keyring" = "yes"; then
612 AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
614 with_gnome_keyring=no
622 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
623 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
625 dnl Googlemock -----------------
626 AC_ARG_ENABLE([gmock],
627 AS_HELP_STRING([--disable-gmock],
628 [Do not use the Googlemock testing framework]),
632 AC_SUBST([GMOCK_SRCDIR], [$abs_srcdir/gmock-fused])
633 AC_MSG_CHECKING([whether use Googlemock])
634 if test "$enable_gmock" != "no"; then
635 if test -d "$GMOCK_SRCDIR"; then
644 SVN_USE_GMOCK_SOURCES=false
646 AC_SUBST([SVN_USE_GMOCK])
648 dnl Ev2 experimental features ----------------------
649 dnl Note: The Ev2 implementations will be built unconditionally, but by
650 dnl providing this flag, users can choose to use the currently-shimmed Ev2
651 dnl editor implementations for various operations. This will probably
652 dnl negatively impact performance, but is useful for testing.
653 AC_ARG_ENABLE(ev2-impl,
654 AS_HELP_STRING([--enable-ev2-impl],
655 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
656 [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
657 if test "$enable_ev2_impl" = "yes"; then
658 AC_DEFINE(ENABLE_EV2_IMPL, 1,
659 [Define to 1 if Ev2 implementations should be used.])
663 dnl I18n -------------------
666 AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
667 [enable_nls=$enableval],[enable_nls=yes])
671 if test "$enable_nls" = "yes"; then
672 dnl First, check to see if there is a working msgfmt.
673 AC_PATH_PROG(MSGFMT, msgfmt, none)
674 AC_PATH_PROG(MSGMERGE, msgmerge, none)
675 AC_PATH_PROG(XGETTEXT, xgettext, none)
676 if test "$MSGFMT" != "none"; then
677 AC_SEARCH_LIBS(bindtextdomain, [intl],
679 # in case libintl needs to be linked explicitly,
680 # $ac_cv_search_bindtextdomain contains -l linker flags
681 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
683 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
689 if test "$enable_nls" = "no"; then
690 # Destroy the cached result so we can test again
691 unset ac_cv_search_bindtextdomain
692 # On some systems, libintl needs libiconv to link properly,
693 # so try again with -liconv.
694 AC_SEARCH_LIBS(bindtextdomain, [intl],
697 if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
699 SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
701 # This is here so that -liconv ends up in LIBS
702 # if it worked with -liconv.
703 AC_CHECK_LIB(iconv, libiconv_open)
706 AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.])
710 if test "$enable_nls" = "yes"; then
711 AC_DEFINE(ENABLE_NLS, 1,
712 [Define to 1 if translation of program messages to the user's
713 native language is requested.])
719 AC_SUBST(SVN_INTL_LIBS)
722 /* Indicate to translators that string X should be translated. Do not look
723 up the translation at run time; just expand to X. This macro is suitable
724 for use where a constant string is required at compile time. */
726 /* Indicate to translators that we have decided the string X should not be
727 translated. Expand to X. */
732 /* Indicate to translators that string X should be translated. At run time,
733 look up and return the translation of X. */
734 #define _(x) dgettext(PACKAGE_NAME, x)
735 /* Indicate to translators that strings X1 and X2 are singular and plural
736 forms of the same message, and should be translated. At run time, return
737 an appropriate translation depending on the number N. */
738 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
741 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
742 #define gettext(x) (x)
743 #define dgettext(domain, x) (x)
747 #if defined(__GNUC__) && (__GNUC__ >= 3)
748 # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
749 # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
751 # define SVN__PREDICT_FALSE(x) (x)
752 # define SVN__PREDICT_TRUE(x) (x)
755 #if defined(SVN_DEBUG)
756 # define SVN__FORCE_INLINE
757 # define SVN__PREVENT_INLINE
758 #elif defined(__GNUC__)
759 # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
760 # define SVN__PREVENT_INLINE __attribute__ ((noinline))
762 # define SVN__FORCE_INLINE APR_INLINE
763 # define SVN__PREVENT_INLINE
766 /* Macro used to specify that a variable is intentionally left unused.
767 Supresses compiler warnings about the variable being unused. */
768 #define SVN_UNUSED(v) ( (void)(v) )
771 dnl Used to simulate makefile conditionals.
773 NO_GETTEXT_CODESET=\#
774 if test $USE_NLS = "yes"; then
775 AC_CHECK_FUNCS(bind_textdomain_codeset,
776 [ GETTEXT_CODESET="" ],
777 [ NO_GETTEXT_CODESET="" ])
779 AC_SUBST(GETTEXT_CODESET)
780 AC_SUBST(NO_GETTEXT_CODESET)
782 # Check if we are using GNU gettext.
785 if test $USE_NLS = "yes"; then
786 AC_MSG_CHECKING(if we are using GNU gettext)
787 if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
791 AC_MSG_RESULT($GNU_GETTEXT)
793 AC_SUBST(MSGFMTFLAGS)
795 dnl libmagic -------------------
799 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
800 [libmagic filetype detection library]),
802 if test "$withval" = "yes" ; then
803 AC_CHECK_HEADER(magic.h, [
804 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
806 libmagic_prefix="the default locations"
807 elif test "$withval" != "no"; then
808 libmagic_prefix=$withval
809 save_cppflags="$CPPFLAGS"
810 CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
811 AC_CHECK_HEADERS(magic.h,[
812 save_ldflags="$LDFLAGS"
813 LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
814 AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
815 LDFLAGS="$save_ldflags"
817 CPPFLAGS="$save_cppflags"
819 if test "$withval" != "no" && test "$libmagic_found" = "no"; then
820 AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
824 AC_CHECK_HEADER(magic.h, [
825 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
829 if test "$libmagic_found" != "no"; then
830 AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
831 SVN_MAGIC_LIBS="-lmagic"
834 if test "$libmagic_found" = "yes"; then
835 SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
836 LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
839 AC_SUBST(SVN_MAGIC_INCLUDES)
840 AC_SUBST(SVN_MAGIC_LIBS)
842 dnl KWallet -------------------
845 if test "$svn_lib_kwallet" = "yes"; then
846 AC_DEFINE([SVN_HAVE_KWALLET], 1,
847 [Defined if KWallet support is enabled])
850 dnl plaintext passwords -------------------
851 AC_ARG_ENABLE(plaintext-password-storage,
852 AS_HELP_STRING([--disable-plaintext-password-storage],
853 [Disable on-disk caching of plaintext passwords and passphrases.
854 (Leaving this functionality enabled will not force Subversion
855 to store passwords in plaintext, but does permit users to
856 explicitly allow that behavior via runtime configuration.)]),
858 if test "$enableval" = "no"; then
859 AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
860 AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
861 [Defined if plaintext password/passphrase storage is disabled])
865 dnl Build and install rules -------------------
867 INSTALL_STATIC_RULES="install-bin install-docs"
868 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
869 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
870 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
872 if test "$svn_lib_berkeley_db" = "yes"; then
873 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
874 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
875 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
876 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
877 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
880 if test "$svn_lib_serf" = "yes"; then
881 BUILD_RULES="$BUILD_RULES serf-lib"
882 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
883 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
886 if test "$svn_lib_kwallet" = "yes"; then
887 BUILD_RULES="$BUILD_RULES kwallet-lib"
888 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
889 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
892 if test "$found_gnome_keyring" = "yes"; then
893 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
894 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
895 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
898 if test "$USE_NLS" = "yes"; then
899 BUILD_RULES="$BUILD_RULES locale"
900 INSTALL_RULES="$INSTALL_RULES install-locale"
903 AC_SUBST(BUILD_RULES)
904 AC_SUBST(INSTALL_STATIC_RULES)
905 AC_SUBST(INSTALL_RULES)
906 AC_SUBST(BDB_TEST_DEPS)
907 AC_SUBST(BDB_TEST_PROGRAMS)
909 dnl Check for header files ----------------
911 dnl Standard C headers
914 dnl Check for typedefs, structures, and compiler characteristics ----------
916 dnl if compiler doesn't understand `const', then define it empty
919 dnl if non-existent, define size_t to be `unsigned'
923 dnl Check for library functions ----------
927 dnl svn_error's default warning handler uses vfprintf()
930 dnl check for functions needed in special file handling
931 AC_CHECK_FUNCS(symlink readlink)
934 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
936 dnl check for termios
937 AC_CHECK_HEADER(termios.h,[
938 AC_CHECK_FUNCS(tcgetattr tcsetattr,[
939 AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
943 dnl Process some configuration options ----------
946 AS_HELP_STRING([--enable-debug],
947 [Turn on debugging]),
949 if test "$enableval" = "yes" ; then
950 enable_debugging="yes"
952 enable_debugging="no"
956 # Neither --enable-debug nor --disable-debug was passed.
957 enable_debugging="maybe"
960 AC_ARG_ENABLE(optimize,
961 AS_HELP_STRING([--enable-optimize],
962 [Turn on optimizations]),
964 if test "$enableval" = "yes" ; then
965 enable_optimization="yes"
967 enable_optimization="no"
971 # Neither --enable-optimize nor --disable-optimize was passed.
972 enable_optimization="maybe"
975 dnl Use -Wl,--no-undefined during linking of some libraries
976 AC_ARG_ENABLE(disallowing-of-undefined-references,
977 [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
978 [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
979 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
980 enable_disallowing_of_undefined_references="no"
982 if test "$enable_disallowing_of_undefined_references" != "no"; then
983 AC_MSG_CHECKING([for -Wl,--no-undefined])
984 old_LDFLAGS="$LDFLAGS"
985 LDFLAGS="$LDFLAGS -Wl,--no-undefined"
986 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
987 LDFLAGS="$old_LDFLAGS"
988 if test "$svn_wl_no_undefined" = "yes"; then
990 for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
991 eval "`basename $library_dir`_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_auth_gnome_keyring_LDFLAGS])
1001 AC_SUBST([libsvn_auth_kwallet_LDFLAGS])
1002 AC_SUBST([libsvn_client_LDFLAGS])
1003 AC_SUBST([libsvn_delta_LDFLAGS])
1004 AC_SUBST([libsvn_diff_LDFLAGS])
1005 AC_SUBST([libsvn_fs_LDFLAGS])
1006 AC_SUBST([libsvn_fs_base_LDFLAGS])
1007 AC_SUBST([libsvn_fs_fs_LDFLAGS])
1008 AC_SUBST([libsvn_fs_util_LDFLAGS])
1009 AC_SUBST([libsvn_ra_LDFLAGS])
1010 AC_SUBST([libsvn_ra_local_LDFLAGS])
1011 AC_SUBST([libsvn_ra_serf_LDFLAGS])
1012 AC_SUBST([libsvn_ra_svn_LDFLAGS])
1013 AC_SUBST([libsvn_repos_LDFLAGS])
1014 AC_SUBST([libsvn_subr_LDFLAGS])
1015 AC_SUBST([libsvn_wc_LDFLAGS])
1018 AC_ARG_ENABLE(maintainer-mode,
1019 AS_HELP_STRING([--enable-maintainer-mode],
1020 [Turn on debugging and very strict compile-time warnings]),
1022 if test "$enableval" = "yes" ; then
1023 if test "$enable_debugging" = "no" ; then
1024 AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1026 enable_debugging=yes
1028 dnl Enable some extra warnings. Put these before the user's flags
1029 dnl so the user can specify flags that override these.
1030 if test "$GCC" = "yes"; then
1031 AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1033 dnl some additional flags that can be handy for an occasional review,
1034 dnl but throw too many warnings in svn code, of too little importance,
1035 dnl to keep these enabled. Remove the "dnl" to do a run with these
1036 dnl switches enabled.
1037 dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1039 dnl Add each of the following flags only if the C compiler accepts it.
1040 CFLAGS_KEEP="$CFLAGS"
1043 SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1044 SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1045 SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1046 SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1047 SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1048 SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1049 SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1050 SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1051 SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
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 -Waggregate-return -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])
1137 SVN_CFLAGS_ADD_IFELSE([-flto])
1140 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1141 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1142 if test "$enable_debugging" = "yes"; then
1143 AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1144 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1145 SVN_CXXFLAGS_ADD_IFELSE([-O])])
1147 AC_MSG_NOTICE([Enabling optimizations for C++])
1148 SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1149 SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1150 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1151 SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1152 SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1153 SVN_CXXFLAGS_ADD_IFELSE([-flto])
1156 elif test "$enable_optimization" = "no"; then
1157 dnl Remove all optimization flags
1158 AC_MSG_NOTICE([Disabling optimizations])
1159 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1160 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1161 # elif test "$enable_optimization" = "maybe" ; then
1165 dnl Dump the current compiler options
1166 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1167 AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
1168 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1169 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
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.])
1204 AC_ARG_ENABLE(mod-activation,
1205 AS_HELP_STRING([--enable-mod-activation],
1206 [Enable mod_dav_svn in httpd.conf]),
1208 if test "$enableval" = "yes" ; then
1210 AC_MSG_NOTICE([Enabling apache module activation])
1212 AC_MSG_NOTICE([Disabling apache module activation])
1215 AC_SUBST(MOD_ACTIVATION)
1220 AC_HELP_STRING([--enable-gcov],
1221 [Turn on gcov coverage testing (GCC only).]),
1223 if test "$enableval" = "yes" ; then
1224 dnl Probably other compilers support something similar;
1225 dnl feel free to extend this to include them.
1226 if test "$GCC" = "yes"; then
1227 if test "$svn_enable_shared" = "yes" ; then
1228 AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1229 recommend also using --enable-all-static).])
1231 if test ! "$enable_all_static" = "yes" ; then
1232 AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1234 AC_MSG_NOTICE([Enabling gcov coverage testing.])
1235 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1236 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1238 AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1243 AC_ARG_ENABLE(gprof,
1244 AS_HELP_STRING([--enable-gprof],
1245 [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1247 if test "$enableval" = "yes" ; then
1248 dnl Probably other compilers support -pg or something similar;
1249 dnl feel free to extend this to include them.
1250 if test "$GCC" = "yes"; then
1251 if test "$svn_enable_shared" = "yes" ; then
1252 AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1253 recommend also using --enable-all-static).])
1255 if test ! "$enable_all_static" = "yes" ; then
1256 AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1258 AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1259 CFLAGS="$CFLAGS -pg"
1260 CXXFLAGS="$CXXFLAGS -pg"
1261 LT_LDFLAGS="$LT_LDFLAGS -pg"
1263 AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1269 # Scripting and Bindings languages
1271 # Python: Used for testsuite, and bindings
1274 PYTHON="`$abs_srcdir/build/find_python.sh`"
1275 if test -z "$PYTHON"; then
1276 AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1277 AC_MSG_WARN([or to use the Subversion Python bindings])
1279 AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1280 AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1281 AC_MSG_WARN([to the Python executable, and re-run configure])
1283 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1285 # The minimum version for the JVM runtime for our Java bytecode.
1286 JAVA_OLDEST_WORKING_VER='1.6'
1287 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1288 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1290 AC_PATH_PROG(PERL, perl, none)
1292 if test -n "$RUBY"; then
1293 AC_PATH_PROG(RUBY, "$RUBY", none)
1295 AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193 ruby2.0 ruby2.1, none)
1297 if test "$RUBY" != "none"; then
1298 AC_MSG_CHECKING([rb_hash_foreach])
1299 if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1300 AC_MSG_RESULT([yes])
1301 if test -n "$RDOC"; then
1302 AC_PATH_PROG(RDOC, "$RDOC", none)
1304 AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2.0 rdoc2.1, none)
1306 AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1307 svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1309 RUBY_MAJOR="$svn_cv_ruby_major"
1311 AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1312 svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1314 RUBY_MINOR="$svn_cv_ruby_minor"
1316 AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1317 svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1319 RUBY_TEENY="$svn_cv_ruby_teeny"
1321 AC_SUBST(RUBY_MAJOR)
1322 AC_SUBST(RUBY_MINOR)
1323 AC_SUBST(RUBY_TEENY)
1324 if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1325 # Disallow Ruby between 1.8.7 and 1.9.3
1327 AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1328 AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
1333 AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1334 AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1335 AC_MSG_WARN([Subversion Ruby bindings])
1336 AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1344 dnl decide whether we want to link against the RA/FS libraries
1345 AC_ARG_ENABLE(runtime-module-search,
1346 AS_HELP_STRING([--enable-runtime-module-search],
1347 [Turn on dynamic loading of RA/FS libraries including
1348 third-party FS libraries]),
1350 if test "$enableval" = "yes"; then
1352 if test "$svn_enable_shared" = "no"; then
1353 AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1355 AC_DEFINE(SVN_USE_DSO, 1,
1356 [Defined if svn should try to load DSOs])
1360 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1361 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
1362 [Defined if libsvn_client should link against libsvn_ra_local])
1363 svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1364 svn_ra_lib_install_deps="install-ramod-lib"
1365 svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1367 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
1368 [Defined if libsvn_client should link against libsvn_ra_svn])
1369 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1370 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1372 if test "$svn_lib_serf" = "yes"; then
1373 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
1374 [Defined if libsvn_client should link against libsvn_ra_serf])
1375 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1376 svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1377 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1380 SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1381 SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1382 SVN_RA_LIB_LINK=$svn_ra_lib_link
1384 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1385 [Defined if libsvn_fs should link against libsvn_fs_fs])
1386 svn_fs_lib_deps="\$(FS_FS_DEPS)"
1387 svn_fs_lib_install_deps="install-fsmod-lib"
1388 svn_fs_lib_link="\$(FS_FS_LINK)"
1390 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1391 [Defined if libsvn_fs should link against libsvn_fs_x])
1392 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1393 svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1394 dnl FSFS already installs fsmod
1395 dnl svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1397 if test "$svn_lib_berkeley_db" = "yes"; then
1398 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1399 [Defined if libsvn_fs should link against libsvn_fs_base])
1400 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1401 svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1402 svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1405 SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1406 SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1407 SVN_FS_LIB_LINK=$svn_fs_lib_link
1410 AC_SUBST(SVN_RA_LIB_DEPS)
1411 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1412 AC_SUBST(SVN_RA_LIB_LINK)
1413 AC_SUBST(SVN_FS_LIB_DEPS)
1414 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1415 AC_SUBST(SVN_FS_LIB_LINK)
1417 # ==== JavaHL ================================================================
1419 dnl Possibly compile JavaHL
1421 AC_ARG_ENABLE(javahl,
1422 AS_HELP_STRING([--enable-javahl],
1423 [Enable compilation of Java high-level bindings (requires C++)]),
1424 [ if test "$enableval" = "yes" ; then
1425 do_javahl_build="yes"
1430 INSTALL_EXTRA_JAVAHL_LIB=""
1432 JAVAHL_TESTS_TARGET=""
1433 JAVAHL_COMPAT_TESTS_TARGET=""
1435 if test "$do_javahl_build" = "yes"; then
1436 dnl Check for suitable JDK
1437 if test "$JDK_SUITABLE" = "no"; then
1438 AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK.
1439 Please specify a suitable JDK using the --with-jdk option.])
1442 dnl The temporary directory where libtool compiles libsvnjavahl.
1443 JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1446 if test "$os_arch" = "Darwin"; then
1447 dnl On Darwin, JNI libs must be installed as .jnilib
1448 INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1449 FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1451 # This segment (and the rest of r10800) is very likely unnecessary
1452 # with libtool 1.5, which automatically adds libstdc++ as a
1453 # dependency to the C++ libraries it builds. So at some future time
1454 # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1456 AC_MSG_CHECKING([for additional flags to link C++ libraries])
1457 if test "x$ac_compiler_gnu" = "xyes"; then
1460 AC_MSG_RESULT([none needed])
1463 LT_CXX_LIBADD="-lstdc++"
1464 AC_MSG_RESULT([$LT_CXX_LIBADD])
1468 AC_MSG_RESULT([none needed])
1471 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1472 AC_SUBST(JAVAHL_OBJDIR)
1473 AC_SUBST(FIX_JAVAHL_LIB)
1474 AC_SUBST(LT_CXX_LIBADD)
1477 AS_HELP_STRING([--with-junit=PATH],
1478 [Specify a path to the junit JAR file.]),
1480 if test "$withval" != "no"; then
1481 if test -n "$JAVA_CLASSPATH"; then
1482 JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1484 JAVA_CLASSPATH="$withval"
1486 JAVAHL_TESTS_TARGET="javahl-tests"
1487 JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1490 AC_SUBST(JAVA_CLASSPATH)
1491 AC_SUBST(JAVAHL_TESTS_TARGET)
1492 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1494 # ==== Miscellaneous bits ====================================================
1496 AC_CHECK_HEADERS([stdbool.h inttypes.h])
1498 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1499 ### I think we get this flag from APR, so the fix probably belongs there
1500 if test "$CC" = "clang"; then
1501 SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1504 # Need to strip '-no-cpp-precomp' from CPPFLAGS for SWIG as well.
1505 SWIG_CPPFLAGS="$CPPFLAGS"
1506 SVN_STRIP_FLAG(SWIG_CPPFLAGS, [-no-cpp-precomp ])
1507 AC_SUBST([SWIG_CPPFLAGS])
1509 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1510 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1511 [Defined to be the path separator used on your local filesystem])
1513 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1514 [Defined to be the null device for the system])
1516 DEFAULT_FS_TYPE="fsfs"
1517 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1518 [The fs type to use by default])
1520 DEFAULT_HTTP_LIBRARY="serf"
1521 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1522 [The http library to use by default])
1524 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1525 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1528 # Check whether they've installed GNU make
1529 if ! make --version > /dev/null 2>&1; then
1531 INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1535 AC_SUBST(INCLUDE_OUTPUTS)
1537 # ==== Detection complete - output and run config.status =====================
1539 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1540 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1541 [svn_cf=subversion/svn_private_config.h;
1542 $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1543 cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1544 rm -f $svn_cf.tmp.new $svn_cf.tmp],
1546 SVN_DB_HEADER="$SVN_DB_HEADER"])
1547 AC_CONFIG_FILES([Makefile])
1549 # Create pkg-config .pc files from .pc.in files
1550 for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1551 pc_file=${pc_in_file#${abs_srcdir}/}
1552 pc_file=${pc_file%.in}
1553 AC_CONFIG_FILES([${pc_file}])
1556 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1557 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1558 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1559 if test -e packages/solaris/pkginfo.in; then
1560 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1562 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1564 # Ensure that SWIG is checked after reconfiguration.
1567 dnl Provide ${host} for use in compiled code (for svn --version)
1568 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1569 [Defined to the config.guess name of the build system])
1571 dnl Provide ${target} for use in compiled code (for user-agent string)
1572 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1573 [Defined to the config.guess name of the build target])
1577 # ==== Print final messages to user ==========================================
1579 dnl Configure is long - users tend to miss warnings printed during it.
1580 dnl Hence, print a warnings about what we did and didn't configure at the
1581 dnl end, where people will actually see them.
1583 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1584 AC_MSG_WARN([We have configured without BDB filesystem support
1587 Berkeley DB 6 was found, but not used. Please re-run configure (see
1588 ./config.nice) with the '--enable-bdb6' flag to use it,
1589 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1590 to silence this warning.
1592 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1593 General Public License, version 3:
1594 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1596 The AGPL-3.0 licence may impose special requirements for making available
1597 source code of server-side software. The text of the licence is:
1598 https://www.gnu.org/licenses/agpl-3.0.html
1599 http://opensource.org/licenses/AGPL-3.0
1601 The Berkeley DB backend to Subversion is deprecated; see
1602 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1604 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1605 technical problems or bugs.