]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/subversion/configure.ac
Followup to r347996
[FreeBSD/FreeBSD.git] / contrib / subversion / configure.ac
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
8 dnl    
9 dnl       http://www.apache.org/licenses/LICENSE-2.0
10 dnl    
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.
17
18 dnl configure.ac: Autoconfiscation for Subversion
19 dnl Process this file with autoconf to produce a configure script.
20
21 AC_PREREQ(2.59)
22
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.
25 AC_INIT([subversion],
26      [esyscmd(python build/getversion.py SVN subversion/include/svn_version.h)],
27      [http://subversion.apache.org/])
28
29 AC_CONFIG_SRCDIR(subversion/include/svn_types.h)
30 AC_CONFIG_AUX_DIR([build])
31
32 AC_MSG_NOTICE([Configuring Subversion ]AC_PACKAGE_VERSION)
33
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=""
38 else
39   canonicalized_srcdir="$srcdir/"
40 fi
41 AC_SUBST([canonicalized_srcdir])
42
43 SWIG_LDFLAGS="$LDFLAGS"
44 AC_SUBST([SWIG_LDFLAGS])
45
46 # Generate config.nice early (before the arguments are munged)
47 SVN_CONFIG_NICE(config.nice)
48
49 # ==== Check for programs ====================================================
50
51 # Look for a C compiler (before anything can set CFLAGS)
52 CUSERFLAGS="$CFLAGS"
53 AC_PROG_CC
54 SVN_CC_MODE_SETUP
55
56 # Look for a C++ compiler (before anything can set CXXFLAGS)
57 CXXUSERFLAGS="$CXXFLAGS"
58 AC_PROG_CXX
59 SVN_CXX_MODE_SETUP
60
61 # Look for a C pre-processor
62 AC_PROG_CPP
63
64 # Look for a good sed
65 # AC_PROG_SED was introduced in Autoconf 2.59b
66 m4_ifdef([AC_PROG_SED], [AC_PROG_SED], [SED="${SED:-sed}"])
67
68 # Grab target_cpu, so we can use it in the Solaris pkginfo file
69 AC_CANONICAL_TARGET
70
71 # Look for an extended grep
72 AC_PROG_EGREP
73
74 AC_PROG_LN_S
75
76 AC_PROG_INSTALL
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"
82 fi
83
84 if test -z "$MKDIR"; then
85   MKDIR="$INSTALL -d"
86 fi
87 AC_SUBST([MKDIR])
88
89 # ==== Libraries, for which we may have source to build ======================
90
91 dnl verify apr version and set apr flags
92 dnl These regular expressions should not contain "\(" and "\)".
93
94 APR_VER_REGEXES=["1\.[3-9]\. 2\."]
95
96 SVN_LIB_APR($APR_VER_REGEXES)
97
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)
101   svn_lib_ver=2
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
108 else
109   svn_lib_ver=0
110   APU_VER_REGEXES=["1\.[3-9]\."]
111   SVN_LIB_APRUTIL($APU_VER_REGEXES)
112   SVN_APR_MAJOR_VERSION=1
113 fi
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])
119
120 dnl Search for pkg-config
121 AC_PATH_PROG(PKG_CONFIG, pkg-config)
122
123 dnl Search for serf
124 SVN_LIB_SERF(1,3,4)
125
126 if test "$svn_lib_serf" = "yes"; then
127   AC_DEFINE([SVN_HAVE_SERF], 1,
128             [Defined if support for Serf is enabled])
129 fi
130
131 dnl Search for apr_memcache (only affects fs_fs)
132 SVN_LIB_APR_MEMCACHE
133
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])
137 fi
138
139 AC_ARG_ENABLE(apache-whitelist,
140   AS_HELP_STRING([--enable-apache-whitelist=VER],
141                  [Whitelist a particular Apache version number,
142                   typically used to enable the use of a old version
143                   patched by a distribution.]),
144                  [apache_whitelist_ver=$enableval],
145                  [apache_whitelist_ver=no])
146 HTTPD_WHITELIST="$apache_whitelist_ver"
147 AC_SUBST(HTTPD_WHITELIST)
148
149 dnl Find Apache with a recent-enough magic module number
150 SVN_FIND_APACHE(20051115, $apache_whitelist_ver)
151
152 dnl Search for SQLite.  If you change SQLITE_URL from a .zip to
153 dnl something else also update build/ac-macros/sqlite.m4 to reflect
154 dnl the correct command to unpack the downloaded file.
155 SQLITE_MINIMUM_VER="3.8.2"
156 SQLITE_RECOMMENDED_VER="3.8.11.1"
157 dnl Used to construct the SQLite download URL.
158 SQLITE_RECOMMENDED_VER_REL_YEAR="2015"
159 SQLITE_URL="https://www.sqlite.org/$SQLITE_RECOMMENDED_VER_REL_YEAR/sqlite-amalgamation-$(printf %d%02d%02d%02d $(echo ${SQLITE_RECOMMENDED_VER} | sed -e 's/\./ /g')).zip"
160
161 SVN_LIB_SQLITE(${SQLITE_MINIMUM_VER}, ${SQLITE_RECOMMENDED_VER},
162                ${SQLITE_URL})
163
164 AC_ARG_ENABLE(sqlite-compatibility-version,
165   AS_HELP_STRING([--enable-sqlite-compatibility-version=X.Y.Z],
166                  [Allow binary to run against SQLite as old as ARG]),
167   [sqlite_compat_ver=$enableval],[sqlite_compat_ver=no])
168
169 if test -n "$sqlite_compat_ver" && test "$sqlite_compat_ver" != no; then
170   SVN_SQLITE_VERNUM_PARSE([$sqlite_compat_ver],
171                           [sqlite_compat_ver_num])
172   CFLAGS="-DSVN_SQLITE_MIN_VERSION='\"$sqlite_compat_ver\"' $CFLAGS"
173   CFLAGS="-DSVN_SQLITE_MIN_VERSION_NUMBER=$sqlite_compat_ver_num $CFLAGS"
174 fi
175
176 SVN_CHECK_FOR_ATOMIC_BUILTINS
177 if test "$svn_cv_atomic_builtins" = "yes"; then
178     AC_DEFINE(SVN_HAS_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins])
179 fi
180
181 dnl Set up a number of directories ---------------------
182
183 dnl Create SVN_BINDIR for proper substitution
184 if test "${bindir}" = '${exec_prefix}/bin'; then
185         if test "${exec_prefix}" = "NONE"; then
186                 if test "${prefix}" = "NONE"; then
187                         SVN_BINDIR="${ac_default_prefix}/bin"
188                 else
189                         SVN_BINDIR="${prefix}/bin"
190                 fi
191         else
192                 SVN_BINDIR="${exec_prefix}/bin"
193         fi
194 else
195         SVN_BINDIR="${bindir}"
196 fi
197
198 dnl fully evaluate this value. when we substitute it into our tool scripts,
199 dnl they will not have things such as ${bindir} available
200 SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
201 AC_SUBST(SVN_BINDIR)
202
203 dnl provide ${bindir} in svn_private_config.h for use in compiled code
204 AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
205         [Defined to be the path to the installed binaries])
206
207 dnl This purposely does *not* allow for multiple parallel installs.
208 dnl However, it is compatible with most gettext usages.
209 localedir='${datadir}/locale'
210 AC_SUBST(localedir)
211
212 dnl For SVN_LOCALE_DIR, we have to expand it to something.  See SVN_BINDIR.
213 if test "${prefix}" = "NONE" \
214   && ( test "${datadir}" = '${prefix}/share' \
215        || ( test "${datadir}" = '${datarootdir}' \
216             && test "${datarootdir}" = '${prefix}/share' ) ); then
217   exp_localedir='${ac_default_prefix}/share/locale'
218 else
219   exp_localedir=$localedir
220 fi
221 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
222 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
223                    [Defined to be the path to the installed locale dirs])
224
225 dnl Check for libtool -- we'll definitely need it for all our shared libs!
226 AC_MSG_NOTICE([configuring libtool now])
227 ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL])
228 AC_ARG_ENABLE(experimental-libtool,
229   AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
230   [experimental_libtool=$enableval],[experimental_libtool=no])
231
232 if test "$experimental_libtool" = "yes"; then
233   echo "using APR's libtool"
234   sh_libtool="`$apr_config --apr-libtool`"
235   LIBTOOL="$sh_libtool"
236   SVN_LIBTOOL="$sh_libtool"
237 else
238   sh_libtool="$abs_builddir/libtool"
239   SVN_LIBTOOL="\$(SHELL) \"$sh_libtool\""
240 fi
241 AC_SUBST(SVN_LIBTOOL)
242
243 dnl Determine the libtool version
244 changequote(, )dnl
245 lt_pversion=`$LIBTOOL --version 2>/dev/null|$SED -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
246 lt_version=`echo $lt_pversion|$SED -e 's/\([a-z]*\)$/.\1/'`
247 lt_major_version=`echo $lt_version | cut -d'.' -f 1`
248 changequote([, ])dnl
249
250 dnl set the default parameters
251 svn_enable_static=yes
252 svn_enable_shared=yes
253
254 dnl check for --enable-static option
255 AC_ARG_ENABLE(static,
256   AS_HELP_STRING([--enable-static],
257                  [Build static libraries]),
258   [svn_enable_static="$enableval"], [svn_enable_static="yes"])
259
260 dnl check for --enable-shared option
261 AC_ARG_ENABLE(shared,
262   AS_HELP_STRING([--enable-shared],
263                  [Build shared libraries]),
264   [svn_enable_shared="$enableval"], [svn_enable_shared="yes"])
265
266 if test "$svn_enable_static" = "yes" && test "$svn_enable_shared" = "yes" ; then
267   AC_MSG_NOTICE([building both shared and static libraries])
268 elif test "$svn_enable_static" = "yes" ; then
269   AC_MSG_NOTICE([building static libraries only])
270   LT_CFLAGS="-static $LT_CFLAGS"
271   LT_LDFLAGS="-static $LT_LDFLAGS"
272 elif test "$svn_enable_shared" = "yes" ; then
273   AC_MSG_NOTICE([building shared libraries only])
274   if test "$lt_major_version" = "1" ; then
275     LT_CFLAGS="-prefer-pic $LT_CFLAGS"
276   elif test "$lt_major_version" = "2" ; then
277     LT_CFLAGS="-shared $LT_CFLAGS"
278   fi
279   LT_LDFLAGS="-shared $LT_LDFLAGS"
280 else
281   AC_MSG_ERROR([cannot disable both shared and static libraries])
282 fi
283
284 dnl Check for --enable-all-static option
285 AC_ARG_ENABLE(all-static,
286   AS_HELP_STRING([--enable-all-static],
287                  [Build completely static (standalone) binaries.]),
288   [
289     if test "$enableval" = "yes" ; then
290       LT_LDFLAGS="-all-static $LT_LDFLAGS"
291     elif test "$enableval" != "no" ; then
292       AC_MSG_ERROR([--enable-all-static doesn't accept argument])
293     fi
294 ])
295
296 AC_SUBST(LT_CFLAGS)
297 AC_SUBST(LT_LDFLAGS)
298
299 AC_ARG_ENABLE(local-library-preloading,
300   AS_HELP_STRING([--enable-local-library-preloading], 
301                  [Enable preloading of locally built libraries in locally
302                   built executables.  This may be necessary for testing
303                   prior to installation on some platforms.  It does not
304                   work on some platforms (Darwin, OpenBSD, ...).]),
305   [
306   if test "$enableval" != "no"; then
307     if test "$svn_enable_shared" = "yes"; then
308       TRANSFORM_LIBTOOL_SCRIPTS="transform-libtool-scripts"
309     else
310       AC_MSG_ERROR([--enable-local-library-preloading conflicts with --disable-shared])
311     fi
312   else
313     TRANSFORM_LIBTOOL_SCRIPTS=""
314   fi
315   ], [
316   TRANSFORM_LIBTOOL_SCRIPTS=""
317 ])
318 AC_SUBST(TRANSFORM_LIBTOOL_SCRIPTS)
319
320 dnl Check if -no-undefined is needed for the platform.
321 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
322 dnl So we only turn it on for platforms where we know we really need it.
323 AC_MSG_CHECKING([whether libtool needs -no-undefined])
324 case $host in
325   *-*-cygwin*)
326     AC_MSG_RESULT([yes])
327     LT_NO_UNDEFINED="-no-undefined"
328     ;;
329   *)
330     AC_MSG_RESULT([no])
331     LT_NO_UNDEFINED=""
332     ;;
333 esac
334 AC_SUBST(LT_NO_UNDEFINED)
335
336 dnl Check for trang.
337 trang=yes
338 AC_ARG_WITH(trang,
339 AS_HELP_STRING([--with-trang=PATH],
340                [Specify the command to run the trang schema converter]),
341 [
342     trang="$withval"
343 ])
344 if test "$trang" = "yes"; then
345     AC_PATH_PROG(TRANG, trang, none)
346 else
347     TRANG="$trang"
348     AC_SUBST(TRANG)
349 fi
350
351 dnl Check for doxygen
352 doxygen=yes
353 AC_ARG_WITH(doxygen,
354 AC_HELP_STRING([--with-doxygen=PATH],
355                [Specify the command to run doxygen]),
356 [
357     doxygen="$withval"
358 ])
359 if test "$doxygen" = "yes"; then
360     AC_PATH_PROG(DOXYGEN, doxygen, none)
361 else
362     DOXYGEN="$doxygen"
363     AC_SUBST(DOXYGEN)
364 fi
365
366
367 dnl Check for libraries --------------------
368
369 dnl Expat -------------------
370
371 AC_ARG_WITH(expat,
372   AS_HELP_STRING([--with-expat=INCLUDES:LIB_SEARCH_DIRS:LIBS], 
373                  [Specify location of Expat]),
374                  [svn_lib_expat="$withval"],
375                  [svn_lib_expat="::expat"])
376
377 # APR-util accepts "builtin" as an argument to this option so if the user
378 # passed "builtin" pretend the user didn't specify the --with-expat option
379 # at all. Expat will (hopefully) be found in apr-util.
380 test "_$svn_lib_expat" = "_builtin" && svn_lib_expat="::expat"
381
382 AC_MSG_CHECKING([for Expat])
383 if test -n "`echo "$svn_lib_expat" | $EGREP ":.*:"`"; then
384   SVN_XML_INCLUDES=""
385   for i in [`echo "$svn_lib_expat" | $SED -e "s/\([^:]*\):.*/\1/"`]; do
386     SVN_XML_INCLUDES="$SVN_XML_INCLUDES -I$i"
387   done
388   SVN_XML_INCLUDES="${SVN_XML_INCLUDES## }"
389   for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\):.*/\1/"`]; do
390     LDFLAGS="$LDFLAGS -L$l"
391   done
392   for l in [`echo "$svn_lib_expat" | $SED -e "s/.*:\([^:]*\)/\1/"`]; do
393     SVN_XML_LIBS="$SVN_XML_LIBS -l$l"
394   done
395   SVN_XML_LIBS="${SVN_XML_LIBS## }"
396   old_CPPFLAGS="$CPPFLAGS"
397   old_LIBS="$LIBS"
398   CPPFLAGS="$CPPFLAGS $SVN_XML_INCLUDES"
399   LIBS="$LIBS $SVN_XML_LIBS"
400   AC_LINK_IFELSE([AC_LANG_SOURCE([[
401 #include <expat.h>
402 int main()
403 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
404   LIBS="$old_LIBS"
405   if test "$svn_lib_expat" = "yes"; then
406     AC_MSG_RESULT([yes])
407   else
408     SVN_XML_INCLUDES=""
409     SVN_XML_LIBS=""
410     CPPFLAGS="$CPPFLAGS $SVN_APRUTIL_INCLUDES"
411     if test "$enable_all_static" != "yes"; then
412       SVN_APRUTIL_LIBS="$SVN_APRUTIL_LIBS `$apu_config --libs`"
413     fi
414     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
415 #include <expat.h>
416 int main()
417 {XML_ParserCreate(NULL);}]])], svn_lib_expat="yes", svn_lib_expat="no")
418     if test "$svn_lib_expat" = "yes"; then
419       AC_MSG_RESULT([yes])
420       AC_MSG_WARN([Expat found amongst libraries used by APR-Util, but Subversion libraries might be needlessly linked against additional unused libraries. It can be avoided by specifying exact location of Expat in argument of --with-expat option.])
421     else
422       AC_MSG_RESULT([no])
423       AC_MSG_ERROR([Expat not found])
424     fi
425   fi
426   CPPFLAGS="$old_CPPFLAGS"
427 else
428   AC_MSG_RESULT([no])
429   if test "$svn_lib_expat" = "yes"; then
430     AC_MSG_ERROR([--with-expat option requires argument])
431   elif test "$svn_lib_expat" = "no"; then
432     AC_MSG_ERROR([Expat is required])
433   else
434     AC_MSG_ERROR([Invalid syntax of argument of --with-expat option])
435   fi
436 fi
437 AC_SUBST(SVN_XML_INCLUDES)
438 AC_SUBST(SVN_XML_LIBS)
439
440 dnl Berkeley DB -------------------
441
442 # Berkeley DB on SCO OpenServer needs -lsocket
443 AC_CHECK_LIB(socket, socket)
444
445 # Build the BDB filesystem library only if we have an appropriate
446 # version of Berkeley DB.
447 case "$host" in
448 powerpc-apple-darwin*)
449     # Berkeley DB 4.0 does not work on OS X.
450     SVN_FS_WANT_DB_MAJOR=4
451     SVN_FS_WANT_DB_MINOR=1
452     SVN_FS_WANT_DB_PATCH=25
453     ;;
454 *)
455     SVN_FS_WANT_DB_MAJOR=4
456     SVN_FS_WANT_DB_MINOR=0
457     SVN_FS_WANT_DB_PATCH=14
458     ;;
459 esac
460 db_alt_version="5.x"
461 # Look for libdb4.so first:
462 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
463                     $SVN_FS_WANT_DB_PATCH, [db4 db])
464
465 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
466                    [The desired major version for the Berkeley DB])
467 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
468                    [The desired minor version for the Berkeley DB])
469 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
470                    [The desired patch version for the Berkeley DB])
471
472 AC_SUBST(SVN_DB_INCLUDES)
473 AC_SUBST(SVN_DB_LIBS)
474
475 SVN_LIB_SASL
476
477 if test "$svn_lib_sasl" = "yes"; then
478   AC_DEFINE(SVN_HAVE_SASL, 1,
479             [Defined if Cyrus SASL v2 is present on the system])
480 fi
481
482 dnl Mac OS specific features -------------------
483
484 SVN_LIB_MACHO_ITERATE
485 SVN_LIB_MACOS_PLIST
486 SVN_LIB_MACOS_KEYCHAIN
487
488 dnl APR_HAS_DSO -------------------
489
490 AC_MSG_CHECKING([whether APR has support for DSOs])
491 old_CPPFLAGS="$CPPFLAGS"
492 CPPFLAGS="$CPPFLAGS $SVN_APR_INCLUDES"
493 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
494 #include <apr.h>
495 #if !APR_HAS_DSO
496 #error
497 #endif]])],
498   APR_HAS_DSO="yes"
499   AC_MSG_RESULT([yes]),
500   APR_HAS_DSO="no"
501   AC_MSG_RESULT([no]))
502 CPPFLAGS="$old_CPPFLAGS"
503
504
505 dnl D-Bus (required for support for KWallet) -------------------
506
507 if test -n "$PKG_CONFIG"; then
508   AC_MSG_CHECKING([for D-Bus .pc file])
509   if $PKG_CONFIG --exists dbus-1; then
510     AC_MSG_RESULT([yes])
511     old_CPPFLAGS="$CPPFLAGS"
512     old_LIBS="$LIBS"
513     DBUS_CPPFLAGS="`$PKG_CONFIG --cflags dbus-1`"
514     AC_MSG_CHECKING([D-Bus version])
515     DBUS_VERSION="`$PKG_CONFIG --modversion dbus-1`"
516     AC_MSG_RESULT([$DBUS_VERSION])
517     # D-Bus 0.* requires DBUS_API_SUBJECT_TO_CHANGE
518     if test -n ["`echo "$DBUS_VERSION" | $EGREP '^0\.[[:digit:]]+'`"]; then
519       DBUS_CPPFLAGS="$DBUS_CPPFLAGS -DDBUS_API_SUBJECT_TO_CHANGE"
520     fi
521     DBUS_LIBS="`$PKG_CONFIG --libs dbus-1`"
522     CPPFLAGS="$CPPFLAGS $DBUS_CPPFLAGS"
523     LIBS="$LIBS $DBUS_LIBS"
524     AC_MSG_CHECKING([for D-Bus])
525     AC_LINK_IFELSE([AC_LANG_SOURCE([[
526 #include <dbus/dbus.h>
527 int main()
528 {dbus_bus_get(DBUS_BUS_SESSION, NULL);}]])], HAVE_DBUS="yes", HAVE_DBUS="no")
529     if test "$HAVE_DBUS" = "yes"; then
530       AC_MSG_RESULT([yes])
531     else
532       AC_MSG_RESULT([no])
533     fi
534     CPPFLAGS="$old_CPPFLAGS"
535     LIBS="$old_LIBS"
536   else
537     AC_MSG_RESULT([no])
538   fi
539 fi
540
541 dnl GPG Agent -------------------
542
543 AC_ARG_WITH(gpg_agent,
544 AS_HELP_STRING([--without-gpg-agent], 
545                [Disable support for GPG-Agent]),
546                [], [with_gpg_agent=yes])
547 AC_MSG_CHECKING([whether to support GPG-Agent])
548 if test "$with_gpg_agent" = "yes"; then
549   AC_MSG_RESULT([yes])
550   AC_DEFINE([SVN_HAVE_GPG_AGENT], [1], 
551             [Is GPG Agent support enabled?])
552 else
553   AC_MSG_RESULT([no])
554 fi
555
556 AC_SUBST(SVN_HAVE_GPG_AGENT)
557
558 dnl GNOME Keyring -------------------
559
560 AC_ARG_WITH(old_gnome_keyring,
561   AS_HELP_STRING([--with-old-gnome-keyring], 
562                  [Enable old GNOME Keyring for auth credentials (prefer --with-gnome-keyring)]),
563                  [with_old_gnome_keyring="$withval"],
564                  [with_old_gnome_keyring=no])
565
566 found_old_gnome_keyring=no
567 AC_MSG_CHECKING([whether to look for old GNOME Keyring])
568 if test "$with_old_gnome_keyring" != "no"; then
569   AC_MSG_RESULT([yes])
570   case "$host" in
571   *-*-darwin*)
572     if test "$with_old_gnome_keyring" = "yes"; then
573       AC_MSG_ERROR([--with-old-gnome-keyring is not supported on Mac OS X.])
574     else
575       with_old_gnome_keyring=no
576     fi
577     ;;
578   *)
579     if test "$svn_enable_shared" = "yes"; then
580       if test "$APR_HAS_DSO" = "yes"; then
581         if test -n "$PKG_CONFIG"; then
582           AC_MSG_CHECKING([for GLib and GNOME Keyring .pc files])
583           if $PKG_CONFIG --exists glib-2.0 gnome-keyring-1; then
584             AC_MSG_RESULT([yes])
585             old_CPPFLAGS="$CPPFLAGS"
586             SVN_GNOME_KEYRING_INCLUDES="`$PKG_CONFIG --cflags glib-2.0 gnome-keyring-1`"
587             CPPFLAGS="$CPPFLAGS $SVN_GNOME_KEYRING_INCLUDES"
588             AC_CHECK_HEADER(gnome-keyring.h, found_old_gnome_keyring=yes, found_old_gnome_keyring=no)
589             AC_MSG_CHECKING([for GNOME Keyring])
590             if test "$found_old_gnome_keyring" = "yes"; then
591               AC_MSG_RESULT([yes])
592               AC_DEFINE([SVN_HAVE_GNOME_KEYRING], [1], 
593                         [Is GNOME Keyring support enabled?])
594               CPPFLAGS="$old_CPPFLAGS"
595               SVN_GNOME_KEYRING_LIBS="`$PKG_CONFIG --libs glib-2.0 gnome-keyring-1`"
596             else
597               AC_MSG_RESULT([no])
598               if test "$with_old_gnome_keyring" = "yes"; then
599                 AC_MSG_ERROR([cannot find GNOME Keyring])
600               fi
601             fi
602           else
603             AC_MSG_RESULT([no])
604             if test "$with_old_gnome_keyring" = "yes"; then
605               AC_MSG_ERROR([cannot find GLib and GNOME Keyring .pc files.])
606             else
607               with_old_gnome_keyring=no
608             fi
609           fi
610         else
611           if test "$with_old_gnome_keyring" = "yes"; then
612             AC_MSG_ERROR([cannot find pkg-config. GNOME Keyring requires this.])
613           else
614             with_old_gnome_keyring=no
615           fi
616         fi
617       else
618         if test "$with_old_gnome_keyring" = "yes"; then
619           AC_MSG_ERROR([APR does not have support for DSOs. GNOME Keyring requires this.])
620         else
621           with_old_gnome_keyring=no
622         fi
623       fi
624     else
625       if test "$with_old_gnome_keyring" = "yes"; then
626         AC_MSG_ERROR([--with-old-gnome-keyring conflicts with --disable-shared])
627       else
628         with_old_gnome_keyring=no
629       fi
630     fi
631     ;;
632   esac
633 else
634   AC_MSG_RESULT([no])
635 fi
636 AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
637 AC_SUBST(SVN_GNOME_KEYRING_LIBS)
638
639 dnl LibSecret -------------------
640 SVN_LIB_SECRET
641
642 dnl Googlemock -----------------
643 AC_ARG_ENABLE([googlemock],
644   AS_HELP_STRING([--disable-googlemock],
645                  [Do not use the Googlemock testing framework]),
646   [],
647   [enable_googlemock=yes])
648
649 AC_SUBST([GOOGLEMOCK_SRCDIR], [$abs_srcdir/googlemock])
650 AC_MSG_CHECKING([whether use Googlemock])
651 if test "$enable_googlemock" != "no"; then
652   if test -d "$GOOGLEMOCK_SRCDIR"; then
653     AC_MSG_RESULT([yes])
654     SVN_USE_GOOGLEMOCK=true
655   else
656     AC_MSG_RESULT([no])
657     SVN_USE_GOOGLEMOCK=false
658   fi
659 else
660   AC_MSG_RESULT([no])
661   SVN_USE_GOOGLEMOCK=false
662 fi
663 AC_SUBST([SVN_USE_GOOGLEMOCK])
664
665 dnl Ev2 experimental features ----------------------
666 dnl Note: The Ev2 implementations will be built unconditionally, but by
667 dnl providing this flag, users can choose to use the currently-shimmed Ev2
668 dnl editor implementations for various operations.  This will probably
669 dnl negatively impact performance, but is useful for testing.
670 AC_ARG_ENABLE(ev2-impl,
671   AS_HELP_STRING([--enable-ev2-impl],
672                  [Use Ev2 implementations, where available [EXPERIMENTAL]]),
673   [enable_ev2_impl=$enableval],[enable_ev2_impl=no])
674 if test "$enable_ev2_impl" = "yes"; then
675   AC_DEFINE(ENABLE_EV2_IMPL, 1,
676             [Define to 1 if Ev2 implementations should be used.])
677 fi
678
679
680 dnl I18n -------------------
681
682 AC_ARG_ENABLE(nls,
683   AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
684   [enable_nls=$enableval],[enable_nls=yes])
685
686 USE_NLS="no"
687 SVN_INTL_LIBS=""
688 if test "$enable_nls" = "yes"; then
689   dnl First, check to see if there is a working msgfmt.
690   AC_PATH_PROG(MSGFMT, msgfmt, none)
691   AC_PATH_PROG(MSGMERGE, msgmerge, none)
692   AC_PATH_PROG(XGETTEXT, xgettext, none)
693   if test "$MSGFMT" != "none"; then
694     AC_SEARCH_LIBS(bindtextdomain, [intl],
695                    [
696                       # in case libintl needs to be linked explicitly,
697                       # $ac_cv_search_bindtextdomain contains -l linker flags
698                       if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
699                       then
700                         SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
701                       fi
702                    ],
703                    [
704                     enable_nls="no"
705                    ])
706     if test "$enable_nls" = "no"; then
707       # Destroy the cached result so we can test again
708       unset ac_cv_search_bindtextdomain
709       # On some systems, libintl needs libiconv to link properly,
710       # so try again with -liconv.
711       AC_SEARCH_LIBS(bindtextdomain, [intl],
712                      [
713                       enable_nls="yes"
714                       if echo "$ac_cv_search_bindtextdomain" | grep '^-l' >/dev/null
715                       then
716                         SVN_INTL_LIBS="$ac_cv_search_bindtextdomain"
717                       fi
718                       # This is here so that -liconv ends up in LIBS
719                       # if it worked with -liconv.
720                       AC_CHECK_LIB(iconv, libiconv_open)
721                      ], 
722                      [
723                       AC_MSG_WARN([bindtextdomain() not found.  Disabling NLS.])
724                       enable_nls="no"
725                      ], -liconv)
726     fi
727     if test "$enable_nls" = "yes"; then
728       AC_DEFINE(ENABLE_NLS, 1,
729                 [Define to 1 if translation of program messages to the user's
730                  native language is requested.])
731       USE_NLS="yes"
732     fi
733   fi
734 fi
735
736 AC_SUBST(SVN_INTL_LIBS)
737
738 AH_BOTTOM([
739 /* Indicate to translators that string X should be translated.  Do not look
740    up the translation at run time; just expand to X.  This macro is suitable
741    for use where a constant string is required at compile time. */
742 #define N_(x) x
743 /* Indicate to translators that we have decided the string X should not be
744    translated.  Expand to X. */
745 #define U_(x) x
746 #ifdef ENABLE_NLS
747 #include <locale.h>
748 #include <libintl.h>
749 /* Indicate to translators that string X should be translated.  At run time,
750    look up and return the translation of X. */
751 #define _(x) dgettext(PACKAGE_NAME, x)
752 /* Indicate to translators that strings X1 and X2 are singular and plural
753    forms of the same message, and should be translated.  At run time, return
754    an appropriate translation depending on the number N. */
755 #define Q_(x1, x2, n) dngettext(PACKAGE_NAME, x1, x2, n)
756 #else
757 #define _(x) (x)
758 #define Q_(x1, x2, n) (((n) == 1) ? x1 : x2)
759 #define gettext(x) (x)
760 #define dgettext(domain, x) (x)
761 #endif
762
763 /* compiler hints */
764 #if defined(__GNUC__) && (__GNUC__ >= 3)
765 # define SVN__PREDICT_FALSE(x) (__builtin_expect(x, 0))
766 # define SVN__PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
767 #else
768 # define SVN__PREDICT_FALSE(x) (x)
769 # define SVN__PREDICT_TRUE(x) (x)
770 #endif
771
772 #if defined(SVN_DEBUG)
773 # define SVN__FORCE_INLINE
774 # define SVN__PREVENT_INLINE
775 #elif defined(__GNUC__)
776 # define SVN__FORCE_INLINE APR_INLINE __attribute__ ((always_inline))
777 # define SVN__PREVENT_INLINE __attribute__ ((noinline))
778 #else
779 # define SVN__FORCE_INLINE APR_INLINE
780 # define SVN__PREVENT_INLINE
781 #endif
782
783 /* Macro used to specify that a variable is intentionally left unused.
784    Supresses compiler warnings about the variable being unused.  */
785 #define SVN_UNUSED(v) ( (void)(v) )
786 ])
787
788 dnl Used to simulate makefile conditionals.
789 GETTEXT_CODESET=\#
790 NO_GETTEXT_CODESET=\#
791 if test $USE_NLS = "yes"; then
792    AC_CHECK_FUNCS(bind_textdomain_codeset,
793                   [ GETTEXT_CODESET="" ],
794                   [ NO_GETTEXT_CODESET="" ])
795 fi
796 AC_SUBST(GETTEXT_CODESET)
797 AC_SUBST(NO_GETTEXT_CODESET)
798
799 # Check if we are using GNU gettext.
800 GNU_GETTEXT=no
801 MSGFMTFLAGS=''
802 if test $USE_NLS = "yes"; then
803    AC_MSG_CHECKING(if we are using GNU gettext)
804    if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
805       GNU_GETTEXT=yes
806       MSGFMTFLAGS='-c'
807    fi
808    AC_MSG_RESULT($GNU_GETTEXT)
809 fi
810 AC_SUBST(MSGFMTFLAGS)
811
812 dnl libmagic -------------------
813
814 libmagic_found=no
815
816 AC_ARG_WITH(libmagic,AS_HELP_STRING([--with-libmagic=PREFIX],
817                                 [libmagic filetype detection library]),
818 [
819   if test "$withval" = "yes" ; then
820     AC_CHECK_HEADER(magic.h, [
821       AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
822     ])
823     libmagic_prefix="the default locations"
824   elif test "$withval" != "no"; then
825     libmagic_prefix=$withval
826     save_cppflags="$CPPFLAGS"
827     CPPFLAGS="$CPPFLAGS -I$libmagic_prefix/include"
828     AC_CHECK_HEADERS(magic.h,[
829       save_ldflags="$LDFLAGS"
830       LDFLAGS="-L$libmagic_prefix/lib $LDFLAGS"
831       AC_CHECK_LIB(magic, magic_open, [libmagic_found="yes"])
832       LDFLAGS="$save_ldflags"
833     ])
834     CPPFLAGS="$save_cppflags"
835   fi
836   if test "$withval" != "no" && test "$libmagic_found" = "no"; then
837     AC_MSG_ERROR([[--with-libmagic requested, but libmagic not found at $libmagic_prefix]])
838   fi
839 ],
840 [
841   AC_CHECK_HEADER(magic.h, [
842     AC_CHECK_LIB(magic, magic_open, [libmagic_found="builtin"])
843   ])
844 ])
845
846 if test "$libmagic_found" != "no"; then
847   AC_DEFINE([SVN_HAVE_LIBMAGIC], [1], [Defined if libmagic support is enabled])
848   SVN_MAGIC_LIBS="-lmagic"
849 fi
850
851 if test "$libmagic_found" = "yes"; then
852   SVN_MAGIC_INCLUDES="-I$libmagic_prefix/include"
853   LDFLAGS="$LDFLAGS `SVN_REMOVE_STANDARD_LIB_DIRS(-L$libmagic_prefix/lib)`"
854 fi
855
856 AC_SUBST(SVN_MAGIC_INCLUDES)
857 AC_SUBST(SVN_MAGIC_LIBS)
858
859 dnl KWallet -------------------
860 SVN_LIB_KWALLET
861
862 if test "$svn_lib_kwallet" = "yes"; then
863   AC_DEFINE([SVN_HAVE_KWALLET], 1,
864             [Defined if KWallet support is enabled])
865 fi
866
867 dnl plaintext passwords -------------------
868 AC_ARG_ENABLE(plaintext-password-storage,
869 AS_HELP_STRING([--disable-plaintext-password-storage],
870                [Disable on-disk caching of plaintext passwords and passphrases.
871                 (Leaving this functionality enabled will not force Subversion
872                 to store passwords in plaintext, but does permit users to
873                 explicitly allow that behavior via runtime configuration.)]),
874 [
875    if test "$enableval" = "no"; then
876       AC_MSG_NOTICE([Disabling plaintext password/passphrase storage])
877       AC_DEFINE(SVN_DISABLE_PLAINTEXT_PASSWORD_STORAGE, 1,
878                 [Defined if plaintext password/passphrase storage is disabled])
879    fi
880 ])
881
882 dnl Build and install rules -------------------
883
884 INSTALL_STATIC_RULES="install-bin install-docs"
885 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
886 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
887 BUILD_RULES="fsmod-lib ramod-lib lib bin test sub-test $BUILD_APACHE_RULE tools"
888
889 if test "$svn_lib_berkeley_db" = "yes"; then
890   BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
891   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
892   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
893   BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
894   BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
895 fi
896
897 if test "$svn_lib_serf" = "yes"; then
898   BUILD_RULES="$BUILD_RULES serf-lib"
899   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
900   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
901 fi
902
903 if test "$svn_lib_kwallet" = "yes"; then
904   BUILD_RULES="$BUILD_RULES kwallet-lib"
905   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-kwallet-lib/'`"
906   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
907 fi
908
909 if test "$found_old_gnome_keyring" = "yes" || test "$found_gnome_keyring" = "yes"; then
910   BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
911   INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib install-gnome-keyring-lib/'`"
912   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gnome-keyring-lib"
913 fi
914
915 if test "$USE_NLS" = "yes"; then
916   BUILD_RULES="$BUILD_RULES locale"
917   INSTALL_RULES="$INSTALL_RULES install-locale"
918 fi
919
920 AC_SUBST(BUILD_RULES)
921 AC_SUBST(INSTALL_STATIC_RULES)
922 AC_SUBST(INSTALL_RULES)
923 AC_SUBST(BDB_TEST_DEPS)
924 AC_SUBST(BDB_TEST_PROGRAMS)
925
926 dnl Check for header files ----------------
927
928 dnl Standard C headers
929 AC_HEADER_STDC
930
931 dnl Check for typedefs, structures, and compiler characteristics ----------
932
933 dnl if compiler doesn't understand `const', then define it empty
934 AC_C_CONST
935
936 dnl if non-existent, define size_t to be `unsigned'
937 AC_TYPE_SIZE_T
938
939
940 dnl Check for library functions ----------
941
942 AC_FUNC_MEMCMP
943
944 dnl svn_error's default warning handler uses vfprintf()
945 AC_FUNC_VPRINTF
946
947 dnl check for functions needed in special file handling
948 AC_CHECK_FUNCS(symlink readlink)
949
950 dnl check for uname
951 AC_CHECK_HEADERS(sys/utsname.h, [AC_CHECK_FUNCS(uname)], [])
952
953 dnl check for termios
954 AC_CHECK_HEADER(termios.h,[
955   AC_CHECK_FUNCS(tcgetattr tcsetattr,[
956     AC_DEFINE(HAVE_TERMIOS_H,1,[Defined if we have a usable termios library.])
957   ])
958 ])
959
960 dnl Process some configuration options ----------
961
962 AC_ARG_ENABLE(debug,
963 AS_HELP_STRING([--enable-debug],
964                [Turn on debugging]),
965 [
966     if test "$enableval" = "yes" ; then
967       enable_debugging="yes"
968     else
969       enable_debugging="no"
970     fi
971 ],
972 [
973     # Neither --enable-debug nor --disable-debug was passed.
974     enable_debugging="maybe"
975 ])
976
977 AC_ARG_ENABLE(optimize,
978 AS_HELP_STRING([--enable-optimize],
979                [Turn on optimizations]),
980 [
981     if test "$enableval" = "yes" ; then
982       enable_optimization="yes"
983     else
984       enable_optimization="no"
985     fi
986 ],
987 [
988     # Neither --enable-optimize nor --disable-optimize was passed.
989     enable_optimization="maybe"
990 ])
991
992 dnl Use -Wl,--no-undefined during linking of some libraries
993 AC_ARG_ENABLE(disallowing-of-undefined-references,
994   [AS_HELP_STRING([--enable-disallowing-of-undefined-references],
995                   [Use -Wl,--no-undefined flag during linking of some libraries to disallow undefined references])])
996 if test "$enable_disallowing_of_undefined_references" != "yes" && test "`uname`" != "Linux"; then
997   enable_disallowing_of_undefined_references="no"
998 fi
999 if test "$enable_disallowing_of_undefined_references" != "no"; then
1000   AC_MSG_CHECKING([for -Wl,--no-undefined])
1001   old_LDFLAGS="$LDFLAGS"
1002   LDFLAGS="$LDFLAGS -Wl,--no-undefined"
1003   AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(){;}]])], [svn_wl_no_undefined="yes"], [svn_wl_no_undefined="no"])
1004   LDFLAGS="$old_LDFLAGS"
1005   if test "$svn_wl_no_undefined" = "yes"; then
1006     AC_MSG_RESULT([yes])
1007     for library_dir in "$abs_srcdir/subversion/libsvn_"*; do
1008       eval "`basename $library_dir`_LDFLAGS=-Wl,--no-undefined"
1009     done
1010     shared_only_LDFLAGS="-Wl,--no-undefined"
1011   else
1012     AC_MSG_RESULT([no])
1013     if test "$enable_disallowing_of_undefined_references" = "yes"; then
1014       AC_MSG_ERROR([--enable-disallowing-of-undefined-references explicitly requested, but -Wl,--no-undefined not supported])
1015     fi
1016   fi
1017 fi
1018 AC_SUBST([libsvn_client_LDFLAGS])
1019 AC_SUBST([libsvn_delta_LDFLAGS])
1020 AC_SUBST([libsvn_diff_LDFLAGS])
1021 AC_SUBST([libsvn_fs_LDFLAGS])
1022 AC_SUBST([libsvn_fs_base_LDFLAGS])
1023 AC_SUBST([libsvn_fs_fs_LDFLAGS])
1024 AC_SUBST([libsvn_fs_util_LDFLAGS])
1025 AC_SUBST([libsvn_ra_LDFLAGS])
1026 AC_SUBST([libsvn_ra_local_LDFLAGS])
1027 AC_SUBST([libsvn_ra_serf_LDFLAGS])
1028 AC_SUBST([libsvn_ra_svn_LDFLAGS])
1029 AC_SUBST([libsvn_repos_LDFLAGS])
1030 AC_SUBST([libsvn_subr_LDFLAGS])
1031 AC_SUBST([libsvn_wc_LDFLAGS])
1032 AC_SUBST([shared_only_LDFLAGS])
1033
1034
1035 AC_ARG_ENABLE(maintainer-mode,
1036 AS_HELP_STRING([--enable-maintainer-mode],
1037                [Turn on debugging and very strict compile-time warnings]),
1038 [
1039     if test "$enableval" = "yes" ; then
1040       if test "$enable_debugging" = "no" ; then
1041         AC_MSG_ERROR([Can't have --disable-debug and --enable-maintainer-mode])
1042       fi
1043       enable_debugging=yes
1044
1045       dnl Enable some extra warnings. Put these before the user's flags
1046       dnl so the user can specify flags that override these.
1047       if test "$GCC" = "yes"; then
1048         AC_MSG_NOTICE([maintainer-mode: adding GCC warning flags])
1049
1050         dnl some additional flags that can be handy for an occasional review,
1051         dnl but throw too many warnings in svn code, of too little importance,
1052         dnl to keep these enabled. Remove the "dnl" to do a run with these
1053         dnl switches enabled.
1054         dnl ./configure CFLAGS="-Wswitch-enum -Wswitch-default"
1055
1056         dnl Add each of the following flags only if the C compiler accepts it.
1057         CFLAGS_KEEP="$CFLAGS"
1058         CFLAGS=""
1059
1060         SVN_CFLAGS_ADD_IFELSE([-Werror=implicit-function-declaration])
1061         SVN_CFLAGS_ADD_IFELSE([-Werror=declaration-after-statement])
1062         SVN_CFLAGS_ADD_IFELSE([-Wextra-tokens])
1063         SVN_CFLAGS_ADD_IFELSE([-Wnewline-eof])
1064         SVN_CFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1065         SVN_CFLAGS_ADD_IFELSE([-Wold-style-definition])
1066         SVN_CFLAGS_ADD_IFELSE([-Wno-system-headers])
1067         SVN_CFLAGS_ADD_IFELSE([-Wno-format-nonliteral])
1068         SVN_CFLAGS_ADD_IFELSE([-Wmissing-variable-declarations])
1069         SVN_CFLAGS_ADD_IFELSE([-Wno-unused-const-variable])
1070
1071         CMAINTAINERFLAGS="$CFLAGS"
1072         CFLAGS="$CFLAGS_KEEP"
1073
1074         dnl Add flags that all versions of GCC (should) support
1075         CMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wformat=2 -Wunused -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wno-multichar -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wbad-function-cast $CMAINTAINERFLAGS"
1076       fi
1077       if test "$GXX" = "yes"; then
1078         AC_MSG_NOTICE([maintainer-mode: adding G++ warning flags])
1079
1080         dnl Add each of the following flags only if the C++ compiler accepts it.
1081         CXXFLAGS_KEEP="$CXXFLAGS"
1082         CXXFLAGS=""
1083
1084         SVN_CXXFLAGS_ADD_IFELSE([-Wextra-tokens])
1085         SVN_CXXFLAGS_ADD_IFELSE([-Wnewline-eof])
1086         SVN_CXXFLAGS_ADD_IFELSE([-Wshorten-64-to-32])
1087         SVN_CXXFLAGS_ADD_IFELSE([-Wno-system-headers])
1088
1089         CXXMAINTAINERFLAGS="$CXXFLAGS"
1090         CXXFLAGS="$CXXFLAGS_KEEP"
1091
1092         dnl Add flags that all versions of G++ (should) support
1093         CXXMAINTAINERFLAGS="-Wall -Wpointer-arith -Wwrite-strings -Wshadow -Wunused -Wunreachable-code $CXXMAINTAINERFLAGS"
1094       fi
1095     fi
1096 ])
1097
1098 if test "$enable_debugging" = "yes" ; then
1099   dnl At the moment, we don't want optimization, because we're
1100   dnl debugging. Unless optiization was explicitly enabled.
1101   if test "$enable_optimization" != "yes"; then
1102     AC_MSG_NOTICE([Disabling optimizations for debugging])
1103     CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1104     CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1105   fi
1106   dnl Add debugging flags, unless they were set by the user
1107   if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1108     AC_MSG_NOTICE([Enabling debugging for C])
1109     CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1110     SVN_CFLAGS_ADD_IFELSE([-fno-inline])
1111     SVN_CFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1112     SVN_CFLAGS_ADD_IFELSE([-g3],[],[
1113       SVN_CFLAGS_ADD_IFELSE([-g2],[],[
1114         SVN_CFLAGS_ADD_IFELSE([-g])])])
1115   fi
1116   if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-g[0-9]? '`"]; then
1117     AC_MSG_NOTICE([Enabling debugging for C++])
1118     CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1119     SVN_CXXFLAGS_ADD_IFELSE([-fno-inline])
1120     SVN_CXXFLAGS_ADD_IFELSE([-fno-omit-frame-pointer])
1121     SVN_CXXFLAGS_ADD_IFELSE([-g3],[],[
1122       SVN_CXXFLAGS_ADD_IFELSE([-g2],[],[
1123         SVN_CXXFLAGS_ADD_IFELSE([-g])])])
1124   fi
1125   dnl SVN_DEBUG enables specific features for developer builds
1126   dnl AP_DEBUG enables specific (Apache) features for developer builds
1127   CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
1128   CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
1129 elif test "$enable_debugging" = "no" ; then
1130   AC_MSG_NOTICE([Disabling debugging])
1131   CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1132   CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-g[0-9] //g' -e 's/-g //g'`"]
1133   dnl Compile with NDEBUG to get rid of assertions
1134   CFLAGS="$CFLAGS -DNDEBUG"
1135   CXXFLAGS="$CXXFLAGS -DNDEBUG"
1136 # elif test "$enable_debugging" = "maybe" ; then
1137 #   # do nothing
1138 fi
1139
1140 if test "$enable_optimization" = "yes"; then
1141   dnl Add optimization flags, unless they were set by the user
1142   if test -z ["`echo $CUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1143     CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1144     if test "$enable_debugging" = "yes"; then
1145       AC_MSG_NOTICE([Enabling optimizations for C (with debugging enabled)])
1146       SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1147         SVN_CFLAGS_ADD_IFELSE([-O])])
1148     else
1149       AC_MSG_NOTICE([Enabling optimizations for C])
1150       SVN_CFLAGS_ADD_IFELSE([-O3],[],[
1151         SVN_CFLAGS_ADD_IFELSE([-O2],[],[
1152           SVN_CFLAGS_ADD_IFELSE([-O1],[],[
1153             SVN_CFLAGS_ADD_IFELSE([-O])])])])
1154       SVN_CFLAGS_ADD_IFELSE([-Wno-clobbered])
1155       SVN_CFLAGS_ADD_IFELSE([-flto])
1156     fi
1157   fi
1158   if test -z ["`echo $CXXUSERFLAGS' ' | $EGREP -- '-O[^ ]* '`"]; then
1159     CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1160     if test "$enable_debugging" = "yes"; then
1161       AC_MSG_NOTICE([Enabling optimizations for C++ (with debugging enabled)])
1162       SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1163         SVN_CXXFLAGS_ADD_IFELSE([-O])])
1164     else
1165       AC_MSG_NOTICE([Enabling optimizations for C++])
1166       SVN_CXXFLAGS_ADD_IFELSE([-O3],[],[
1167         SVN_CXXFLAGS_ADD_IFELSE([-O2],[],[
1168           SVN_CXXFLAGS_ADD_IFELSE([-O1],[],[
1169             SVN_CXXFLAGS_ADD_IFELSE([-O])])])])
1170       SVN_CXXFLAGS_ADD_IFELSE([-Wno-clobbered])
1171       SVN_CXXFLAGS_ADD_IFELSE([-flto])
1172     fi
1173   fi
1174 elif test "$enable_optimization" = "no"; then
1175   dnl Remove all optimization flags
1176   AC_MSG_NOTICE([Disabling optimizations])
1177   CFLAGS=["`echo $CFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1178   CXXFLAGS=["`echo $CXXFLAGS' ' | $SED -e 's/-O[^ ]* //g'`"]
1179 # elif test "$enable_optimization" = "maybe" ; then
1180 #   # do nothing
1181 fi
1182
1183 dnl Dump the current compiler options
1184 AC_MSG_NOTICE([C compiler flags: $CFLAGS])
1185 AC_MSG_NOTICE([    user-defined: $CUSERFLAGS])
1186 AC_MSG_NOTICE([ maintainer-mode: $CMAINTAINERFLAGS])
1187 AC_MSG_NOTICE([C++ compiler flags: $CXXFLAGS])
1188 AC_MSG_NOTICE([      user-defined: $CXXUSERFLAGS])
1189 AC_MSG_NOTICE([   maintainer-mode: $CXXMAINTAINERFLAGS])
1190
1191 AC_ARG_ENABLE(full-version-match,
1192 AS_HELP_STRING([--disable-full-version-match],
1193                [Disable the full version match rules when checking
1194                 Subversion library compatibility.]),
1195 [
1196     if test "$enableval" = "no" ; then
1197       AC_MSG_NOTICE([Disabling svn full version matching])
1198       AC_DEFINE(SVN_DISABLE_FULL_VERSION_MATCH, 1,
1199                 [Defined if the full version matching rules are disabled])
1200     fi
1201 ])
1202
1203 AC_ARG_WITH(editor,
1204 AS_HELP_STRING([--with-editor=PATH],
1205                [Specify a default editor for the subversion client.]),
1206 [
1207
1208     if test "$withval" = "yes" ; then
1209       AC_MSG_ERROR([--with-editor requires an argument.])
1210     else
1211       SVN_CLIENT_EDITOR=$withval
1212       AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
1213                          [The path of a default editor for the client.])
1214
1215     fi
1216
1217 ])
1218
1219 SVN_LIB_Z
1220
1221 SVN_LZ4
1222
1223 SVN_UTF8PROC
1224
1225 MOD_ACTIVATION=""
1226 AC_ARG_ENABLE(mod-activation,
1227 AS_HELP_STRING([--enable-mod-activation],
1228                [Enable mod_dav_svn in httpd.conf]),
1229 [
1230     if test "$enableval" = "yes" ; then
1231       MOD_ACTIVATION="-a"
1232       AC_MSG_NOTICE([Enabling apache module activation])
1233     else
1234       AC_MSG_NOTICE([Disabling apache module activation])
1235     fi
1236 ])
1237 AC_SUBST(MOD_ACTIVATION)
1238
1239
1240
1241 AC_ARG_ENABLE(gcov,
1242 AC_HELP_STRING([--enable-gcov],
1243                [Turn on gcov coverage testing (GCC only).]),
1244 [
1245     if test "$enableval" = "yes" ; then
1246       dnl Probably other compilers support something similar;
1247       dnl feel free to extend this to include them.
1248       if test "$GCC" = "yes"; then
1249         if test "$svn_enable_shared" = "yes" ; then
1250           AC_MSG_ERROR([Can't have --enable-gcov without --disable-shared (we
1251                         recommend also using --enable-all-static).])
1252         fi
1253         if test ! "$enable_all_static" = "yes" ; then
1254           AC_MSG_WARN(We recommend --enable-all-static with --enable-gcov.)
1255         fi
1256         AC_MSG_NOTICE([Enabling gcov coverage testing.])
1257         CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
1258         CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
1259       else
1260         AC_MSG_ERROR([We only support --enable-gcov with GCC right now.])
1261       fi
1262     fi
1263 ])
1264
1265 AC_ARG_ENABLE(gprof,
1266 AS_HELP_STRING([--enable-gprof],
1267                [Produce gprof profiling data in 'gmon.out' (GCC only).]),
1268 [
1269     if test "$enableval" = "yes" ; then
1270       dnl Probably other compilers support -pg or something similar;
1271       dnl feel free to extend this to include them.
1272       if test "$GCC" = "yes"; then
1273         if test "$svn_enable_shared" = "yes" ; then
1274           AC_MSG_ERROR([Can't have --enable-gprof without --disable-shared (we
1275                         recommend also using --enable-all-static).])
1276         fi
1277         if test ! "$enable_all_static" = "yes" ; then
1278           AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
1279         fi
1280         AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
1281         CFLAGS="$CFLAGS -pg"
1282         CXXFLAGS="$CXXFLAGS -pg"
1283         LT_LDFLAGS="$LT_LDFLAGS -pg"
1284       else
1285         AC_MSG_ERROR([We only support --enable-gprof with GCC right now.])
1286       fi
1287     fi
1288 ])
1289
1290
1291 # Scripting and Bindings languages
1292
1293 # Python: Used for testsuite, and bindings
1294
1295
1296 PYTHON="`$abs_srcdir/build/find_python.sh`"
1297 if test -z "$PYTHON"; then
1298   AC_MSG_WARN([Python 2.7 or later is required to run the testsuite])
1299   AC_MSG_WARN([or to use the Subversion Python bindings])
1300   AC_MSG_WARN([])
1301   AC_MSG_WARN([If you have a suitable Python installed, but not on the])
1302   AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
1303   AC_MSG_WARN([to the Python executable, and re-run configure])
1304 fi
1305 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
1306
1307 # The minimum version for the JVM runtime for our Java bytecode.
1308 JAVA_OLDEST_WORKING_VER='1.6'
1309 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
1310 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
1311
1312 AC_PATH_PROG(PERL, perl, none)
1313
1314 if test -n "$RUBY"; then
1315   AC_PATH_PROG(RUBY, "$RUBY", none)
1316 else
1317   AC_PATH_PROGS(RUBY, ruby ruby1 ruby1.8 ruby18 ruby1.9 ruby19 ruby1.9.3 ruby193 ruby2 ruby2.0 ruby20 ruby2.1 ruby21 ruby2.2 ruby22 ruby2.3 ruby23 ruby2.4 ruby24, none)
1318 fi
1319 if test "$RUBY" != "none"; then
1320   AC_MSG_CHECKING([rb_hash_foreach])
1321   if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)' >/dev/null; then
1322     AC_MSG_RESULT([yes])
1323     if test -n "$RDOC"; then
1324       AC_PATH_PROG(RDOC, "$RDOC", none)
1325     else
1326       AC_PATH_PROGS(RUBY, rdoc rdoc1 rdoc1.8 rdoc18 rdoc1.9 rdoc19 rdoc1.9.3 rdoc193 rdoc2 rdoc2.0 rdoc20 rdoc2.1 rdoc21 rdoc2.2 rdoc22 rdoc2.3 rdoc23 rdoc2.4 rdoc24, none)
1327     fi
1328     AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
1329     svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MAJOR))'`"
1330     ])
1331     RUBY_MAJOR="$svn_cv_ruby_major"
1332
1333     AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
1334     svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print RbConfig::CONFIG.fetch(%q(MINOR))'`"
1335     ])
1336     RUBY_MINOR="$svn_cv_ruby_minor"
1337
1338     AC_CACHE_CHECK([for Ruby teeny version], [svn_cv_ruby_teeny],[
1339     svn_cv_ruby_teeny="`$RUBY -rrbconfig -e 'major, minor, teeny = RUBY_VERSION.split("."); print teeny;'`"
1340     ])
1341     RUBY_TEENY="$svn_cv_ruby_teeny"
1342     
1343     AC_SUBST(RUBY_MAJOR)
1344     AC_SUBST(RUBY_MINOR)
1345     AC_SUBST(RUBY_TEENY)
1346     if test \( "$RUBY_MAJOR" -eq "1" -a "$RUBY_MINOR" -gt "8" -a "$RUBY_TEENY" -lt "3" \); then
1347       # Disallow Ruby between 1.8.7 and 1.9.3
1348       RUBY="none"
1349       AC_MSG_WARN([The detected Ruby is between 1.9 and 1.9.3])
1350       AC_MSG_WARN([Only 1.8.x and 1.9.3 or later are supported at this time])
1351     fi
1352   else
1353     AC_MSG_RESULT([no])
1354     RUBY="none"
1355     AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
1356     AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
1357     AC_MSG_WARN([Subversion Ruby bindings])
1358     AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
1359   fi
1360 fi
1361
1362 SVN_CHECK_SWIG
1363 AC_ARG_VAR(SWIG_FEATURES, [SWIG feature flags common to all bindings])
1364 AC_ARG_VAR(SWIG_RB_FEATURES, [SWIG feature flags specific to Ruby bindings])
1365 AC_ARG_VAR(SWIG_PL_FEATURES, [SWIG feature flags specific to Perl bindings])
1366 AC_ARG_VAR(SWIG_PY_FEATURES, [SWIG feature flags specific to Python bindings])
1367
1368 SVN_CHECK_CTYPESGEN
1369
1370 dnl decide whether we want to link against the RA/FS libraries
1371 AC_ARG_ENABLE(runtime-module-search,
1372 AS_HELP_STRING([--enable-runtime-module-search],
1373                [Turn on dynamic loading of RA/FS libraries including
1374                 third-party FS libraries]),
1375 [
1376     if test "$enableval" = "yes"; then
1377       use_dso=yes
1378       if test "$svn_enable_shared" = "no"; then
1379         AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
1380       fi
1381       AC_DEFINE(SVN_USE_DSO, 1,
1382                 [Defined if svn should try to load DSOs])
1383
1384       dnl Mac OS X uses libname.MAJOR.SOVERSION.dylib
1385       dnl Most other unixes use libname.MAJOR.so.SOVERSION
1386       case "$host" in
1387         *-*-darwin*)
1388           AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.%d.dylib"],
1389                     [Shared library file name suffix format])
1390           ;;
1391         *)
1392           AC_DEFINE(SVN_DSO_SUFFIX_FMT, ["%d.so.%d"],
1393                     [Shared library file name suffix format])
1394           ;;
1395       esac
1396     fi
1397 ])
1398
1399 if test "$svn_enable_shared" = "no" || test "$use_dso" != "yes"; then
1400   AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_LOCAL, 1,
1401       [Defined if libsvn_ra should link against libsvn_ra_local])
1402   svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
1403   svn_ra_lib_install_deps="install-ramod-lib"
1404   svn_ra_lib_link="\$(RA_LOCAL_LINK)"
1405
1406   AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SVN, 1,
1407       [Defined if libsvn_ra should link against libsvn_ra_svn])
1408   svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
1409   svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
1410
1411   if test "$svn_lib_serf" = "yes"; then
1412     AC_DEFINE(SVN_LIBSVN_RA_LINKS_RA_SERF, 1,
1413           [Defined if libsvn_ra should link against libsvn_ra_serf])
1414     svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
1415     svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
1416     svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
1417   fi
1418
1419   SVN_RA_LIB_DEPS=$svn_ra_lib_deps
1420   SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
1421   SVN_RA_LIB_LINK=$svn_ra_lib_link
1422
1423   AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
1424       [Defined if libsvn_fs should link against libsvn_fs_fs])
1425   svn_fs_lib_deps="\$(FS_FS_DEPS)"
1426   svn_fs_lib_install_deps="install-fsmod-lib"
1427   svn_fs_lib_link="\$(FS_FS_LINK)"
1428
1429   AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_X, 1,
1430       [Defined if libsvn_fs should link against libsvn_fs_x])
1431   svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_X_DEPS)"
1432   svn_fs_lib_link="$svn_fs_lib_link \$(FS_X_LINK)"
1433 dnl  FSFS already installs fsmod
1434 dnl  svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-fsmod-lib"
1435
1436   if test "$svn_lib_berkeley_db" = "yes"; then
1437   AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
1438       [Defined if libsvn_fs should link against libsvn_fs_base])
1439     svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
1440     svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
1441     svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
1442   fi
1443
1444   SVN_FS_LIB_DEPS=$svn_fs_lib_deps
1445   SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
1446   SVN_FS_LIB_LINK=$svn_fs_lib_link
1447 fi
1448
1449 AC_SUBST(SVN_RA_LIB_DEPS)
1450 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
1451 AC_SUBST(SVN_RA_LIB_LINK)
1452 AC_SUBST(SVN_FS_LIB_DEPS)
1453 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
1454 AC_SUBST(SVN_FS_LIB_LINK)
1455
1456 # ==== JavaHL ================================================================
1457
1458 dnl Possibly compile JavaHL
1459 do_javahl_build=no
1460 AC_ARG_ENABLE(javahl,
1461   AS_HELP_STRING([--enable-javahl],
1462              [Enable compilation of Java high-level bindings (requires C++)]),
1463   [ if test "$enableval" = "yes" ; then
1464         do_javahl_build="yes"
1465     fi
1466   ])
1467
1468 JAVAHL_OBJDIR=""
1469 INSTALL_EXTRA_JAVAHL_LIB=""
1470 FIX_JAVAHL_LIB=""
1471 JAVAHL_TESTS_TARGET=""
1472 JAVAHL_COMPAT_TESTS_TARGET=""
1473 LT_CXX_LIBADD=""
1474 if test "$do_javahl_build" = "yes"; then
1475   dnl Check for suitable JDK
1476   if test "$JDK_SUITABLE" = "no"; then
1477     AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK. 
1478                   Please specify a suitable JDK using the --with-jdk option.])
1479   fi
1480   
1481   dnl The temporary directory where libtool compiles libsvnjavahl.
1482   JAVAHL_OBJDIR='$(libsvnjavahl_PATH)/.libs'
1483   
1484   os_arch=`uname`
1485   if test "$os_arch" = "Darwin"; then
1486     dnl On Darwin, JNI libs must be installed as .jnilib
1487     INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
1488     FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
1489   fi
1490   # This segment (and the rest of r10800) is very likely unnecessary
1491   # with libtool 1.5, which automatically adds libstdc++ as a
1492   # dependency to the C++ libraries it builds.  So at some future time
1493   # when autogen.sh requires libtool 1.5 or higher, we can get rid of
1494   # it.
1495   AC_MSG_CHECKING([for additional flags to link C++ libraries])
1496   if test "x$ac_compiler_gnu" = "xyes"; then
1497     case "$host" in
1498       *freebsd10*)
1499         AC_MSG_RESULT([none needed])
1500       ;;
1501       *)
1502         LT_CXX_LIBADD="-lstdc++"
1503         AC_MSG_RESULT([$LT_CXX_LIBADD])
1504       ;;
1505     esac
1506   else
1507     AC_MSG_RESULT([none needed])
1508   fi
1509 fi
1510 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
1511 AC_SUBST(JAVAHL_OBJDIR)
1512 AC_SUBST(FIX_JAVAHL_LIB)
1513 AC_SUBST(LT_CXX_LIBADD)
1514
1515 AC_ARG_WITH(junit,
1516 AS_HELP_STRING([--with-junit=PATH],
1517                [Specify a path to the junit JAR file.]),
1518 [
1519     if test "$withval" != "no"; then
1520       if test -n "$JAVA_CLASSPATH"; then
1521         JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
1522       else
1523         JAVA_CLASSPATH="$withval"
1524       fi
1525       JAVAHL_TESTS_TARGET="javahl-tests"
1526       JAVAHL_COMPAT_TESTS_TARGET="javahl-compat-tests"
1527     fi
1528 ])
1529 AC_SUBST(JAVA_CLASSPATH)
1530 AC_SUBST(JAVAHL_TESTS_TARGET)
1531 AC_SUBST(JAVAHL_COMPAT_TESTS_TARGET)
1532
1533 # ==== Miscellaneous bits ====================================================
1534
1535 AC_CHECK_HEADERS([stdbool.h stdint.h])
1536
1537 # Strip '-no-cpp-precomp' from CPPFLAGS for the clang compiler
1538 ### I think we get this flag from APR, so the fix probably belongs there
1539 if test "$CC" = "clang"; then
1540   SVN_STRIP_FLAG(CPPFLAGS, [-no-cpp-precomp ])
1541 fi
1542
1543 dnl Since this is used only on Unix-y systems, define the path separator as '/'
1544 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
1545         [Defined to be the path separator used on your local filesystem])
1546
1547 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
1548         [Defined to be the null device for the system])
1549
1550 DEFAULT_FS_TYPE="fsfs"
1551 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
1552                    [The fs type to use by default])
1553
1554 DEFAULT_HTTP_LIBRARY="serf"
1555 AC_DEFINE_UNQUOTED(DEFAULT_HTTP_LIBRARY, "$DEFAULT_HTTP_LIBRARY",
1556                    [The http library to use by default])
1557
1558 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
1559 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
1560 case "$host" in
1561   *bsdi*)
1562     # Check whether they've installed GNU make
1563     if ! make --version > /dev/null 2>&1; then 
1564       # BSDi make
1565       INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
1566     fi
1567     ;;
1568 esac
1569 AC_SUBST(INCLUDE_OUTPUTS)
1570
1571 # ==== Detection complete - output and run config.status =====================
1572
1573 AC_CONFIG_HEADERS(subversion/svn_private_config.h.tmp:subversion/svn_private_config.h.in)
1574 AC_CONFIG_COMMANDS([svn_private_config.h.tmp],
1575                    [svn_cf=subversion/svn_private_config.h;
1576                     $SED -e "s/@SVN_DB_HEADER@/$SVN_DB_HEADER/" $svn_cf.tmp > $svn_cf.tmp.new
1577                     cmp -s $svn_cf.tmp.new $svn_cf || mv -f $svn_cf.tmp.new $svn_cf
1578                     rm -f $svn_cf.tmp.new $svn_cf.tmp],
1579                    [SED="$SED"
1580                     SVN_DB_HEADER="$SVN_DB_HEADER"])
1581 AC_CONFIG_FILES([Makefile])
1582
1583 # Create pkg-config .pc files from .pc.in files
1584 for pc_in_file in "${abs_srcdir}"/subversion/libsvn_*/*.pc.in; do
1585   pc_file=${pc_in_file#${abs_srcdir}/}
1586   pc_file=${pc_file%.in}
1587   AC_CONFIG_FILES([${pc_file}])
1588 done
1589
1590 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
1591 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
1592 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
1593 if test -e packages/solaris/pkginfo.in; then
1594   SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
1595 fi
1596 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
1597
1598 # Ensure that SWIG is checked after reconfiguration.
1599 rm -f .swig_checked
1600
1601 dnl Provide ${host} for use in compiled code (for svn --version)
1602 AC_DEFINE_UNQUOTED([SVN_BUILD_HOST], "${host}",
1603                    [Defined to the config.guess name of the build system])
1604
1605 dnl Provide ${target} for use in compiled code (for user-agent string)
1606 AC_DEFINE_UNQUOTED([SVN_BUILD_TARGET], "${target}",
1607                    [Defined to the config.guess name of the build target])
1608
1609 AC_OUTPUT
1610
1611 # ==== Print final messages to user ==========================================
1612
1613 dnl Configure is long - users tend to miss warnings printed during it.
1614 dnl Hence, print a warnings about what we did and didn't configure at the 
1615 dnl end, where people will actually see them.
1616
1617 if test "$svn_have_berkeley_db" = "no6" && test "$enable_bdb6" != "no"; then
1618   AC_MSG_WARN([We have configured without BDB filesystem support
1619
1620
1621 Berkeley DB 6 was found, but not used.  Please re-run configure (see
1622 ./config.nice) with the '--enable-bdb6' flag to use it,
1623 or explicitly specify '--disable-bdb6' or '--without-berkeley-db'
1624 to silence this warning.
1625
1626 Please note that some versions of Berkeley DB 6+ are under the GNU Affero
1627 General Public License, version 3:
1628 https://oss.oracle.com/pipermail/bdb/2013-June/000056.html
1629
1630 The AGPL-3.0 licence may impose special requirements for making available
1631 source code of server-side software.  The text of the licence is:
1632 https://www.gnu.org/licenses/agpl-3.0.html
1633 http://opensource.org/licenses/AGPL-3.0
1634
1635 The Berkeley DB backend to Subversion is deprecated; see
1636 http://subversion.apache.org/docs/release-notes/1.8#bdb-deprecated
1637
1638 The Subversion developers have not tested Subversion with Berkeley DB 6 for
1639 technical problems or bugs.
1640 ])
1641 fi