Comment explicitly that the value returned to SASL in a callback does
[svn.git] / configure.ac
blob548b6809b92177cf751da89f5f9ec20255a616ed
1 dnl configure.ac: Autoconfiscation for Subversion
2 dnl Process this file with autoconf to produce a configure script.
4 AC_PREREQ(2.58)
6 dnl Get the version of Subversion, using m4's esyscmd() command to do this
7 dnl at m4-time, since AC_INIT() requires it then.
8 AC_INIT([subversion],
9         [esyscmd(python build/getversion.py subversion/include/svn_version.h)],
10         [http://subversion.tigris.org/])
12 AC_CONFIG_SRCDIR(subversion/include/svn_types.h)
13 AC_CONFIG_AUX_DIR([build])
15 AC_MSG_NOTICE([Configuring Subversion ]AC_PACKAGE_VERSION)
17 AC_SUBST([abs_srcdir], ["`cd $srcdir && pwd`"])
18 AC_SUBST([abs_builddir], ["`pwd`"])
20 # Generate config.nice early (before the arguments are munged)
21 SVN_CONFIG_NICE(config.nice)
23 # ==== Check for programs ====================================================
25 # Look for a C compiler (before anything can set CFLAGS)
26 AC_PROG_CC
28 # Look for a C pre-processor
29 AC_PROG_CPP
31 # Grab target_cpu, so we can use it in the Solaris pkginfo file
32 AC_CANONICAL_TARGET
34 # Look for an extended grep, this macro appeared in autoconf-2.53b,
35 # before that, the search for an EGREP was always performed.
36 ifdef([AC_PROG_EGREP],[AC_PROG_EGREP],[])
38 AC_PROG_LN_S
40 AC_PROG_INSTALL
41 # If $INSTALL is relative path to our fallback install-sh, then convert
42 # to an absolute path, as in some cases (e.g. Solaris VPATH build), libtool
43 # may try to use it from a changed working directory.
44 if test "$INSTALL" = "build/install-sh -c"; then
45   INSTALL="$abs_srcdir/$INSTALL"
48 AC_SUBST([MKDIR], ["$INSTALL -d"])
51 dnl find Apache with a recent-enough magic module number.
52 SVN_FIND_APACHE(20020903)
54 # ==== Libraries, for which we may have source to build ======================
56 dnl verify apr version and set apr flags
57 dnl These regular expressions should not contain "\(" and "\)".
58 dnl The specific reason we require APR 0.9.7 is:
59 dnl   It contains fixes to its file writing routines
60 dnl   now generating errors instead of silently ignoring
61 dnl   them.  Only .7 and later can guarantee repository
62 dnl   integrity with FSFS.
64 APR_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\."]
65 APU_VER_REGEXES=["0\.9\.[7-9] 0\.9\.1[0-9] 1\."]
67 SVN_LIB_APR($APR_VER_REGEXES)
68 SVN_LIB_APRUTIL($APU_VER_REGEXES)
70 # Either a space-separated list of allowable Neon versions, or "any" to
71 # mean allow anything.
72 NEON_ALLOWED_LIST="0.25.0 0.25.1 0.25.2 0.25.3 0.25.4 0.25.5 0.26.0 0.26.1 0.26.2 0.26.3 0.26.4 0.27.2 0.28.0"
73 NEON_RECOMMENDED_VER=0.28.0
74 NEON_URL="http://www.webdav.org/neon/neon-${NEON_RECOMMENDED_VER}.tar.gz"
75 dnl You can skip the neon version check only if you know what you are doing 
76 AC_ARG_ENABLE(neon-version-check,
77   AS_HELP_STRING([--disable-neon-version-check],
78                  [do not check the Neon version]),
79   [
80     if test "$enableval" = "no" ; then
81       NEON_ALLOWED_LIST="any"
82     fi
83   ],
84   [])
85 SVN_LIB_NEON($NEON_ALLOWED_LIST, $NEON_RECOMMENDED_VER, $NEON_URL)
87 dnl Search for serf as an alternative to neon
88 SVN_LIB_SERF
90 dnl Set up a number of directories ---------------------
92 dnl Create SVN_BINDIR for proper substitution
93 if test "${bindir}" = '${exec_prefix}/bin'; then
94         if test "${exec_prefix}" = "NONE"; then
95                 if test "${prefix}" = "NONE"; then
96                         SVN_BINDIR="${ac_default_prefix}/bin"
97                 else
98                         SVN_BINDIR="${prefix}/bin"
99                 fi
100         else
101                 SVN_BINDIR="${exec_prefix}/bin"
102         fi
103 else
104         SVN_BINDIR="${bindir}"
107 dnl fully evaluate this value. when we substitute it into our tool scripts,
108 dnl they will not have things such as ${bindir} available
109 SVN_BINDIR="`eval echo ${SVN_BINDIR}`"
110 AC_SUBST(SVN_BINDIR)
112 dnl provide ${bindir} in svn_private_config.h for use in compiled code
113 AC_DEFINE_UNQUOTED(SVN_BINDIR, "${SVN_BINDIR}",
114         [Defined to be the path to the installed binaries])
116 dnl This purposely does *not* allow for multiple parallel installs.
117 dnl However, it is compatible with most gettext usages.
118 localedir='${datadir}/locale'
119 AC_SUBST(localedir)
121 dnl For SVN_LOCALE_DIR, we have to expand it to something.  See SVN_BINDIR.
122 if test "${datadir}" = '${prefix}/share' && test "${prefix}" = "NONE"; then
123   exp_localedir='${ac_default_prefix}/share/locale'
124 else
125   exp_localedir=$localedir
127 SVN_EXPAND_VAR(svn_localedir, "${exp_localedir}")
128 AC_DEFINE_UNQUOTED(SVN_LOCALE_DIR, "${svn_localedir}",
129                    [Defined to be the path to the installed locale dirs])
131 dnl Check for libtool -- we'll definitely need it for all our shared libs!
132 echo "configuring libtool now"
133 AC_ARG_ENABLE(experimental-libtool,
134   AS_HELP_STRING([--enable-experimental-libtool],[Use APR's libtool]),
135   [experimental_libtool=$enableval],[experimental_libtool=no])
137 if test "$experimental_libtool" = "yes"; then
138   echo "using APR's libtool"
139   sh_libtool="`$apr_config --apr-libtool`"
140   LIBTOOL="$sh_libtool"
141   SVN_LIBTOOL="$sh_libtool"
142 else
143   sh_libtool="$abs_builddir/libtool"
144   SVN_LIBTOOL="\$(SHELL) $sh_libtool"
145   dnl libtoolize requires that the following line not be indented
146 AC_PROG_LIBTOOL
148 AC_SUBST(SVN_LIBTOOL)
150 dnl Determine if the libtool version supports --tag or not
151 SVN_LT_CCTAG=
152 SVN_LT_CXXTAG=
153 AC_MSG_CHECKING([whether libtool accepts --tag=XXX])
155 AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
156 if $sh_libtool --tag=CC --mode=compile \
157   $CC -c $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext >&5
158 then
159     AC_MSG_RESULT([yes])
160     SVN_LT_CCTAG="--tag=CC"
161     SVN_LT_CXXTAG="--tag=CXX"
162 else
163     AC_MSG_RESULT([no])
165 rm -rf $lt_cv_objdir
166 rm -f conftest.$ac_ext
167 AC_SUBST(SVN_LT_CCTAG)
168 AC_SUBST(SVN_LT_CXXTAG)
170 dnl Before configuring libtool check for --enable-all-static option
171 AC_ARG_ENABLE(all-static,
172   AS_HELP_STRING([--enable-all-static],
173                  [Build completely static (standalone) binaries.]),
174   [
175     if test "$enableval" = "yes" ; then
176       LT_LDFLAGS="-all-static $LT_LDFLAGS"
177     fi
180 AC_SUBST(LT_LDFLAGS)
182 dnl Check if -no-undefined is needed for the platform.
183 dnl It should always work but with libtool 1.4.3 on OS X it breaks the build.
184 dnl So we only turn it on for platforms where we know we really need it.
185 AC_MSG_CHECKING([whether libtool needs -no-undefined])
186 case $host in
187   *-*-cygwin*)
188     AC_MSG_RESULT([yes])
189     LT_NO_UNDEFINED="-no-undefined"
190     ;;
191   *)
192     AC_MSG_RESULT([no])
193     LT_NO_UNDEFINED=""
194     ;;
195 esac
196 AC_SUBST(LT_NO_UNDEFINED)
198 AC_MSG_CHECKING([whether to avoid circular linkage at all costs])
199 case $host in
200   *-*-cygwin*)
201     AC_MSG_RESULT([yes])
202     AC_DEFINE([SVN_AVOID_CIRCULAR_LINKAGE_AT_ALL_COSTS_HACK], 1,
203               [Define if circular linkage is not possible on this platform.])
204     ;;
205   *)
206     AC_MSG_RESULT([no])
207     ;;
208 esac
210 dnl Check for trang.
211 trang=yes
212 AC_ARG_WITH(trang,
213 AS_HELP_STRING([--with-trang=PATH],
214                [Specify the command to run the trang schema converter]),
216     trang="$withval"
218 if test "$trang" = "yes"; then
219     AC_PATH_PROG(TRANG, trang, none)
220 else
221     TRANG="$trang"
222     AC_SUBST(TRANG)
226 dnl Check for libraries --------------------
228 # Berkeley DB on SCO OpenServer needs -lsocket
229 AC_CHECK_LIB(socket, socket)
231 # Build the BDB filesystem library only if we have an appropriate
232 # version of Berkeley DB.
233 case "$host" in
234 powerpc-apple-darwin*)
235     # Berkeley DB 4.0 does not work on OS X.
236     SVN_FS_WANT_DB_MAJOR=4
237     SVN_FS_WANT_DB_MINOR=1
238     SVN_FS_WANT_DB_PATCH=25
239     ;;
241     SVN_FS_WANT_DB_MAJOR=4
242     SVN_FS_WANT_DB_MINOR=0
243     SVN_FS_WANT_DB_PATCH=14
244     ;;
245 esac
246 # Look for libdb4.so first:
247 SVN_LIB_BERKELEY_DB($SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MINOR,
248                     $SVN_FS_WANT_DB_PATCH, [db4 db])
250 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MAJOR, $SVN_FS_WANT_DB_MAJOR,
251                    [The desired major version for the Berkeley DB])
252 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_MINOR, $SVN_FS_WANT_DB_MINOR,
253                    [The desired minor version for the Berkeley DB])
254 AC_DEFINE_UNQUOTED(SVN_FS_WANT_DB_PATCH, $SVN_FS_WANT_DB_PATCH,
255                    [The desired patch version for the Berkeley DB])
257 SVN_LIB_SASL
259 if test "$svn_lib_sasl" = "yes"; then
260   AC_DEFINE(SVN_HAVE_SASL, 1,
261             [Defined if Cyrus SASL v2 is present on the system])
264 dnl Mac OS KeyChain -------------------
266 AC_ARG_ENABLE(keychain,
267   AS_HELP_STRING([--disable-keychain], 
268   [Disable use of Mac OS KeyChain for auth credentials]),
269   [enable_keychain=$enableval],[enable_keychain=yes])
271 AC_MSG_CHECKING([for Mac OS KeyChain Services])
273 if test "$enable_keychain" = "yes"; then
274   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <AvailabilityMacros.h>
275 #if !DARWIN || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_2)
276 #error KeyChain API unavailable.
277 #endif]], [[]])],[],[enable_keychain=no])
280 if test "$enable_keychain" = "yes"; then
281   dnl ### Hack.  We should only need to pass the -framework options when
282   dnl linking libsvn_subr, since it is the only library that uses Keychain.
283   dnl
284   dnl Unfortunately, libtool 1.5.x doesn't track transitive dependencies for
285   dnl OS X frameworks like it does for normal libraries, so we need to
286   dnl explicitly pass the option to all the users of libsvn_subr to allow
287   dnl static builds to link successfully.
288   dnl
289   dnl This does mean that all executables we link will be linked directly
290   dnl to these frameworks - even when building shared libraries - but that
291   dnl shouldn't cause any problems.
292   LIBS="$LIBS -framework Security"
293   LIBS="$LIBS -framework CoreFoundation"
294   LIBS="$LIBS -framework CoreServices"
295   AC_DEFINE([SVN_HAVE_KEYCHAIN_SERVICES], [1], [Is Mac OS KeyChain support enabled?])
296   AC_MSG_RESULT([yes])
297 else
298   AC_MSG_RESULT([no])
302 dnl I18n -------------------
304 AC_ARG_ENABLE(nls,
305   AS_HELP_STRING([--disable-nls],[Disable gettext functionality]),
306   [enable_nls=$enableval],[enable_nls=yes])
308 USE_NLS="no"
309 if test "$enable_nls" = "yes"; then
310   dnl First, check to see if there is a working msgfmt.
311   AC_PATH_PROG(MSGFMT, msgfmt, none)
312   AC_PATH_PROG(MSGMERGE, msgmerge, none)
313   AC_PATH_PROG(XGETTEXT, xgettext, none)
314   if test "$MSGFMT" != "none"; then
315     AC_SEARCH_LIBS(bindtextdomain, [intl], [],
316                    [
317                     AC_MSG_WARN([bindtextdomain() not found.  Disabling NLS.])
318                     enable_nls="no"
319                    ])
320     if test "$enable_nls" = "yes"; then
321       AC_DEFINE(ENABLE_NLS, 1,
322                 [Define to 1 if translation of program messages to the user's
323                  native language is requested.])
324       USE_NLS="yes"
325     fi
326   fi
329 AH_BOTTOM(
330 #define N_(x) x
331 #ifdef ENABLE_NLS
332 #include <locale.h>
333 #include <libintl.h>
334 #define _(x) dgettext(PACKAGE_NAME, x)
335 #else
336 #define _(x) (x)
337 #define gettext(x) (x)
338 #define dgettext(domain,x) (x)
339 #endif
342 dnl Used to simulate makefile conditionals.
343 GETTEXT_CODESET=\#
344 NO_GETTEXT_CODESET=\#
345 if test $USE_NLS = "yes"; then
346    AC_CHECK_FUNCS(bind_textdomain_codeset,
347                   [ GETTEXT_CODESET="" ],
348                   [ NO_GETTEXT_CODESET="" ])
350 AC_SUBST(GETTEXT_CODESET)
351 AC_SUBST(NO_GETTEXT_CODESET)
353 # Check if we are using GNU gettext.
354 GNU_GETTEXT=no
355 MSGFMTFLAGS=''
356 if test $USE_NLS = "yes"; then
357    AC_MSG_CHECKING(if we are using GNU gettext)
358    if $MSGFMT --version 2>&1 | $EGREP GNU > /dev/null; then
359       GNU_GETTEXT=yes
360       MSGFMTFLAGS='-c'
361    fi
362    AC_MSG_RESULT($GNU_GETTEXT)
364 AC_SUBST(MSGFMTFLAGS)
366 INSTALL_STATIC_RULES="install-bin install-docs"
367 INSTALL_RULES="install-fsmod-lib install-ramod-lib install-lib install-include install-static"
368 INSTALL_RULES="$INSTALL_RULES $INSTALL_APACHE_RULE"
369 BUILD_RULES="fsmod-lib ramod-lib lib bin test $BUILD_APACHE_RULE"
371 if test "$svn_lib_berkeley_db" = "yes"; then
372   BUILD_RULES="$BUILD_RULES bdb-lib bdb-test"
373   INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-fsmod-lib/install-fsmod-lib install-bdb-lib/'`"
374   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-bdb-lib"
375   BDB_TEST_DEPS="\$(BDB_TEST_DEPS)"
376   BDB_TEST_PROGRAMS="\$(BDB_TEST_PROGRAMS)"
378   
379 if test "$svn_lib_neon" = "yes"; then
380   BUILD_RULES="$BUILD_RULES neon-lib"
381   INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-neon-lib/'`"
382   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-neon-lib"
385 if test "$svn_lib_serf" = "yes"; then
386   BUILD_RULES="$BUILD_RULES serf-lib"
387   INSTALL_RULES="`echo $INSTALL_RULES | sed 's/install-ramod-lib/install-ramod-lib install-serf-lib/'`"
388   INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-serf-lib"
391 if test "$USE_NLS" = "yes"; then
392   BUILD_RULES="$BUILD_RULES locale"
393   INSTALL_RULES="$INSTALL_RULES install-locale"
396 AC_SUBST(BUILD_RULES)
397 AC_SUBST(INSTALL_STATIC_RULES)
398 AC_SUBST(INSTALL_RULES)
399 AC_SUBST(BDB_TEST_DEPS)
400 AC_SUBST(BDB_TEST_PROGRAMS)
402 dnl Check for header files ----------------
404 dnl Standard C headers
405 AC_HEADER_STDC
407 dnl Check for typedefs, structures, and compiler characteristics ----------
409 dnl if compiler doesn't understand `const', then define it empty
410 AC_C_CONST
412 dnl if non-existent, define size_t to be `unsigned'
413 AC_TYPE_SIZE_T
416 dnl Check for library functions ----------
418 dnl libsvn_string uses memcmp()
419 AC_FUNC_MEMCMP
421 dnl svn_error's default warning handler uses vfprintf()
422 AC_FUNC_VPRINTF
424 dnl check for functions needed in special file handling
425 AC_CHECK_FUNCS(symlink readlink)
427         
428 dnl Process some configuration options ----------
430 AC_ARG_WITH(ssl,
431 AS_HELP_STRING([--with-ssl],
432                [This option does NOT affect the Subversion build process in any
433                 way. It enables OpenSSL support in the Neon library. If and
434                 only if you are building Neon as an integrated part of the
435                 Subversion build process, rather than linking to an already
436                 installed version of Neon, you probably want to pass this
437                 option so that Neon (and so indirectly, Subversion) will be
438                 capable of https:// access.]),
441 AC_ARG_ENABLE(debug,
442 AS_HELP_STRING([--enable-debug],
443                [Turn on debugging]),
445     if test "$enableval" = "yes" ; then
446       enable_debugging="yes"
447     else
448       enable_debugging="no"
449     fi
452 AC_ARG_ENABLE(maintainer-mode,
453 AS_HELP_STRING([--enable-maintainer-mode],
454                [Turn on debugging and very strict compile-time warnings]),
456     if test "$enableval" = "yes" ; then
457       if test "$enable_debugging" = "no" ; then
458         AC_MSG_ERROR(Can't have --disable-debug and --enable-maintainer-mode)
459       fi
460       enable_debugging=yes
461       if test "$GCC" = "yes"; then
462         CFLAGS="$CFLAGS -Wpointer-arith -Wwrite-strings -Wshadow"
463         CXXFLAGS="$CXXFLAGS -Wpointer-arith -Wwrite-strings -Wshadow"
464       fi
465     fi
468 if test "$enable_debugging" = "yes" ; then
469   dnl At the moment, we don't want optimization, because we're
470   dnl debugging.
471   CFLAGS=["`echo $CFLAGS' ' | sed -e 's/-O[^ ]* //g'`"]
472   CXXFLAGS=["`echo $CXXFLAGS' ' | sed -e 's/-O[^ ]* //g'`"]
473   dnl SVN_DEBUG enables specific features for developer builds
474   dnl AP_DEBUG enables specific (Apache) features for developer builds
475   CFLAGS="$CFLAGS -DSVN_DEBUG -DAP_DEBUG"
476   CXXFLAGS="$CXXFLAGS -DSVN_DEBUG -DAP_DEBUG"
477 else
478   if test "$enable_debugging" = "no" ; then
479     CFLAGS=["`echo $CFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"]
480     CXXFLAGS=["`echo $CXXFLAGS' ' | sed -e 's/-g[0-9] //g' | sed -e 's/-g//g'`"]
481   fi
485 AC_ARG_WITH(editor,
486 AS_HELP_STRING([--with-editor=PATH],
487                [Specify a default editor for the subversion client.]),
490     if test "$withval" = "yes" ; then
491       AC_MSG_ERROR([--with-editor requires an argument.])
492     else
493       SVN_CLIENT_EDITOR=$withval
494       AC_DEFINE_UNQUOTED(SVN_CLIENT_EDITOR, "$SVN_CLIENT_EDITOR",
495                          [The path of a default editor for the client.])
497     fi
501 SVN_LIB_Z
503 MOD_ACTIVATION="-a"
504 AC_ARG_ENABLE(mod-activation,
505 AS_HELP_STRING([--disable-mod-activation],
506                [Do not enable mod_dav_svn in httpd.conf]),
508     if test "$enableval" = "no" ; then
509       MOD_ACTIVATION=""
510       AC_MSG_NOTICE([Disabling apache module activation])
511     else
512       AC_MSG_NOTICE([Enabling apache module activation])
513     fi
515 AC_SUBST(MOD_ACTIVATION)
519 AC_ARG_ENABLE(gprof,
520 AS_HELP_STRING([--enable-gprof],
521                [Produce gprof profiling data in 'gmon.out' (GCC only).]),
523     if test "$enableval" = "yes" ; then
524       dnl Probably other compilers support -pg or something similar;
525       dnl feel free to extend this to include them.
526       if test "$GCC" = "yes"; then
527         if test "$enable_shared" = "yes" ; then
528           AC_MSG_ERROR(Can't have --enable-gprof without --disable-shared (we
529                   recommend also using --enable-all-static).)
530         fi
531         if test ! "$enable_all_static" = "yes" ; then
532           AC_MSG_WARN(We recommend --enable-all-static with --enable-gprof.)
533         fi
534         AC_MSG_NOTICE([Enabling gprof profiling data (to gmon.out).])
535         CFLAGS="$CFLAGS -pg"
536         CXXFLAGS="$CXXFLAGS -pg"
537         LT_LDFLAGS="$LT_LDFLAGS -pg"
538       else
539         AC_MSG_ERROR(We only support --enable-gprof with GCC right now.)
540       fi
541     fi
545 # Scripting and Bindings languages
547 # Python: Used for testsuite, and bindings
550 PYTHON="`$abs_srcdir/build/find_python.sh`"
551 if test -z "$PYTHON"; then
552   AC_MSG_WARN([Python 2.2 or later is required to run the testsuite])
553   AC_MSG_WARN([or to use the Subversion Python bindings])
554   AC_MSG_WARN([])
555   AC_MSG_WARN([If you have a suitable Python installed, but not on the])
556   AC_MSG_WARN([PATH, set the environment variable PYTHON to the full path])
557   AC_MSG_WARN([to the Python executable, and re-run configure])
559 AC_PATH_PROGS(PYTHON, "$PYTHON", none)
561 # The minimum version for the JVM runtime for our Java bytecode.
562 JAVA_OLDEST_WORKING_VER='1.2'
563 # SVN_CHECK_JDK sets $JAVA_CLASSPATH
564 SVN_CHECK_JDK($JAVA_OLDEST_WORKING_VER)
566 AC_PATH_PROG(PERL, perl, none)
568 AC_PATH_PROG(RUBY, ruby, none)
569 if test "$RUBY" != "none"; then
570   if "$RUBY" -r mkmf -e 'exit(have_func("rb_hash_foreach") ? 0 : 1)'; then
571     AC_PATH_PROG(RDOC, rdoc, none)
572     AC_CACHE_CHECK([for Ruby major version], [svn_cv_ruby_major],[
573     svn_cv_ruby_major="`$RUBY -rrbconfig -e 'print Config::CONFIG.fetch(%q(MAJOR))'`"
574     ])
575     RUBY_MAJOR="$svn_cv_ruby_major"
577     AC_CACHE_CHECK([for Ruby minor version], [svn_cv_ruby_minor],[
578     svn_cv_ruby_minor="`$RUBY -rrbconfig -e 'print Config::CONFIG.fetch(%q(MINOR))'`"
579     ])
580     RUBY_MINOR="$svn_cv_ruby_minor"
582     AC_SUBST(RUBY_MAJOR)
583     AC_SUBST(RUBY_MINOR)
584   else
585     RUBY="none"
586     AC_MSG_WARN([The detected Ruby is too old for Subversion to use])
587     AC_MSG_WARN([A Ruby which has rb_hash_foreach is required to use the])
588     AC_MSG_WARN([Subversion Ruby bindings])
589     AC_MSG_WARN([Upgrade to the official 1.8.2 release, or later])
590   fi
593 SVN_CHECK_SWIG
595 dnl decide whether we want to link against the RA/FS libraries
596 AC_ARG_ENABLE(runtime-module-search,
597 AS_HELP_STRING([--enable-runtime-module-search],
598                [Turn on dynamic loading of RA/FS libraries]),
600     if test "$enableval" = "yes"; then
601       use_dso=yes
602       if test "$enable_shared" = "no"; then
603         AC_MSG_ERROR([--enable-runtime-module-search conflicts with --disable-shared])
604       fi
605       AC_DEFINE(SVN_USE_DSO, 1,
606                 [Defined if svn should try to load DSOs])
607     fi
610 if test "$enable_shared" = "no" || test "$use_dso" != "yes"; then
611   ### We want ra_local first to handle the following scenario:
612   ### user has neon and db3 in /usr/local, and db4 in
613   ### /usr/local/BerkeleyDB.4.0.  If libsvn_ra_neon.la comes before 
614   ### libsvn_fs.la then libtool ends up linking libsvn_fs to the db3
615   ### in /usr/local/lib
616   AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_LOCAL, 1,
617       [Defined if libsvn_client should link against libsvn_ra_local])
618   svn_ra_lib_deps="\$(RA_LOCAL_DEPS)"
619   svn_ra_lib_install_deps="install-ramod-lib"
620   svn_ra_lib_link="\$(RA_LOCAL_LINK)"
622   AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SVN, 1,
623       [Defined if libsvn_client should link against libsvn_ra_svn])
624   svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SVN_DEPS)"
625   svn_ra_lib_link="$svn_ra_lib_link \$(RA_SVN_LINK)"
627   if test "$svn_lib_neon" = "yes"; then
628     AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_NEON, 1,
629           [Defined if libsvn_client should link against libsvn_ra_neon])
630     svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_NEON_DEPS)"
631     svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-neon-lib"
632     svn_ra_lib_link="$svn_ra_lib_link \$(RA_NEON_LINK)"
633   fi
635   if test "$svn_lib_serf" = "yes"; then
636     AC_DEFINE(SVN_LIBSVN_CLIENT_LINKS_RA_SERF, 1,
637           [Defined if libsvn_client should link against libsvn_ra_serf])
638     svn_ra_lib_deps="$svn_ra_lib_deps \$(RA_SERF_DEPS)"
639     svn_ra_lib_install_deps="$svn_ra_lib_install_deps install-serf-lib"
640     svn_ra_lib_link="$svn_ra_lib_link \$(RA_SERF_LINK)"
641   fi
643   SVN_RA_LIB_DEPS=$svn_ra_lib_deps
644   SVN_RA_LIB_INSTALL_DEPS=$svn_ra_lib_install_deps
645   SVN_RA_LIB_LINK=$svn_ra_lib_link
647   AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_FS, 1,
648       [Defined if libsvn_fs should link against libsvn_fs_fs])
649   svn_fs_lib_deps="\$(FS_FS_DEPS)"
650   svn_fs_lib_install_deps="install-fsmod-lib"
651   svn_fs_lib_link="\$(FS_FS_LINK)"
653   if test "$svn_lib_berkeley_db" = "yes"; then
654   AC_DEFINE(SVN_LIBSVN_FS_LINKS_FS_BASE, 1,
655       [Defined if libsvn_fs should link against libsvn_fs_base])
656     svn_fs_lib_deps="$svn_fs_lib_deps \$(FS_BASE_DEPS)"
657     svn_fs_lib_install_deps="$svn_fs_lib_install_deps install-bdb-lib"
658     svn_fs_lib_link="$svn_fs_lib_link \$(FS_BASE_LINK)"
659   fi
661   SVN_FS_LIB_DEPS=$svn_fs_lib_deps
662   SVN_FS_LIB_INSTALL_DEPS=$svn_fs_lib_install_deps
663   SVN_FS_LIB_LINK=$svn_fs_lib_link
666 AC_SUBST(SVN_RA_LIB_DEPS)
667 AC_SUBST(SVN_RA_LIB_INSTALL_DEPS)
668 AC_SUBST(SVN_RA_LIB_LINK)
669 AC_SUBST(SVN_FS_LIB_DEPS)
670 AC_SUBST(SVN_FS_LIB_INSTALL_DEPS)
671 AC_SUBST(SVN_FS_LIB_LINK)
673 # ==== JavaHL ================================================================
675 dnl Possibly compile JavaHL
676 do_javahl_build=no
677 AC_ARG_ENABLE(javahl,
678   AS_HELP_STRING([--enable-javahl],
679              [Enable compilation of Java high-level bindings (requires C++)]),
680   [ if test "$enableval" = "yes" ; then
681         do_javahl_build="yes"
682     fi
683   ])
685 JAVAHL_OBJDIR=""
686 INSTALL_EXTRA_JAVAHL_LIB=""
687 FIX_JAVAHL_LIB=""
688 JAVAHL_TESTS_TARGET=""
689 LT_CXX_LIBADD=""
690 if test "$do_javahl_build" = "yes"; then
691   dnl Check for suitable JDK
692   if test "$JDK_SUITABLE" = "no"; then
693     AC_MSG_ERROR([Cannot compile JavaHL without a suitable JDK. 
694                   Please specify a suitable JDK using the --with-jdk option.])
695   fi
696   
697   AC_PROG_CXX
698   
699   dnl The temporary directory where libtool compiles libsvnjavahl.
700   dnl N.B. objdir is "the name of the directory that contains temporary
701   dnl libtool files" and it is set by libtool.m4
702   JAVAHL_OBJDIR='$(libsvnjavahl_PATH)'/$objdir
703   
704   os_arch=`uname`
705   if test "$os_arch" = "Darwin"; then
706     dnl On Darwin, JNI libs must be installed as .jnilib
707     INSTALL_EXTRA_JAVAHL_LIB='ln -sf $(libdir)/libsvnjavahl-1.dylib $(libdir)/libsvnjavahl-1.jnilib'
708     FIX_JAVAHL_LIB="ln -sf libsvnjavahl-1.dylib $JAVAHL_OBJDIR/libsvnjavahl-1.jnilib"
709   fi
710   # This segment (and the rest of r10800) is very likely unnecessary
711   # with libtool 1.5, which automatically adds libstdc++ as a
712   # dependency to the C++ libraries it builds.  So at some future time
713   # when autogen.sh requires libtool 1.5 or higher, we can get rid of
714   # it.
715   AC_MSG_CHECKING([for additional flags to link C++ libraries])
716   if test "x$ac_compiler_gnu" = "xyes"; then
717     LT_CXX_LIBADD="-lstdc++"
718     AC_MSG_RESULT([$LT_CXX_LIBADD])
719   else
720     AC_MSG_RESULT([none needed])
721   fi
723 AC_SUBST(INSTALL_EXTRA_JAVAHL_LIB)
724 AC_SUBST(JAVAHL_OBJDIR)
725 AC_SUBST(FIX_JAVAHL_LIB)
726 AC_SUBST(LT_CXX_LIBADD)
728 AC_ARG_WITH(junit,
729 AS_HELP_STRING([--with-junit=PATH],
730                [Specify a path to the junit JAR file.]),
732     if test "$withval" = "yes" ; then
733       AC_MSG_ERROR([--with-junit requires an argument.])
734     else
735       if test -n "$JAVA_CLASSPATH"; then
736         JAVA_CLASSPATH="$withval:$JAVA_CLASSPATH"
737       else
738         JAVA_CLASSPATH="$withval"
739       fi
740       JAVAHL_TESTS_TARGET="javahl-tests"
741     fi
743 AC_SUBST(JAVA_CLASSPATH)
744 AC_SUBST(JAVAHL_TESTS_TARGET)
746 # ==== Miscellaneous bits ====================================================
748 dnl Since this is used only on Unix-y systems, define the path separator as '/'
749 AC_DEFINE_UNQUOTED(SVN_PATH_LOCAL_SEPARATOR, '/',
750         [Defined to be the path separator used on your local filesystem])
752 AC_DEFINE_UNQUOTED(SVN_NULL_DEVICE_NAME, "/dev/null",
753         [Defined to be the null device for the system])
755 DEFAULT_FS_TYPE="fsfs"
756 AC_DEFINE_UNQUOTED(DEFAULT_FS_TYPE, "$DEFAULT_FS_TYPE",
757                    [The fs type to use by default])
759 # BSD/OS (BSDi) needs to use a different include syntax in Makefile
760 INCLUDE_OUTPUTS="include \$(top_srcdir)/build-outputs.mk"
761 case "$host" in
762   *bsdi*)
763     # Check whether they've installed GNU make
764     if ! make --version > /dev/null 2>&1; then 
765       # BSDi make
766       INCLUDE_OUTPUTS=".include \"\$(top_srcdir)/build-outputs.mk\""
767     fi
768     ;;
769 esac
770 AC_SUBST(INCLUDE_OUTPUTS)
772 # ==== Detection complete - output and run config.status =====================
774 AC_CONFIG_HEADER(subversion/svn_private_config.h)
775 AC_CONFIG_FILES([Makefile])
776 AC_CONFIG_COMMANDS(mkdir-init, [make mkdir-init])
778 SVN_CONFIG_SCRIPT(tools/backup/hot-backup.py)
779 SVN_CONFIG_SCRIPT(contrib/client-side/svn_load_dirs/svn_load_dirs.pl)
780 SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/svncopy.pl)
781 SVN_CONFIG_SCRIPT(contrib/client-side/svncopy/testsvncopy.pl)
782 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-access-control.pl)
783 SVN_CONFIG_SCRIPT(tools/hook-scripts/commit-email.pl)
784 SVN_CONFIG_SCRIPT(subversion/bindings/swig/perl/native/Makefile.PL)
785 SVN_CONFIG_SCRIPT(packages/solaris/pkginfo)
786 AC_SUBST(SVN_CONFIG_SCRIPT_FILES)
788 AC_OUTPUT
790 # ==== Print final messages to user ==========================================
792 dnl Configure is long - users tend to miss warnings printed during it.
793 dnl Hence, print a warnings about what we did and didn't configure at the 
794 dnl end, where people will actually see them.
796 case "$svn_lib_berkeley_db" in
797   "no" )
798     db_version="$SVN_FS_WANT_DB_MAJOR.$SVN_FS_WANT_DB_MINOR.$SVN_FS_WANT_DB_PATCH"
799     AC_MSG_WARN([we have configured without BDB filesystem support
802 You don't seem to have Berkeley DB version $db_version or newer
803 installed and linked to APR-UTIL.  We have created Makefiles which
804 will build without the Berkeley DB back-end; your repositories will
805 use FSFS as the default back-end.  You can find the latest version of
806 Berkeley DB here:
807   http://www.oracle.com/technology/software/products/berkeley-db/index.html
810 esac