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)
52 CMAINTAINERFLAGS="$CUSERFLAGS"
57 # Look for a C++ compiler (before anything can set CXXFLAGS)
58 CXXMAINTAINERFLAGS="$CXXUSERFLAGS"
59 CXXUSERFLAGS="$CXXFLAGS"
63 # Look for a C pre-processor
67 # AC_PROG_SED was introduced in Autoconf 2.59b
68 m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
70 # Grab target_cpu, so we can use it in the Solaris pkginfo file
73 # Look for an extended grep
79 # If $INSTALL is relative path to our fallback install-sh, then convert
80 # to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool
81 # may try to use it from a changed working directory.
82 if test "$INSTALL" = "build/install-sh -c"; then
83 INSTALL="$abs_srcdir/$INSTALL"
86 if test -z "$MKDIR"; then
91 # ==== Libraries, for which we may have source to build ======================
93 dnl verify apr version and set apr flags
94 dnl These regular expressions should not contain "\(" and "\)".
95 dnl The specific reason we require APR 0.9.7 is:
96 dnl It contains fixes to its file writing routines
97 dnl now generating errors instead of silently ignoring
98 dnl them. Only .7 and later can guarantee repository
99 dnl integrity with FSFS.
101 APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\. 2\."]
103 SVN_LIB_APR($APR_VER_REGEXES)
105 if test `expr $apr_version : 2` -ne 0; then
106 dnl Bump the library so-version to 2 if using APR-2
107 dnl (Debian uses so-version 1 for APR-1-with-largefile)
109 dnl APR-2 provides APRUTIL
110 apu_config=$apr_config
111 AC_SUBST(SVN_APRUTIL_INCLUDES)
112 AC_SUBST(SVN_APRUTIL_CONFIG, ["$apu_config"])
113 AC_SUBST(SVN_APRUTIL_LIBS)
116 APU_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\."]
117 SVN_LIB_APRUTIL($APU_VER_REGEXES)
119 SVN_LT_SOVERSION="-version-info $svn_lib_ver"
120 AC_SUBST(SVN_LT_SOVERSION)
121 AC_DEFINE_UNQUOTED(SVN_SOVERSION, $svn_lib_ver,
122 [Subversion library major verson])
124 dnl Search for pkg-config
125 AC_PATH_PROG(PKG_CONFIG, pkg-config)
130 if test "$svn_lib_serf" = "yes"; then
131 AC_DEFINE([SVN_HAVE_SERF], 1,
132 [Defined if support for Serf is enabled])
135 dnl Search for apr_memcache (only affects fs_fs)
138 if test "$svn_lib_apr_memcache" = "yes"; then
139 AC_DEFINE(SVN_HAVE_MEMCACHE, 1,
140 [Defined if apr_memcache (standalone or in apr-util) is present])
144 dnl Find Apache with a recent-enough magic module number
145 SVN_FIND_APACHE(20020903)
147 dnl Search for SQLite. If you change SQLITE_URL from a .zip to
148 dnl something else also update build/ac-macros/sqlite.m4 to reflect
149 dnl the correct command to unpack the downloaded file.
150 SQLITE_MINIMUM_VER="3.7.12"
151 SQLITE_RECOMMENDED_VER="3.7.15.1"
152 SQLITE_URL="http://www.sqlite.org/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
154 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
157 AC_ARG_ENABLE(sqlite-compatibility-version,
158 AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
159 [Allow binary to run against SQLite as old as ARG]),
160 [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
162 if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
163 SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
164 [sqlite_compat_ver_num])
165 CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
166 CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
169 SVN_CHECK_FOR_ATOMIC_BUILTINS
171 if test "$svn_cv_atomic_builtins" = "yes"; then
172 AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
175 dnl Set up a number of directories ---------------------
177 dnl Create SVN_BINDIR for proper substitution
178 if test "${bindir}" = '${exec_prefix}/bin'; then
179 if test "${exec_prefix}" = "NONE"; then
180 if test "${prefix}" = "NONE"; then
181 SVN_BINDIR="${ac_default_prefix}/bin"
183 SVN_BINDIR="${prefix}/bin"
186 SVN_BINDIR="${exec_prefix}/bin"
189 SVN_BINDIR="${bindir}"
192 dnl fully evaluate this value. when we substitute it into our tool scripts,
193 dnl they will not have things such as ${bindir} available
194 SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
197 dnl provide ${bindir} in svn_private_config.h for use in compiled code
198 AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
199 [Defined to be the path to the installed binaries])
201 dnl This purposely does *not* allow for multiple parallel installs.
202 dnl However, it is compatible with most gettext usages.
203 localedir='${datadir}/locale'
206 dnl For SVN_LOCALE_DIR, we have to expand it to something. See SVN_BINDIR.
207 if test "${datadir}" = '${prefix}/share' && test "${prefix}" = "NONE"; then
208 exp_localedir='${ac_default_prefix}/share/locale'
210 exp_localedir=$localedir
212 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
213 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
214 [Defined to be the path to the installed locale dirs])
216 dnl Check for libtool -- we'll definitely need it for all our shared libs!
217 AC_MSG_NOTICE([configuring libtool now])
218 ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
219 AC_ARG_ENABLE(experimental-libtool,
220 AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
221 [experimental_libtool=$enableval],[experimental_libtool=no])
223 if test "$experimental_libtool" = "yes"; then
224 echo "using APR's libtool"
225 sh_libtool="`$apr_config --apr-libtool`"
226 LIBTOOL="$sh_libtool"
227 SVN_LIBTOOL="$sh_libtool"
229 sh_libtool="$abs_builddir/libtool"
230 SVN_LIBTOOL="\$(SHELL) $sh_libtool"
232 AC_SUBST(SVN_LIBTOOL)
234 dnl Determine the libtool version
236 lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
237 lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
238 lt_major_version=`echo $lt_version | cut -d'.' -f 1`
241 dnl set the default parameters
242 svn_enable_static=yes
243 svn_enable_shared=yes
245 dnl check for --enable-static option
246 AC_ARG_ENABLE(static,
247 AS_HELP_STRING([--enable-static],
248 [Build static libraries]),
249 [svn_enable_static="$enableval"], [svn_enable_static="yes"])
251 dnl check for --enable-shared option
252 AC_ARG_ENABLE(shared,
253 AS_HELP_STRING([--enable-shared],
254 [Build shared libraries]),
255 [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
257 if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
258 AC_MSG_NOTICE([building both shared and static libraries])
259 elif test "$svn_enable_static" = "yes" ; then
260 AC_MSG_NOTICE([building static libraries only])
261 LT_CFLAGS="-static $LT_CFLAGS"
262 LT_LDFLAGS="-static $LT_LDFLAGS"
263 elif test "$svn_enable_shared" = "yes" ; then
264 AC_MSG_NOTICE([building shared libraries only])
265 if test "$lt_major_version" = "1" ; then
266 LT_CFLAGS="-prefer-pic $LT_CFLAGS"
267 elif test "$lt_major_version" = "2" ; then
268 LT_CFLAGS="-shared $LT_CFLAGS"
270 LT_LDFLAGS="-shared $LT_LDFLAGS"
272 AC_MSG_ERROR([cannot disable both shared and static libraries])
275 dnl Check for --enable-all-static option
276 AC_ARG_ENABLE(all-static,
277 AS_HELP_STRING([--enable-all-static],
278 [Build completely static (standalone) binaries.]),
280 if test "$enableval" = "yes" ; then
281 LT_LDFLAGS="-all-static $LT_LDFLAGS"
282 elif test "$enableval" != "no" ; then
283 AC_MSG_ERROR([--enable-all-static doesn't accept argument])
290 AC_ARG_ENABLE(local-library-preloading,
291 AS_HELP_STRING([--enable-local-library-preloading],
292 [Enable preloading of locally built libraries in locally
293 built executables. This may be necessary for testing
294 prior to installation on some platforms. It does not
295 work on some platforms (Darwin, OpenBSD, ...).]),
297 if test "$enableval" != "no"; then
298 if test "$svn_enable_shared" = "yes"; then
299 TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
301 AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
304 TRANSFORM_LIBTOOL_SCRIPTS=""
307 TRANSFORM_LIBTOOL_SCRIPTS=""
309 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
311 dnl Check if -no-undefined is needed for the platform.
312 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
313 dnl So we only turn it on for platforms where we know we really need it.
314 AC_MSG_CHECKING([whether libtool needs -no-undefined])
318 LT_NO_UNDEFINED="-no-undefined"
325 AC_SUBST(LT_NO_UNDEFINED)
327 AC_MSG_CHECKING([whether to avoid circular linkage at all costs])
331 AC_DEFINE([SVN_AVOID_CIRCULAR_LINKAGE_AT_ALL_COSTS_HACK], 1,
332 [Define if circular linkage is not possible on this platform.])
342 AS_HELP_STRING([--with-trang=PATH],
343 [Specify the command to run the trang schema converter]),
347 if test "$trang" = "yes"; then
348 AC_PATH_PROG(TRANG, trang, none)
354 dnl Check for doxygen
357 AC_HELP_STRING([--with-doxygen=PATH],
358 [Specify the command to run doxygen]),
362 if test "$doxygen" = "yes"; then
363 AC_PATH_PROG(DOXYGEN, doxygen, none)
370 dnl Check for libraries --------------------
372 dnl Expat -------------------
375 AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS],
376 [Specify location of Expat]),
377 [svn_lib_expat="$withval"],
378 [svn_lib_expat="::expat"])
380 # APR-util accepts "builtin" as an argument to this option so if the user
381 # passed "builtin" pretend the user didn't specify the --with-expat option
382 # at all. Expat will (hopefully) be found in apr-util.
383 test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
385 AC_MSG_CHECKING([for Expat])
386 if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
388 for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
389 SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
391 SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
392 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
393 LDFLAGS="$LDFLAGS -L$l"
395 for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
396 SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
398 SVN_XML_LIBS="${SVN_XML_LIBS## }"
399 old_CPPFLAGS="$CPPFLAGS"
401 CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
402 LIBS="$LIBS $SVN_XML_LIBS"
403 AC_LINK_IFELSE([AC_LANG_SOURCE([[
406 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
408 if test "$svn_lib_expat" = "yes"; then
413 CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
414 if test "$enable_all_static" != "yes"; then
415 SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
417 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
420 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
421 if test "$svn_lib_expat" = "yes"; then
423 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.])
426 AC_MSG_ERROR([Expat not found])
429 CPPFLAGS="$old_CPPFLAGS"
432 if test "$svn_lib_expat" = "yes"; then
433 AC_MSG_ERROR([--with-expat option requires argument])
434 elif test "$svn_lib_expat" = "no"; then
435 AC_MSG_ERROR([Expat is required])
437 AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
440 AC_SUBST(SVN_XML_INCLUDES)
441 AC_SUBST(SVN_XML_LIBS)
443 dnl Berkeley DB -------------------
445 # Berkeley DB on SCO OpenServer needs -lsocket
446 AC_CHECK_LIB(socket, socket)
448 # Build the BDB filesystem library only if we have an appropriate
449 # version of Berkeley DB.
451 powerpc-apple-darwin*)
452 # Berkeley DB 4.0 does not work on OS X.
453 SVN_FS_WANT_DB_MAJOR=4
454 SVN_FS_WANT_DB_MINOR=1
455 SVN_FS_WANT_DB_PATCH=25
458 SVN_FS_WANT_DB_MAJOR=4
459 SVN_FS_WANT_DB_MINOR=0
460 SVN_FS_WANT_DB_PATCH=14
464 # Look for libdb4.so first:
465 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
466 $SVN_FS_WANT_DB_PATCH, [db4 db])
468 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
469 [The desired major version for the Berkeley DB])
470 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
471 [The desired minor version for the Berkeley DB])
472 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
473 [The desired patch version for the Berkeley DB])
475 AC_SUBST(SVN_DB_INCLUDES)
476 AC_SUBST(SVN_DB_LIBS)
480 if test "$svn_lib_sasl" = "yes"; then
481 AC_DEFINE(SVN_HAVE_SASL, 1,
482 [Defined if Cyrus SASL v2 is present on the system])
485 dnl Mac OS specific features -------------------
487 SVN_LIB_MACHO_ITERATE
489 SVN_LIB_MACOS_KEYCHAIN
491 dnl APR_HAS_DSO -------------------
493 AC_MSG_CHECKING([whether APR has support for DSOs])
494 old_CPPFLAGS="$CPPFLAGS"
495 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
496 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
502 AC_MSG_RESULT([yes]),
505 CPPFLAGS="$old_CPPFLAGS"
508 dnl D-Bus (required for support for KWallet) -------------------
510 if test -n "$PKG_CONFIG"; then
511 AC_MSG_CHECKING([for D-Bus .pc file])
512 if $PKG_CONFIG --exists dbus-1; then
514 old_CPPFLAGS="$CPPFLAGS"
516 DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
517 AC_MSG_CHECKING([D-Bus version])
518 DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
519 AC_MSG_RESULT([$DBUS_VERSION])
520 # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
521 if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
522 DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
524 DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
525 CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
526 LIBS="$LIBS $DBUS_LIBS"
527 AC_MSG_CHECKING([for D-Bus])
528 AC_LINK_IFELSE([AC_LANG_SOURCE([[
529 #include <dbus/dbus.h>
531 {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
532 if test "$HAVE_DBUS" = "yes"; then
537 CPPFLAGS="$old_CPPFLAGS"
544 dnl GPG Agent -------------------
546 AC_ARG_WITH(gpg_agent,
547 AS_HELP_STRING([--without-gpg-agent],
548 [Disable support for GPG-Agent]),
549 [], [with_gpg_agent=yes])
550 AC_MSG_CHECKING([whether to support GPG-Agent])
551 if test "$with_gpg_agent" = "yes"; then
553 AC_DEFINE([SVN_HAVE_GPG_AGENT], [1],
554 [Is GPG Agent support enabled?])
559 AC_SUBST(SVN_HAVE_GPG_AGENT)
561 dnl GNOME Keyring -------------------
563 AC_ARG_WITH(gnome_keyring,
564 AS_HELP_STRING([--with-gnome-keyring],
565 [Enable use of GNOME Keyring for auth credentials (enabled by default if found)]),
566 [with_gnome_keyring="$withval"],
567 [with_gnome_keyring=auto])
569 found_gnome_keyring=no
570 AC_MSG_CHECKING([whether to look for GNOME Keyring])
571 if test "$with_gnome_keyring" != "no"; then
573 if test "$svn_enable_shared" = "yes"; then
574 if test "$APR_HAS_DSO" = "yes"; then
575 if test -n "$PKG_CONFIG"; then
576 AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
577 if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
579 old_CPPFLAGS="$CPPFLAGS"
580 SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
581 CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
582 AC_CHECK_HEADER(gnome-keyring.h, found_gnome_keyring=yes, found_gnome_keyring=no)
583 AC_MSG_CHECKING([for GNOME Keyring])
584 if test "$found_gnome_keyring" = "yes"; then
586 AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1],
587 [Is GNOME Keyring support enabled?])
588 CPPFLAGS="$old_CPPFLAGS"
589 SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
592 if test "$with_gnome_keyring" = "yes"; then
593 AC_MSG_ERROR([cannot find GNOME Keyring])
598 if test "$with_gnome_keyring" = "yes"; then
599 AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
601 with_gnome_keyring=no
605 if test "$with_gnome_keyring" = "yes"; then
606 AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
608 with_gnome_keyring=no
612 if test "$with_gnome_keyring" = "yes"; then
613 AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
615 with_gnome_keyring=no
619 if test "$with_gnome_keyring" = "yes"; then
620 AC_MSG_ERROR([--with-gnome-keyring conflicts with --disable-shared])
622 with_gnome_keyring=no
628 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
629 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
632 dnl Ev2 experimental features ----------------------
633 dnl Note: The Ev2 implementations will be built unconditionally, but by
634 dnl providing this flag, users can choose to use the currently-shimmed Ev2
635 dnl editor implementations for various operations. This will probably
636 dnl negatively impact performance, but is useful for testing.
637 AC_ARG_ENABLE(ev2-impl,
638 AS_HELP_STRING([--enable-ev2-impl],
639 [Use Ev2 implementations, where available [EXPERIMENTAL]]),
640 [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
641 if test "$enable_ev2_impl" = "yes"; then
642 AC_DEFINE(ENABLE_EV2_IMPL, 1,
643 [Define to 1 if Ev2 implementations should be used.])
647 dnl I18n -------------------
650 AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
651 [enable_nls=$enableval],[enable_nls=yes])
654 if test "$enable_nls" = "yes"; then
655 dnl First, check to see if there is a working msgfmt.
656 AC_PATH_PROG(MSGFMT, msgfmt, none)
657 AC_PATH_PROG(MSGMERGE, msgmerge, none)
658 AC_PATH_PROG(XGETTEXT, xgettext, none)
659 if test "$MSGFMT" != "none"; then
660 AC_SEARCH_LIBS(bindtextdomain, [intl], [],
664 if test "$enable_nls" = "no"; then
665 # Destroy the cached result so we can test again
666 unset ac_cv_search_bindtextdomain
667 # On some systems, libintl needs libiconv to link properly,
668 # so try again with -liconv.
669 AC_SEARCH_LIBS(bindtextdomain, [intl],
672 # This is here so that -liconv ends up in LIBS
673 # if it worked with -liconv.
674 AC_CHECK_LIB(iconv, libiconv_open)
677 AC_MSG_WARN([bindtextdomain() not found. Disabling NLS.])
681 if test "$enable_nls" = "yes"; then
682 AC_DEFINE(ENABLE_NLS, 1,
683 [Define to 1 if translation of program messages to the user's
684 native language is requested.])
691 /* Indicate to translators that string X should be translated. Do not look
692 up the translation at run time; just expand to X. This macro is suitable
693 for use where a constant string is required at compile time. */
695 /* Indicate to translators that we have decided the string X should not be
696 translated. Expand to X. */
701 /* Indicate to translators that string X should be translated. At run time,
702 look up and return the translation of X. */
703 #define _(x) dgettext(PACKAGE_NAME, x)
704 /* Indicate to translators that strings X1 and X2 are singular and plural
705 forms of the same message, and should be translated. At run time, return
706 an appropriate translation depending on the number N. */
707 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
710 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
711 #define gettext(x) (x)
712 #define dgettext(domain, x) (x)
716 dnl Used to simulate makefile conditionals.
718 NO_GETTEXT_CODESET=\#
719 if test $USE_NLS = "yes"; then
720 AC_CHECK_FUNCS(bind_textdomain_codeset,
721 [ GETTEXT_CODESET="" ],
722 [ NO_GETTEXT_CODESET="" ])
724 AC_SUBST(GETTEXT_CODESET)
725 AC_SUBST(NO_GETTEXT_CODESET)
727 # Check if we are using GNU gettext.
730 if test $USE_NLS = "yes"; then
731 AC_MSG_CHECKING(if we are using GNU gettext)
732 if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
736 AC_MSG_RESULT($GNU_GETTEXT)
738 AC_SUBST(MSGFMTFLAGS)
740 dnl libmagic -------------------
744 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
745 [libmagic filetype detection library]),
747 if test "$withval" = "yes" ; then
748 AC_CHECK_HEADER(magic.h, [
749 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
751 libmagic_prefix="the default locations"
752 elif test "$withval" != "no"; then
753 libmagic_prefix=$withval
754 save_cppflags="$CPPFLAGS"
755 CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
756 AC_CHECK_HEADERS(magic.h,[
757 save_ldflags="$LDFLAGS"
758 LDFLAGS="-L$libmagic_prefix/lib"
759 AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
760 LDFLAGS="$save_ldflags"
762 CPPFLAGS="$save_cppflags"
764 if test "$withval" != "no" && test "$libmagic_found" = "no"; then
765 AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
769 AC_CHECK_HEADER(magic.h, [
770 AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
774 if test "$libmagic_found" != "no"; then
775 AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
776 SVN_MAGIC_LIBS="-lmagic"
779 if test "$libmagic_found" = "yes"; then
780 SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
781 LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
784 AC_SUBST(SVN_MAGIC_INCLUDES)
785 AC_SUBST(SVN_MAGIC_LIBS)
787 dnl KWallet -------------------
790 if test "$svn_lib_kwallet" = "yes"; then
791 AC_DEFINE([SVN_HAVE_KWALLET], 1,
792 [Defined if KWallet support is enabled])
795 dnl plaintext passwords -------------------
796 AC_ARG_ENABLE(plaintext-password-storage,
797 AS_HELP_STRING([--disable-plaintext-password-storage],
798 [Disable on-disk caching of plaintext passwords and passphrases.
799 (Leaving this functionality enabled will not force Subversion
800 to store passwords in plaintext, but does permit users to
801 explicitly allow that behavior via runtime configuration.)]),
803 if test "$enableval" = "no"; then
804 AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
805 AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
806 [Defined if plaintext password/passphrase storage is disabled])
810 dnl Build and install rules -------------------
812 INSTALL_STATIC_RULES="install-bin install-docs"
813 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
814 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
815 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
817 if test "$svn_lib_berkeley_db" = "yes"; then
818 BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
819 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
820 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
821 BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
822 BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
825 if test "$svn_lib_serf" = "yes"; then
826 BUILD_RULES="$BUILD_RULES serf-lib"
827 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
828 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
831 if test "$svn_lib_kwallet" = "yes"; then
832 BUILD_RULES="$BUILD_RULES kwallet-lib"
833 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
834 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
837 if test "$found_gnome_keyring" = "yes"; then
838 BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
839 INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
840 INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
843 if test "$USE_NLS" = "yes"; then
844 BUILD_RULES="$BUILD_RULES locale"
845 INSTALL_RULES="$INSTALL_RULES install-locale"
848 AC_SUBST(BUILD_RULES)
849 AC_SUBST(INSTALL_STATIC_RULES)
850 AC_SUBST(INSTALL_RULES)
851 AC_SUBST(BDB_TEST_DEPS)
852 AC_SUBST(BDB_TEST_PROGRAMS)
854 dnl Check for header files ----------------
856 dnl Standard C headers
859 dnl Check for typedefs, structures, and compiler characteristics ----------
861 dnl if compiler doesn't understand `const', then define it empty
864 dnl if non-existent, define size_t to be `unsigned'
868 dnl Check for library functions ----------
872 dnl svn_error's default warning handler uses vfprintf()
875 dnl check for functions needed in special file handling
876 AC_CHECK_FUNCS(symlink readlink)
879 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
881 dnl check for termios
882 AC_CHECK_HEADER(termios.h,[
883 AC_CHECK_FUNCS(tcgetattr tcsetattr,[
884 AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
888 dnl Process some configuration options ----------
891 AS_HELP_STRING([--with-openssl],
892 [This option does NOT affect the Subversion build process in any
893 way. It tells an integrated Serf HTTP client library build
894 process where to locate the OpenSSL library when (and only when)
895 building Serf as an integrated part of the Subversion build
896 process. When linking to a previously installed version of Serf
897 instead, you do not need to use this option.]),
901 AS_HELP_STRING([--enable-debug],
902 [Turn on debugging]),
904 if test "$enableval" = "yes" ; then
905 enable_debugging="yes"
907 enable_debugging="no"
911 # Neither --enable-debug nor --disable-debug was passed.
912 enable_debugging="maybe"
915 AC_ARG_ENABLE(optimize,
916 AS_HELP_STRING([--enable-optimize],
917 [Turn on optimizations]),
919 if test "$enableval" = "yes" ; then
920 enable_optimization="yes"
922 enable_optimization="no"
926 # Neither --enable-optimize nor --disable-optimize was passed.
927 enable_optimization="maybe"
930 dnl Use -Wl,--no-undefined during linking of some libraries
931 AC_ARG_ENABLE(disallowing-of-undefined-references,
932 [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
933 [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
934 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
935 enable_disallowing_of_undefined_references="no"
937 if test "$enable_disallowing_of_undefined_references" != "no"; then
938 AC_MSG_CHECKING([for -Wl,--no-undefined])
939 old_LDFLAGS="$LDFLAGS"
940 LDFLAGS="$LDFLAGS -Wl,--no-undefined"
941 AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
942 LDFLAGS="$old_LDFLAGS"
943 if test "$svn_wl_no_undefined" = "yes"; then
945 for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
946 eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
950 if test "$enable_disallowing_of_undefined_references" = "yes"; then
951 AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
955 AC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS])
956 AC_SUBST([libsvn_auth_kwallet_LDFLAGS])
957 AC_SUBST([libsvn_client_LDFLAGS])
958 AC_SUBST([libsvn_delta_LDFLAGS])
959 AC_SUBST([libsvn_diff_LDFLAGS])
960 AC_SUBST([libsvn_fs_LDFLAGS])
961 AC_SUBST([libsvn_fs_base_LDFLAGS])
962 AC_SUBST([libsvn_fs_fs_LDFLAGS])
963 AC_SUBST([libsvn_fs_util_LDFLAGS])
964 AC_SUBST([libsvn_ra_LDFLAGS])
965 AC_SUBST([libsvn_ra_local_LDFLAGS])
966 AC_SUBST([libsvn_ra_serf_LDFLAGS])
967 AC_SUBST([libsvn_ra_svn_LDFLAGS])
968 AC_SUBST([libsvn_repos_LDFLAGS])
969 AC_SUBST([libsvn_subr_LDFLAGS])
970 AC_SUBST([libsvn_wc_LDFLAGS])
973 AC_ARG_ENABLE(maintainer-mode,
974 AS_HELP_STRING([--enable-maintainer-mode],
975 [Turn on debugging and very strict compile-time warnings]),
977 if test "$enableval" = "yes" ; then
978 if test "$enable_debugging" = "no" ; then
979 AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
983 dnl Enable some extra warnings. Put these before the user's flags
984 dnl so the user can specify flags that override these.
985 if test "$GCC" = "yes"; then
986 AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
988 dnl some additional flags that can be handy for an occasional review,
989 dnl but throw too many warnings in svn code, of too little importance,
990 dnl to keep these enabled. Remove the "dnl" to do a run with these
991 dnl switches enabled.
992 dnl ./configure CUSERFLAGS="-Wswitch-enum -Wswitch-default"
994 dnl Add each of the following flags only if the C compiler accepts it.
995 CFLAGS_KEEP="$CFLAGS"
998 SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
999 SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1000 SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1001 SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1002 SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1003 SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1004 SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1005 SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1007 CMAINTAINERFLAGS="$CFLAGS $CMAINTAINERFLAGS"
1008 CFLAGS="$CFLAGS_KEEP"
1010 dnl Add flags that all versions of GCC (should) support
1011 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 $CMAINTAINERFLAGS"
1013 if test "$GXX" = "yes"; then
1014 AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1016 dnl Add each of the following flags only if the C++ compiler accepts it.
1017 CXXFLAGS_KEEP="$CXXFLAGS"
1020 SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1021 SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1022 SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1023 SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1025 CXXMAINTAINERFLAGS="$CXXFLAGS $CXXMAINTAINERFLAGS"
1026 CXXFLAGS="$CXXFLAGS_KEEP"
1028 dnl Add flags that all versions of G++ (should) support
1029 CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1034 if test "$enable_debugging" = "yes" ; then
1035 dnl At the moment, we don't want optimization, because we're
1036 dnl debugging. Unless optiization was explicitly enabled.
1037 if test "$enable_optimization" != "yes"; then
1038 AC_MSG_NOTICE([Disabling optimizations for debugging])
1039 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1040 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1042 dnl Add debugging flags, unless they were set by the user
1043 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1044 AC_MSG_NOTICE([Enabling debugging for C])
1045 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1046 SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1047 SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1048 SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1049 SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1050 SVN_CFLAGS_ADD_IFELSE([-g])])])
1052 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1053 AC_MSG_NOTICE([Enabling debugging for C++])
1054 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1055 SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1056 SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1057 SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1058 SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1059 SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1061 dnl SVN_DEBUG enables specific features for developer builds
1062 dnl AP_DEBUG enables specific (Apache) features for developer builds
1063 CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1064 CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1065 elif test "$enable_debugging" = "no" ; then
1066 AC_MSG_NOTICE([Disabling debugging])
1067 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1068 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1069 dnl Compile with NDEBUG to get rid of assertions
1070 CFLAGS="$CFLAGS -DNDEBUG"
1071 CXXFLAGS="$CXXFLAGS -DNDEBUG"
1072 # elif test "$enable_debugging" = "maybe" ; then
1076 if test "$enable_optimization" = "yes"; then
1077 dnl Add optimization flags, unless they were set by the user
1078 if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1079 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1080 if test "$enable_debugging" = "yes"; then
1081 AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1082 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1083 SVN_CFLAGS_ADD_IFELSE([-O])])
1085 AC_MSG_NOTICE([Enabling optimizations for C])
1086 SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1087 SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1088 SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1089 SVN_CFLAGS_ADD_IFELSE([-O])])])])
1090 SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1091 SVN_CFLAGS_ADD_IFELSE([-flto])
1092 SVN_CFLAGS_ADD_IFELSE([-fwhole-program])
1095 if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1096 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1097 if test "$enable_debugging" = "yes"; then
1098 AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1099 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1100 SVN_CXXFLAGS_ADD_IFELSE([-O])])
1102 AC_MSG_NOTICE([Enabling optimizations for C++])
1103 SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1104 SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1105 SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1106 SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1107 SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1108 SVN_CXXFLAGS_ADD_IFELSE([-flto])
1109 SVN_CXXFLAGS_ADD_IFELSE([-fwhole-program])
1112 elif test "$enable_optimization" = "no"; then
1113 dnl Remove all optimization flags
1114 AC_MSG_NOTICE([Disabling optimizations])
1115 CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1116 CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1117 # elif test "$enable_optimization" = "maybe" ; then
1121 dnl Dump the current compiler options
1122 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1123 AC_MSG_NOTICE([ user-defined: $CUSERFLAGS])
1124 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1125 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1126 AC_MSG_NOTICE([ user-defined: $CXXUSERFLAGS])
1127 AC_MSG_NOTICE([ maintainer-mode: $CXXMAINTAINERFLAGS])
1129 AC_ARG_ENABLE(full-version-match,
1130 AS_HELP_STRING([--disable-full-version-match],
1131 [Disable the full version match rules when checking
1132 Subversion library compatibility.]),
1134 if test "$enableval" = "no" ; then
1135 AC_MSG_NOTICE([Disabling svn full version matching])
1136 AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1137 [Defined if the full version matching rules are disabled])
1142 AS_HELP_STRING([--with-editor=PATH],
1143 [Specify a default editor for the subversion client.]),
1146 if test "$withval" = "yes" ; then
1147 AC_MSG_ERROR([--with-editor requires an argument.])
1149 SVN_CLIENT_EDITOR=$withval
1150 AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1151 [The path of a default editor for the client.])
1160 AC_ARG_ENABLE(mod-activation,
1161 AS_HELP_STRING([--enable-mod-activation],
1162 [Enable mod_dav_svn in httpd.conf]),
1164 if test "$enableval" = "yes" ; then
1166 AC_MSG_NOTICE([Enabling apache module activation])
1168 AC_MSG_NOTICE([Disabling apache module activation])
1171 AC_SUBST(MOD_ACTIVATION)
1176 AC_HELP_STRING([--enable-gcov],
1177 [Turn on gcov coverage testing (GCC only).]),
1179 if test "$enableval" = "yes" ; then
1180 dnl Probably other compilers support something similar;
1181 dnl feel free to extend this to include them.
1182 if test "$GCC" = "yes"; then
1183 if test "$svn_enable_shared" = "yes" ; then
1184 AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1185 recommend also using --enable-all-static).])
1187 if test ! "$enable_all_static" = "yes" ; then
1188 AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1190 AC_MSG_NOTICE([Enabling gcov coverage testing.])
1191 CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1192 CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1194 AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1199 AC_ARG_ENABLE(gprof,
1200 AS_HELP_STRING([--enable-gprof],
1201 [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1203 if test "$enableval" = "yes" ; then
1204 dnl Probably other compilers support -pg or something similar;
1205 dnl feel free to extend this to include them.
1206 if test "$GCC" = "yes"; then
1207 if test "$svn_enable_shared" = "yes" ; then
1208 AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1209 recommend also using --enable-all-static).])
1211 if test ! "$enable_all_static" = "yes" ; then
1212 AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1214 AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1215 CFLAGS="$CFLAGS -pg"
1216 CXXFLAGS="$CXXFLAGS -pg"
1217 LT_LDFLAGS="$LT_LDFLAGS -pg"
1219 AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1225 # Scripting and Bindings languages
1227 # Python: Used for testsuite, and bindings
1230 PYTHON="`$abs_srcdir/build/find_python.sh`"
1231 if test -z "$PYTHON"; then
1232 AC_MSG_WARN([Python 2.5 or later is required to run the testsuite])
1233 AC_MSG_WARN([or to use the Subversion Python bindings])
1235 AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1236 AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1237 AC_MSG_WARN([to the Python executable, and re-run configure])
1239 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1241 # The minimum version for the JVM runtime for our Java bytecode.
1242 JAVA_OLDEST_WORKING_VER='1.5'
1243 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1244 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1246 AC_PATH_PROG(PERL, perl, none)
1248 if test -n "$RUBY"; then
1249 AC_PATH_PROG(RUBY, "$RUBY", none)
1251 AC_PATH_PROGS(RUBY, ruby ruby1.8 ruby18 ruby1.9 ruby1 ruby1.9.3 ruby193, none)
1253 if test "$RUBY" != "none"; then
1254 AC_MSG_CHECKING([rb_hash_foreach])
1255 if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1256 AC_MSG_RESULT([yes])
1257 if test -n "$RDOC"; then
1258 AC_PATH_PROG(RDOC, "$RDOC", none)
1260 AC_PATH_PROGS(RDOC, rdoc rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193, none)
1262 AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1263 svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1265 RUBY_MAJOR="$svn_cv_ruby_major"
1267 AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1268 svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1270 RUBY_MINOR="$svn_cv_ruby_minor"
1272 AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1273 svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1275 RUBY_TEENY="$svn_cv_ruby_teeny"
1277 AC_SUBST(RUBY_MAJOR)
1278 AC_SUBST(RUBY_MINOR)
1279 AC_SUBST(RUBY_TEENY)
1280 if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1281 # Disallow Ruby between 1.8.7 and 1.9.3
1283 AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1284 AC_MSG_WARN([Only 1.8.x and 1.9.3 releases are supported at this time])
1285 elif test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -eq "9" -a "$RUBY_TEENY" -eq "3" \); then
1286 #Warn about 1.9.3 support
1287 AC_MSG_WARN([WARNING: The detected Ruby is 1.9.3])
1288 AC_MSG_WARN([WARNING: Only 1.8.x releases are fully supported, 1.9.3 support is new])
1293 AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1294 AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1295 AC_MSG_WARN([Subversion Ruby bindings])
1296 AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1304 dnl decide whether we want to link against the RA/FS libraries
1305 AC_ARG_ENABLE(runtime-module-search,
1306 AS_HELP_STRING([--enable-runtime-module-search],
1307 [Turn on dynamic loading of RA/FS libraries including
1308 third-party FS libraries]),
1310 if test "$enableval" = "yes"; then
1312 if test "$svn_enable_shared" = "no"; then
1313 AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1315 AC_DEFINE(SVN_USE_DSO, 1,
1316 [Defined if svn should try to load DSOs])
1320 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1321 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
1322 [Defined if libsvn_client should link against libsvn_ra_local])
1323 svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1324 svn_ra_lib_install_deps="install-ramod-lib"
1325 svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1327 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
1328 [Defined if libsvn_client should link against libsvn_ra_svn])
1329 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1330 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1332 if test "$svn_lib_serf" = "yes"; then
1333 AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
1334 [Defined if libsvn_client should link against libsvn_ra_serf])
1335 svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1336 svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1337 svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1340 SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1341 SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1342 SVN_RA_LIB_LINK=$svn_ra_lib_link
1344 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1345 [Defined if libsvn_fs should link against libsvn_fs_fs])
1346 svn_fs_lib_deps="\$(FS_FS_DEPS)"
1347 svn_fs_lib_install_deps="install-fsmod-lib"
1348 svn_fs_lib_link="\$(FS_FS_LINK)"
1350 if test "$svn_lib_berkeley_db" = "yes"; then
1351 AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1352 [Defined if libsvn_fs should link against libsvn_fs_base])
1353 svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1354 svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1355 svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1358 SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1359 SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1360 SVN_FS_LIB_LINK=$svn_fs_lib_link
1363 AC_SUBST(SVN_RA_LIB_DEPS)
1364 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1365 AC_SUBST(SVN_RA_LIB_LINK)
1366 AC_SUBST(SVN_FS_LIB_DEPS)
1367 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1368 AC_SUBST(SVN_FS_LIB_LINK)
1370 # ==== JavaHL ================================================================
1372 dnl Possibly compile JavaHL
1374 AC_ARG_ENABLE(javahl,
1375 AS_HELP_STRING([--enable-javahl],
1376 [Enable compilation of Java high-level bindings (requires C++)]),
1377 [ if test "$enableval" = "yes" ; then
1378 do_javahl_build="yes"
1383 INSTALL_EXTRA_JAVAHL_LIB=""
1385 JAVAHL_TESTS_TARGET=""
1386 JAVAHL_COMPAT_TESTS_TARGET=""
1388 if test "$do_javahl_build" = "yes"; then
1389 dnl Check for suitable JDK
1390 if test "$JDK_SUITABLE" = "no"; then
1391 AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK.
1392 Please specify a suitable JDK using the --with-jdk option.])
1395 dnl The temporary directory where libtool compiles libsvnjavahl.
1396 JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1399 if test "$os_arch" = "Darwin"; then
1400 dnl On Darwin, JNI libs must be installed as .jnilib
1401 INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1402 FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1404 # This segment (and the rest of r10800) is very likely unnecessary
1405 # with libtool 1.5, which automatically adds libstdc++ as a
1406 # dependency to the C++ libraries it builds. So at some future time
1407 # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1409 AC_MSG_CHECKING([for additional flags to link C++ libraries])
1410 if test "x$ac_compiler_gnu" = "xyes"; then
1411 LT_CXX_LIBADD="-lstdc++"
1412 AC_MSG_RESULT([$LT_CXX_LIBADD])
1414 AC_MSG_RESULT([none needed])
1417 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1418 AC_SUBST(JAVAHL_OBJDIR)
1419 AC_SUBST(FIX_JAVAHL_LIB)
1420 AC_SUBST(LT_CXX_LIBADD)
1423 AS_HELP_STRING([--with-junit=PATH],
1424 [Specify a path to the junit JAR file.]),
1426 if test "$withval" != "no"; then
1427 if test -n "$JAVA_CLASSPATH"; then
1428 JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1430 JAVA_CLASSPATH="$withval"
1432 JAVAHL_TESTS_TARGET="javahl-tests"
1433 JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1436 AC_SUBST(JAVA_CLASSPATH)
1437 AC_SUBST(JAVAHL_TESTS_TARGET)
1438 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1440 # ==== Miscellaneous bits ====================================================
1442 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1443 ### I think we get this flag from APR, so the fix probably belongs there
1444 if test "$CC" = "clang"; then
1445 SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1448 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1449 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1450 [Defined to be the path separator used on your local filesystem])
1452 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1453 [Defined to be the null device for the system])
1455 DEFAULT_FS_TYPE="fsfs"
1456 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1457 [The fs type to use by default])
1459 DEFAULT_HTTP_LIBRARY="serf"
1460 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1461 [The http library to use by default])
1463 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1464 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1467 # Check whether they've installed GNU make
1468 if ! make --version > /dev/null 2>&1; then
1470 INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1474 AC_SUBST(INCLUDE_OUTPUTS)
1476 # ==== Detection complete - output and run config.status =====================
1478 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1479 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1480 [svn_cf=subversion/svn_private_config.h;
1481 $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1482 cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1483 rm -f $svn_cf.tmp.new $svn_cf.tmp],
1485 SVN_DB_HEADER="$SVN_DB_HEADER"])
1486 AC_CONFIG_FILES([Makefile])
1488 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1489 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1490 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1491 if test -e packages/solaris/pkginfo.in; then
1492 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1494 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1496 # Ensure that SWIG is checked after reconfiguration.
1499 dnl Provide ${host} for use in compiled code (for svn --version)
1500 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1501 [Defined to the config.guess name of the build system])
1503 dnl Provide ${target} for use in compiled code (for user-agent string)
1504 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1505 [Defined to the config.guess name of the build target])
1509 # ==== Print final messages to user ==========================================
1511 dnl Configure is long - users tend to miss warnings printed during it.
1512 dnl Hence, print a warnings about what we did and didn't configure at the
1513 dnl end, where people will actually see them.
1515 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1516 AC_MSG_WARN([We have configured without BDB filesystem support
1519 Berkeley DB 6 was found, but not used. Please re-run configure (see
1520 ./config.nice) with the '--enable-bdb6' flag to use it,
1521 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1522 to silence this warning.
1524 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1525 General Public License, version 3:
1526 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1528 The AGPL-3.0 licence may impose special requirements for making available
1529 source code of server-side software. The text of the licence is:
1530 https://www.gnu.org/licenses/agpl-3.0.html
1531 http://opensource.org/licenses/AGPL-3.0
1533 The Berkeley DB backend to Subversion is deprecated; see
1534 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1536 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1537 technical problems or bugs.