- AC_CHECK_FUNC(dbopen,[ol_cv_lib_db=yes], [
- AC_CHECK_LIB(db1,dbopen,[ol_cv_lib_db=-ldb1],[
- AC_CHECK_LIB(db,dbopen,[ol_cv_lib_db=-ldb],
- [ol_cv_lib_db=no])
- ])
- ])
+ if test $ol_cv_lib_db != yes ; then
+ LIBS="$ol_cv_lib_db"
+ fi
+
+ AC_TRY_RUN([
+#ifdef HAVE_DB_185_H
+ choke me;
+#else
+#include <db.h>
+#endif
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+main()
+{
+ int rc;
+ u_int32_t flags = DB_CREATE | DB_THREAD;
+
+#if DB_VERSION_MAJOR > 2
+ DB_ENV *env = NULL;
+
+ rc = db_env_create( &env, 0 );
+
+ if( rc == 0 ) {
+#if (DB_VERSION_MAJOR > 3) || (DB_VERSION_MINOR >= 1)
+ rc = env->open( env, NULL, flags, 0 );
+#else
+ rc = env->open( env, NULL, NULL, flags, 0 );
+#endif
+ }
+
+#else
+ DB_ENV env;
+ memset( &env, '\0', sizeof(env) );
+
+ rc = db_appinit( NULL, NULL, &env, flags );
+
+ if( rc == 0 ) {
+ db_appexit( &env );
+ }
+#endif
+#if DB_VERSION_MAJOR > 2
+#if (DB_VERSION_MAJOR > 3) || (DB_VERSION_MINOR >= 1)
+ env->remove( env, NULL, DB_FORCE);
+#else
+ env->remove( env, NULL, NULL, DB_FORCE);
+#endif
+#endif
+
+ return rc;
+}],
+ [ol_cv_berkeley_db_thread=yes],
+ [ol_cv_berkeley_db_thread=no],
+ [ol_cv_berkeley_db_thread=cross])
+