+dnl $Id: db3-check.m4,v 1.11.6.9.2.2 2006-09-09 01:36:39 didg Exp $
+dnl Autoconf macros to check for the Berkeley DB library
+
+
+AC_DEFUN([NETATALK_BDB_LINK_TRY],
+[if test $atalk_cv_lib_db = no ; then
+ AC_MSG_CHECKING([for Berkeley DB link (]ifelse($2,,default,$2)[)])
+ atalk_DB_LIB=ifelse($2,,-ldb,$2)
+ atalk_LIBS=$LIBS
+ LIBS="$atalk_DB_LIB $LIBS"
+
+ AC_TRY_LINK([
+#include <db.h>
+],[
+ char *version;
+ int major, minor, patch;
+
+ version = db_version( &major, &minor, &patch );
+ return (0);
+],[$1=yes],[$1=no])
+
+ AC_MSG_RESULT([$$1])
+ LIBS="$atalk_LIBS"
+ if test $$1 = yes ; then
+ atalk_cv_lib_db=ifelse($2,,-ldb,$2)
+ fi
+fi
+])
+
+
+AC_DEFUN([NETATALK_BDB_CHECK_VERSION],
+[
+ atalk_LIBS=$LIBS
+ LIBS="${atalk_cv_lib_db} $LIBS"
+
+ AC_MSG_CHECKING([Berkeley DB library version >= ${DB_MAJOR_REQ}.${DB_MINOR_REQ}.${DB_PATCH_REQ}])
+ AC_TRY_RUN([
+#if STDC_HEADERS
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <db.h>
+
+int main(void) {
+ int major, minor, patch;
+ char *version_str;
+
+ version_str = db_version(&major, &minor, &patch);
+
+ /* check library version */
+ if (major < DB_MAJOR_REQ || minor < DB_MINOR_REQ || patch < DB_PATCH_REQ) {
+ printf("library version too old (%d.%d.%d), ",major, minor, patch);
+ return (2);
+ }
+
+ /* check header and library match */
+ if ( major != DB_VERSION_MAJOR || minor != DB_VERSION_MINOR || patch != DB_VERSION_PATCH) {
+ printf("header/library version mismatch (%d.%d.%d/%d.%d.%d), ",
+ DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH, major, minor, patch);
+ return (3);
+ }
+
+ printf("%d.%d.%d, ",major, minor, patch);
+ return (0);
+}
+], atalk_cv_bdb_version="yes", atalk_cv_bdb_version="no", atalk_cv_bdb_version="cross")
+
+
+ if test ${atalk_cv_bdb_version} = "yes"; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ LIBS="$atalk_LIBS"
+])
+
+
+AC_DEFUN([NETATALK_BDB_HEADER],
+[
+ savedcflags="$CFLAGS"
+ CFLAGS="-I$1 $CFLAGS"
+ dnl check for header version
+ AC_MSG_CHECKING(ifelse($1,,default,$1)[/db.h version >= ${DB_MAJOR_REQ}.${DB_MINOR_REQ}.${DB_PATCH_REQ}])
+ AC_TRY_RUN([
+#if STDC_HEADERS
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <db.h>
+
+int main(void) {
+
+ /* check header version */
+ if (DB_VERSION_MAJOR < DB_MAJOR_REQ || DB_VERSION_MINOR < DB_MINOR_REQ ||
+ DB_VERSION_PATCH < DB_PATCH_REQ ) {
+ printf("header file version too old (%d.%d.%d), ", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
+ return (1);
+ }
+
+ printf("%d.%d.%d, ", DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
+ return (0);
+}
+], atalk_cv_bdbheader="yes", atalk_cv_bdbheader="no", atalk_cv_bdbheader="cross")
+
+ if test ${atalk_cv_bdbheader} = "no"; then
+ bdbfound=no
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ CFLAGS="$savedcflags"
+])
+
+dnl I don't understand this stuff below
+dnl AFAIK it works for 4.1 and 4.2 and (4.3 xor 4.4)
+dnl you can have 4.2 and 4.3 installed
+dnl but If you have 4.3 and 4.4 it won't work with 4.3
+dnl only 4.4
+dnl didier
+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.4])
+NETATALK_BDB_LINK_TRY(atalk_cv_db_db42,[-ldb44])
+NETATALK_BDB_LINK_TRY(atalk_cv_db_db_42,[-ldb-44])
+NETATALK_BDB_LINK_TRY(atalk_cv_db_db_4_2,[-ldb-4-4])
+
+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])
+])
+