📄 berkeley-db.m4
字号:
dnl SVN_LIB_BERKELEY_DB(major, minor, patch)dnldnl Compare if the DB provided by APR-UTIL is no older than thednl version given by MAJOR, MINOR, and PATCH.dnldnl If we find a useable version, set the shell variablednl `svn_lib_berkeley_db' to `yes'. Otherwise, set `svn_lib_berkeley_db'dnl to `no'.dnldnl This macro also checks for the `--with-berkeley-db=PATH' flag;dnl if given, the macro will use the PATH specified, and thednl configuration script will die if it can't find the library. Ifdnl the user gives the `--without-berkeley-db' flag, the entirednl search is skipped.AC_DEFUN(SVN_LIB_BERKELEY_DB,[ db_version=$1.$2.$3 dnl Process the `with-berkeley-db' switch. We set `status' to one dnl of the following values: dnl `required' --- the user specified that they did want to use dnl Berkeley DB, so abort the configuration if we cannot find it. dnl `try-link' --- See if APR-UTIL supplies the correct DB version; dnl if it doesn't, just do not build the bdb based filesystem. dnl `skip' --- Do not look for Berkeley DB, and do not build the dnl bdb based filesystem. dnl dnl Finding it is defined as doing a runtime check against the db dnl that is supplied by APR-UTIL. dnl Assuming `status' is not `skip', we do a runtime check against the db dnl that is supplied by APR-UTIL. dnl dnl Since APR-UTIL uses --with-berkeley-db as well, and we pass it dnl through when APR-UTIL is in the tree, we also accept a place spec dnl as argument, and handle that case specifically. dnl dnl A `place spec' is either: dnl - a directory prefix P, indicating we should look for headers in dnl P/include and libraries in P/lib, or dnl - a string of the form `HEADER:LIB', indicating that we should look dnl for headers in HEADER and libraries in LIB. 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 ], [ # No --with-berkeley-db option: # # Check if APR-UTIL is providing the correct Berkeley DB version # for us. # 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])dnl SVN_LIB_BERKELEY_DB_TRY(major, minor, patch)dnldnl A subroutine of SVN_LIB_BERKELEY_DB.dnldnl Check that a new-enough version of Berkeley DB is installed.dnl "New enough" means no older than the version given by MAJOR,dnl MINOR, and PATCH. The result of the test is not cached; nodnl messages are printed.dnldnl Set the shell variable `svn_have_berkeley_db' to `yes' if we founddnl an appropriate version via APR-UTIL, or `no' otherwise.dnldnl This macro uses the Berkeley DB library function `db_version' todnl find the version. If the library linked to APR-UTIL doesn't have thisdnl function, then this macro assumes it is too old.dnl NOTE: This is pretty messed up. It seems that the FreeBSD port ofdnl Berkeley DB 4 puts the header file in /usr/local/include/db4, but thednl database library in /usr/local/lib, as libdb4.[a|so]. There is nodnl /usr/local/include/db.h. So if you check for /usr/local first, you'lldnl get the old header file from /usr/include, and the new library fromdnl /usr/local/lib. Disaster. Thus this test compares the version constantsdnl in the db.h header with the ones returned by db_version().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 # Extract only the -ldb.* flag from the libs supplied by apu-config # Otherwise we get bit by the fact that expat might not be built yet # Or that it resides in a non-standard location which we would have # to compensate with using something like -R`$apu_config --prefix`/lib. # 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( [#include <stdlib.h>#define APU_WANT_DB#include <apu_want.h>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" ])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -