X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=macros%2Fdb3-check.m4;h=4135e5ce2801915853e598ef0f8596726b4bcc42;hp=e2160d9fc9b1bb75604f33b6863852f0a836cea0;hb=ec0ae51672bb9f91be79ba28edd70ac36bf36211;hpb=347b337b27ec993fa438749c407c48f8b7a7c3b2 diff --git a/macros/db3-check.m4 b/macros/db3-check.m4 index e2160d9f..4135e5ce 100644 --- a/macros/db3-check.m4 +++ b/macros/db3-check.m4 @@ -1,4 +1,3 @@ -dnl $Id: db3-check.m4,v 1.18 2009-04-21 08:55:44 franklahm Exp $ dnl Autoconf macros to check for the Berkeley DB library dnl -- check header for minimum version and return version in @@ -10,7 +9,10 @@ AC_DEFUN([NETATALK_BDB_HEADER],[ atalk_cv_bdb_MAJOR=`grep DB_VERSION_MAJOR "$1/db.h" | cut -f 3` atalk_cv_bdb_MINOR=`grep DB_VERSION_MINOR "$1/db.h" | cut -f 3` - if test $DB_MAJOR_REQ -gt $atalk_cv_bdb_MAJOR ; then + if test $atalk_cv_bdb_MAJOR -gt $DB_MAJOR_REQ ; then + AC_MSG_RESULT([yes]) + atalk_cv_bdbheader=yes + elif test $DB_MAJOR_REQ -gt $atalk_cv_bdb_MAJOR ; then AC_MSG_RESULT([no]) atalk_cv_bdbheader=no elif test $DB_MINOR_REQ -gt $atalk_cv_bdb_MINOR ; then @@ -28,11 +30,11 @@ AC_DEFUN([NETATALK_BDB_TRY_LINK],[ atalk_cv_bdb_version=no maj=$atalk_cv_bdb_MAJOR min=$atalk_cv_bdb_MINOR - atalk_cv_bdb_try_libs="-ldb$maj$min -ldb$maj.$min -ldb-$maj$min -ldb-$maj.$min" + atalk_cv_bdb_try_libs="db$maj$min db$maj.$min db-$maj$min db-$maj.$min db$maj-$maj.$min db" for lib in $atalk_cv_bdb_try_libs ; do - LIBS="$lib $savedlibs" - AC_MSG_CHECKING([Berkeley DB library ($lib)]) + LIBS="-l$lib $savedlibs" + AC_MSG_CHECKING([Berkeley DB library (-l$lib)]) AC_TRY_RUN([ #include #include @@ -40,7 +42,7 @@ AC_DEFUN([NETATALK_BDB_TRY_LINK],[ int major, minor, patch; char *version_str; version_str = db_version(&major, &minor, &patch); - if (major < DB_MAJOR_REQ || minor < DB_MINOR_REQ || patch < DB_PATCH_REQ) { + if ((major*100 + minor*10 + patch) < (DB_MAJOR_REQ*100 + DB_MINOR_REQ*10 + DB_PATCH_REQ)) { printf("linking wrong library version (%d.%d.%d), ",major, minor, patch); return (2); } @@ -53,32 +55,55 @@ AC_DEFUN([NETATALK_BDB_TRY_LINK],[ return (0); } ],[ - AC_MSG_RESULT(yes) atalk_cv_bdb_version="yes" - atalk_cv_lib_db="$lib" + atalk_cv_lib_db="-l$lib" break ],[ AC_MSG_RESULT(no) + ],[ + bdblibs=`ls $bdblibdir/lib$lib.* 2>/dev/null` + for bdblib in $bdblibs ; do + echo "Testing for lib file $bdblib" >&AS_MESSAGE_LOG_FD + if test -f "$bdblib" ; then + AC_MSG_RESULT([yes (cross-compiling)]) + atalk_cv_bdb_version="yes" + atalk_cv_lib_db="-l$lib" + break + fi + done + if test "x$atalk_cv_bdb_version" = "xyes" ; then + break + fi + AC_MSG_RESULT([no (cross-compiling)]) ]) done LIBS="$savedlibs" ]) dnl -- This is called from configure -AC_DEFUN([AC_PATH_BDB],[ +AC_DEFUN([AC_NETATALK_PATH_BDB],[ +if test "x$bdb_required" = "xyes"; then trybdbdir="" dobdbsearch=yes bdb_search_dirs="/usr/local /usr" - search_subdirs="/ /db4.7 /db47 /db4.6 /db46 /db4.5 /db45 /db4.4 /db44 /db4" + search_subdirs="/ /db5 /db5.1 /db51 /db5.0 /db50 /db4.8 /db48 /db4.7 /db47 /db4.6 /db46 /db4" - dnl required BDB version: 4.4, because of DB_AUTO_COMMIT + bdbfound=no + savedcflags="$CFLAGS" + savedldflags="$LDFLAGS" + savedcppflags="$CPPFLAGS" + savedlibs="$LIBS" + saved_shlibpath_var=$shlibpath_var + + dnl required BDB version: 4.6, because of cursor API change DB_MAJOR_REQ=4 - DB_MINOR_REQ=4 + DB_MINOR_REQ=6 DB_PATCH_REQ=0 dnl make sure atalk_libname is defined beforehand [[ -n "$atalk_libname" ]] || AC_MSG_ERROR([internal error, atalk_libname undefined]) + saved_atalk_libname=$atalk_libname dnl define the required BDB version AC_DEFINE_UNQUOTED(DB_MAJOR_REQ, ${DB_MAJOR_REQ}, [Required BDB version, major]) @@ -96,13 +121,6 @@ AC_DEFUN([AC_PATH_BDB],[ fi ) - bdbfound=no - savedcflags="$CFLAGS" - savedldflags="$LDFLAGS" - savedcppflags="$CPPFLAGS" - savedlibs="$LIBS" - saved_shlibpath_var=$shlibpath_var - if test "x$dobdbsearch" = "xyes"; then for bdbdir in $bdb_search_dirs; do if test $bdbfound = "yes"; then @@ -137,11 +155,41 @@ AC_DEFUN([AC_PATH_BDB],[ if test x"${atalk_cv_bdb_version}" = x"yes"; then BDB_CFLAGS="-I${bdbdir}/include${subdir}" BDB_LIBS="-L${bdblibdir} ${atalk_cv_lib_db}" + if test x"$need_dash_r" = x"yes"; then + BDB_LIBS="$BDB_LIBS -R${bdblibdir}" + fi BDB_BIN="$bdbbindir" BDB_PATH="$bdbdir" bdbfound=yes break; fi + + dnl -- Search lib in "lib" too, as $atalk_libname might be set + dnl -- to "lib64" or "lib/64" which would not be found above + dnl -- if 64bit lib were installed in a dir named "lib" + if test x"$atalk_libname" != x"lib" ; then + bdblibdir="${bdbdir}/lib" + bdbbindir="${bdbdir}/bin" + + CPPFLAGS="-I${bdbdir}/include${subdir} $CPPFLAGS" + LDFLAGS="-L$bdblibdir $LDFLAGS" + + eval export $shlibpath_var=$bdblibdir + NETATALK_BDB_TRY_LINK + eval export $shlibpath_var=$saved_shlibpath_var + + if test x"${atalk_cv_bdb_version}" = x"yes"; then + BDB_CFLAGS="-I${bdbdir}/include${subdir}" + BDB_LIBS="-L${bdblibdir} ${atalk_cv_lib_db}" + if test x"$need_dash_r" = x"yes"; then + BDB_LIBS="$BDB_LIBS -R${bdblibdir}" + fi + BDB_BIN="$bdbbindir" + BDB_PATH="$bdbdir" + bdbfound=yes + break; + fi + fi fi CFLAGS="$savedcflags" LDFLAGS="$savedldflags" @@ -158,11 +206,13 @@ AC_DEFUN([AC_PATH_BDB],[ LDFLAGS="$savedldflags" CPPFLAGS="$savedcppflags" LIBS="$savedlibs" + atalk_libname=$saved_atalk_libname if test "x$bdbfound" = "xyes"; then ifelse([$1], , :, [$1]) else ifelse([$2], , :, [$2]) + AC_MSG_ERROR([Berkeley DB library required but not found!]) fi CFLAGS_REMOVE_USR_INCLUDE(BDB_CFLAGS) @@ -171,6 +221,7 @@ AC_DEFUN([AC_PATH_BDB],[ AC_SUBST(BDB_LIBS) AC_SUBST(BDB_BIN) AC_SUBST(BDB_PATH) +fi ])