AC_DEFUN(SVN_LIB_BERKELEY_DB,
[
db_version=$1.$2.$3
AC_ARG_WITH(berkeley-db,
[ --with-berkeley-db=PATH
The Subversion Berkeley DB based filesystem library
requires Berkeley DB $db_version or newer. If you
specify `--without-berkeley-db', that library will
not be built. Otherwise, the configure script builds
that library if and only if APR-UTIL is linked
against a new enough version of Berkeley DB.
If and only if you are building APR-UTIL as part of
the Subversion build process, you may help APR-UTIL
to find the correct Berkeley DB installation by
passing a PATH to this option, to cause APR-UTIL to
look for the Berkeley DB header and library in
`PATH/include' and `PATH/lib'. If PATH is of the
form `HEADER:LIB', then search for header files in
HEADER, and the library in LIB. If you omit the
`=PATH' part completely, the configure script will
search for Berkeley DB in a number of standard
places.],
[
if test "$withval" = "no"; then
status=skip
else
apu_db_version="`$apu_config --db-version`"
if test $? -ne 0; then
AC_MSG_ERROR([Can't determine whether apr-util is linked against a
proper version of Berkeley DB.])
fi
if test "$withval" = "yes"; then
if test "$apu_db_version" != "4"; then
AC_MSG_ERROR([APR-UTIL wasn't linked against Berkeley DB 4,
while the fs component is required. Reinstall
APR-UTIL with the appropiate options.])
fi
status=required
elif test "$apu_found" != "reconfig"; then
if test "$apu_db_version" != 4; then
AC_MSG_ERROR([APR-UTIL was installed independently, it won't be
possible to use the specified Berkeley DB: $withval])
fi
AC_MSG_WARN([APR-UTIL may or may not be using the specified
Berkeley DB at `$withval'. Using the Berkeley DB
supplied by APR-UTIL.])
status=required
fi
fi
],
[
apu_db_version="`$apu_config --db-version`"
if test $? -ne 0; then
AC_MSG_WARN([Detected older version of APR-UTIL, trying to determine
whether apr-util is linked against Berkeley DB
$db_version])
status=try-link
elif test "$apu_db_version" != "4"; then
status=skip
else
status=try-link
fi
])
if test "$status" = "skip"; then
svn_lib_berkeley_db=no
else
AC_MSG_CHECKING([for availability of Berkeley DB])
SVN_LIB_BERKELEY_DB_TRY($1, $2, $3)
if test "$svn_have_berkeley_db" = "yes"; then
AC_MSG_RESULT([yes])
svn_lib_berkeley_db=yes
else
AC_MSG_RESULT([no])
svn_lib_berkeley_db=no
if test "$status" = "required"; then
AC_MSG_ERROR([Berkeley DB $db_version wasn't found.])
fi
fi
fi
])
AC_DEFUN(SVN_LIB_BERKELEY_DB_TRY,
[
svn_lib_berkeley_db_try_save_cppflags="$CPPFLAGS"
svn_lib_berkeley_db_try_save_libs="$LIBS"
svn_check_berkeley_db_major=$1
svn_check_berkeley_db_minor=$2
svn_check_berkeley_db_patch=$3
svn_apu_bdb_lib=["`$apu_config --libs | sed -e 's/.*\(-ldb[^ ]*\).*/\1/'`"]
CPPFLAGS="$SVN_APRUTIL_INCLUDES $CPPFLAGS"
LIBS="`$apu_config --ldflags` $svn_apu_bdb_lib $LIBS"
AC_TRY_RUN(
[
int main ()
{
int major, minor, patch;
db_version (&major, &minor, &patch);
/* Sanity check: ensure that db.h constants actually match the db library */
if (major != DB_VERSION_MAJOR
|| minor != DB_VERSION_MINOR
|| patch != DB_VERSION_PATCH)
exit (1);
/* Run-time check: ensure the library claims to be the correct version. */
if (major < $svn_check_berkeley_db_major)
exit (1);
if (major > $svn_check_berkeley_db_major)
exit (0);
if (minor < $svn_check_berkeley_db_minor)
exit (1);
if (minor > $svn_check_berkeley_db_minor)
exit (0);
if (patch >= $svn_check_berkeley_db_patch)
exit (0);
else
exit (1);
}
],
[svn_have_berkeley_db=yes],
[svn_have_berkeley_db=no],
[svn_have_berkeley_db=yes]
)
CPPFLAGS="$svn_lib_berkeley_db_try_save_cppflags"
LIBS="$svn_lib_berkeley_db_try_save_libs"
]
)