- CFLAGS="$savedcflags"
-])
-
-
-AC_DEFUN([NETATALK_BERKELEY_LINK],
-[
-atalk_cv_lib_db=no
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.2])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb42])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-42])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-2])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_2,[-ldb-4.3])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb43])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-43])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-3])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_dot_1,[-ldb-4.1])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db41,[-ldb41])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_41,[-ldb-41])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_1,[-ldb-4-1])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4,[-ldb-4])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db4,[-ldb4])
-NETATALK_BDB_LINK_TRY(atalk_cv_db_db,[-ldb])
-])
-
-
-AC_DEFUN([AC_PATH_BDB],
-[
- trybdbdir=""
- dobdbsearch=yes
- bdb_search_dirs="/usr/local/include /usr/include"
- search_subdirs="/db4.2 /db42 /db4.3 /db43 /db4.1 /db41 /db4 /"
-
-dnl required BDB version
- DB_MAJOR_REQ=4
- DB_MINOR_REQ=1
- DB_PATCH_REQ=0
-
-dnl make sure atalk_libname is defined beforehand
-[[ -n "$atalk_libname" ]] || AC_MSG_ERROR([internal error, atalk_libname undefined])
-
-dnl define the required BDB version
- AC_DEFINE_UNQUOTED(DB_MAJOR_REQ, ${DB_MAJOR_REQ}, [Required BDB version, major])
- AC_DEFINE_UNQUOTED(DB_MINOR_REQ, ${DB_MINOR_REQ}, [Required BDB version, minor])
- AC_DEFINE_UNQUOTED(DB_PATCH_REQ, ${DB_PATCH_REQ}, [Required BDB version, patch])
-
-
- AC_ARG_WITH(bdb,
- [ --with-bdb=PATH specify path to Berkeley DB installation[[auto]]],
- if test "x$withval" = "xno"; then
- dobdbsearch=no
- elif test "x$withval" = "xyes"; then
- dobdbsearch=yes
- else
- bdb_search_dirs="$withval/include $withval"
- fi
- )
-
-
- bdbfound=no
- savedcflags="$CFLAGS"
- savedldflags="$LDFLAGS"
- savedcppflags="$CPPFLAGS"
- savedlibs="$LIBS"
-
- if test "x$dobdbsearch" = "xyes"; then
- for bdbdir in $bdb_search_dirs; do
- if test $bdbfound = "yes"; then
- break;
- fi
- for subdir in ${search_subdirs}; do
- AC_MSG_CHECKING([for Berkeley DB headers in ${bdbdir}${subdir}])
- if test -f "${bdbdir}${subdir}/db.h" ; then
- AC_MSG_RESULT([yes])
- NETATALK_BDB_HEADER([${bdbdir}${subdir}])
- if test ${atalk_cv_bdbheader} != "no"; then
-
-dnl bdblibdir="`echo $bdbdir | sed 's/\/include\/db4\.*.*//'`"
- bdblibdir="`echo $bdbdir | sed 's/\/include\/db4.*//'`"
- bdblibdir="`echo $bdblibdir | sed 's/\/include$//'`"
- bdblibdir="${bdblibdir}/${atalk_libname}"
-dnl bdbbindir="`echo $bdbdir | sed 's/include\/db4\.*.*/bin/'`"
- bdbbindir="`echo $bdbdir | sed 's/\/include\/db4.*/bin/'`"
- bdbbindir="`echo $bdbbindir | sed 's/include$/bin/'`"
-
- CPPFLAGS="-I${bdbdir}${subdir} $CFLAGS"
- CFLAGS=""
- LDFLAGS="-L$bdblibdir $LDFLAGS"
- NETATALK_BERKELEY_LINK
- if test x"${atalk_cv_lib_db}" != x"no"; then
- NETATALK_BDB_CHECK_VERSION
- if test x"${atalk_cv_bdb_version}" != x"no"; then
- BDB_LIBS="-L${bdblibdir} ${atalk_cv_lib_db}"
- BDB_CFLAGS="-I${bdbdir}${subdir}"
- BDB_BIN=$bdbbindir
- BDB_PATH="`echo $bdbdir | sed 's,include\/db4$,,'`"
- BDB_PATH="`echo $BDB_PATH | sed 's,include$,,'`"
- bdbfound=yes
- break;
- fi
- fi
- CFLAGS="$savedcflags"
- LDFLAGS="$savedldflags"
- CPPFLAGS="$savedcppflags"
- LIBS="$savedlibs"
- fi
- else
- AC_MSG_RESULT([no])
- fi
- done
- done
- fi
-
- CFLAGS="$savedcflags"
- LDFLAGS="$savedldflags"
- CPPFLAGS="$savedcppflags"
- LIBS="$savedlibs"
-
- if test "x$bdbfound" = "xyes"; then
- ifelse([$1], , :, [$1])
- else
- ifelse([$2], , :, [$2])
- fi
-
- CFLAGS_REMOVE_USR_INCLUDE(BDB_CFLAGS)
- LIB_REMOVE_USR_LIB(BDB_LIBS)
- AC_SUBST(BDB_CFLAGS)
- AC_SUBST(BDB_LIBS)
- AC_SUBST(BDB_BIN)
- AC_SUBST(BDB_PATH)
+ )
+
+ if test "x$dobdbsearch" = "xyes"; then
+ for bdbdir in $bdb_search_dirs; do
+ if test $bdbfound = "yes"; then
+ break;
+ fi
+ for subdir in ${search_subdirs}; do
+ AC_MSG_CHECKING([for Berkeley DB headers in ${bdbdir}/include${subdir}])
+ dnl -- First check the mere existence of the header
+ if test -f "${bdbdir}/include${subdir}/db.h" ; then
+ AC_MSG_RESULT([yes])
+
+ dnl -- Check if it meets minimun requirement, also return the version
+ NETATALK_BDB_HEADER([${bdbdir}/include${subdir}])
+
+ if test ${atalk_cv_bdbheader} != "no"; then
+ bdblibdir="${bdbdir}/${atalk_libname}"
+ bdbbindir="${bdbdir}/bin"
+
+ CPPFLAGS="-I${bdbdir}/include${subdir} $CPPFLAGS"
+ LDFLAGS="-L$bdblibdir $LDFLAGS"
+
+ dnl -- Uses version set by NETATALK_BDB_HEADER to try to run
+ dnl -- a conftest that checks that header/lib version match
+ dnl -- $shlibpath_var is set by LIBTOOL, its value is
+ dnl -- LD_LIBRARY_PATH on many platforms. This will be fairly
+ dnl -- portable hopefully. Reference:
+ dnl -- http://lists.gnu.org/archive/html/autoconf/2009-03/msg00040.html
+ 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
+
+ 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"
+ CPPFLAGS="$savedcppflags"
+ LIBS="$savedlibs"
+ else
+ AC_MSG_RESULT([no])
+ fi
+ done
+ done
+ fi
+
+ CFLAGS="$savedcflags"
+ 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)
+ LIB_REMOVE_USR_LIB(BDB_LIBS)
+ AC_SUBST(BDB_CFLAGS)
+ AC_SUBST(BDB_LIBS)
+ AC_SUBST(BDB_BIN)
+ AC_SUBST(BDB_PATH)
+fi