db.m4 revision 1.1.1.5
1dnl Id 2dnl 3dnl tests for various db libraries 4dnl 5 6AC_DEFUN([rk_DB],[ 7AC_ARG_WITH(db-type-preference, 8 AS_HELP_STRING([--with-db-type-preference=list], 9 [specify HDB backend DB type preference as whitespace-separated list of db1, db3, lmdb, and/or sqlite]), 10 [db_type_preference="$withval"], 11 [db_type_preference="lmdb db3 db1 sqlite"]) 12AC_ARG_WITH(berkeley-db, 13 AS_HELP_STRING([--with-berkeley-db], 14 [enable support for berkeley db @<:@default=check@:>@]), 15 [], 16 [with_berkeley_db=check]) 17 18dbheader="" 19AC_ARG_WITH(berkeley-db-include, 20 AS_HELP_STRING([--with-berkeley-db-include=dir], 21 [use berkeley-db headers in dir]), 22 [dbheader=$withval], 23 [with_berkeley_db_include=check]) 24 25AC_ARG_ENABLE(ndbm-db, 26 AS_HELP_STRING([--disable-ndbm-db], 27 [if you don't want ndbm db]),[ 28]) 29 30AC_ARG_ENABLE(mdb-db, 31 AS_HELP_STRING([--disable-mdb-db], 32 [if you don't want LMDB]),[ 33]) 34 35have_db1=no 36have_db3=no 37have_lmdb=no 38db_type=unknown 39 40AS_IF([test "x$with_berkeley_db" != xno], 41 [AS_IF([test "x$with_berkeley_db_include" != xcheck], 42 [AC_CHECK_HEADERS(["$dbheader/db.h"], 43 [AC_SUBST([DBHEADER], [$dbheader]) 44 AC_DEFINE([HAVE_DBHEADER], [1], 45 [Define if you have user supplied header location]) 46 ], 47 [if test "x$with_berkeley_db_include" != xcheck; then 48 AC_MSG_FAILURE( 49 [--with-berkeley-db-include was given but include test failed]) 50 fi 51 ])], 52 [AC_CHECK_HEADERS([ \ 53 db6/db.h \ 54 db5/db.h \ 55 db4/db.h \ 56 db3/db.h \ 57 db.h \ 58 ])]) 59 60dnl db_create is used by db3 and db4 and db5 and db6 61 62 AC_FIND_FUNC_NO_LIBS(db_create, [$dbheader] db-6 db-5 db4 db3 db, [ 63 #include <stdio.h> 64 #ifdef HAVE_DBHEADER 65 #include <$dbheader/db.h> 66 #elif HAVE_DB6_DB_H 67 #include <db6/db.h> 68 #elif HAVE_DB5_DB_H 69 #include <db5/db.h> 70 #elif HAVE_DB4_DB_H 71 #include <db4/db.h> 72 #elif defined(HAVE_DB3_DB_H) 73 #include <db3/db.h> 74 #else 75 #include <db.h> 76 #endif 77 ],[NULL, NULL, 0]) 78 79 if test "$ac_cv_func_db_create" = "yes"; then 80 have_db3=yes 81 if test "$ac_cv_funclib_db_create" != "yes"; then 82 DB3LIB="$ac_cv_funclib_db_create" 83 else 84 DB3LIB="" 85 fi 86 AC_DEFINE(HAVE_DB3, 1, [define if you have a berkeley db3/4/5/6 library]) 87 fi 88 89dnl dbopen is used by db1/db2 90 91 AC_FIND_FUNC_NO_LIBS(dbopen, db2 db, [ 92 #include <stdio.h> 93 #if defined(HAVE_DB2_DB_H) 94 #include <db2/db.h> 95 #elif defined(HAVE_DB_H) 96 #include <db.h> 97 #else 98 #error no db.h 99 #endif 100 ],[NULL, 0, 0, 0, NULL]) 101 102 if test "$ac_cv_func_dbopen" = "yes"; then 103 have_db1=yes 104 if test "$ac_cv_funclib_dbopen" != "yes"; then 105 DB1LIB="$ac_cv_funclib_dbopen" 106 else 107 DB1LIB="" 108 fi 109 AC_DEFINE(HAVE_DB1, 1, [define if you have a berkeley db1/2 library]) 110 fi 111 112dnl test for ndbm compatability 113 114 if test "$ac_cv_func_dbm_firstkey" != yes; then 115 AC_FIND_FUNC_NO_LIBS2(dbm_firstkey, $ac_cv_funclib_dbopen $ac_cv_funclib_db_create, [ 116 #include <stdio.h> 117 #define DB_DBM_HSEARCH 1 118 #include <db.h> 119 DBM *dbm; 120 ],[NULL]) 121 122 if test "$ac_cv_func_dbm_firstkey" = "yes"; then 123 if test "$ac_cv_funclib_dbm_firstkey" != "yes"; then 124 NDBMLIB="$ac_cv_funclib_dbm_firstkey" 125 else 126 NDBMLIB="" 127 fi 128 AC_DEFINE(HAVE_DB_NDBM, 1, [define if you have ndbm compat in db]) 129 AC_DEFINE(HAVE_NEW_DB, 1, [Define if NDBM really is DB (creates files *.db)]) 130 else 131 $as_unset ac_cv_func_dbm_firstkey 132 $as_unset ac_cv_funclib_dbm_firstkey 133 fi 134 fi 135 136]) # fi berkeley db 137 138 139AS_IF([test "x$enable_mdb_db" != xno], 140 [AC_CHECK_HEADER(lmdb.h, [ 141 AC_CHECK_LIB(lmdb, mdb_env_create, have_lmdb=yes; LMDBLIB="-llmdb" 142 AC_DEFINE(HAVE_LMDB, 1, [define if you have the LMDB library]))])]) 143 144for db_type in unknown $db_type_preference; do 145 if eval test \"x\$have_${db_type}\" = xyes -o ${db_type} = sqlite; then 146 break 147 fi 148 db_type=unknown 149done 150 151AS_IF([test "x$have_db3" = xyes -a "$db_type" = unknown], db_type=db3, db_type="$db_type") 152AS_IF([test "x$have_db1" = xyes -a "$db_type" = unknown], db_type=db1, db_type="$db_type") 153AS_IF([test "x$have_lmdb" = xyes -a "$db_type" = unknown], db_type=lmdb, db_type="$db_type") 154 155if test "$enable_ndbm_db" != "no"; then 156 157 if test "$db_type" = "unknown" -o "$ac_cv_func_dbm_firstkey" = ""; then 158 159 AC_CHECK_HEADERS([ \ 160 dbm.h \ 161 ndbm.h \ 162 ]) 163 164 AC_FIND_FUNC_NO_LIBS(dbm_firstkey, ndbm, [ 165 #include <stdio.h> 166 #if defined(HAVE_NDBM_H) 167 #include <ndbm.h> 168 #elif defined(HAVE_DBM_H) 169 #include <dbm.h> 170 #endif 171 DBM *dbm; 172 ],[NULL]) 173 174 if test "$ac_cv_func_dbm_firstkey" = "yes"; then 175 if test "$ac_cv_funclib_dbm_firstkey" != "yes"; then 176 NDBMLIB="$ac_cv_funclib_dbm_firstkey" 177 else 178 NDBMLIB="" 179 fi 180 AC_DEFINE(HAVE_NDBM, 1, [define if you have a ndbm library])dnl 181 have_ndbm=yes 182 else 183 184 $as_unset ac_cv_func_dbm_firstkey 185 $as_unset ac_cv_funclib_dbm_firstkey 186 187 AC_CHECK_HEADERS([ \ 188 gdbm/ndbm.h \ 189 ]) 190 191 AC_FIND_FUNC_NO_LIBS(dbm_firstkey, gdbm, [ 192 #include <stdio.h> 193 #include <gdbm/ndbm.h> 194 DBM *dbm; 195 ],[NULL]) 196 197 if test "$ac_cv_func_dbm_firstkey" = "yes"; then 198 if test "$ac_cv_funclib_dbm_firstkey" != "yes"; then 199 NDBMLIB="$ac_cv_funclib_dbm_firstkey" 200 else 201 NDBMLIB="" 202 fi 203 AC_DEFINE(HAVE_NDBM, 1, [define if you have a ndbm library])dnl 204 have_ndbm=yes 205 if test "$db_type" = "unknown"; then 206 db_type=ndbm 207 fi 208 fi 209 fi 210 fi #enable_ndbm_db 211fi # unknown 212 213if test "$have_ndbm" = "yes"; then 214 AC_MSG_CHECKING([if ndbm is implemented with db]) 215 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 216#include <unistd.h> 217#include <fcntl.h> 218#if defined(HAVE_GDBM_NDBM_H) 219#include <gdbm/ndbm.h> 220#elif defined(HAVE_NDBM_H) 221#include <ndbm.h> 222#elif defined(HAVE_DBM_H) 223#include <dbm.h> 224#endif 225int main(int argc, char **argv) 226{ 227 DBM *d; 228 229 d = dbm_open("conftest", O_RDWR | O_CREAT, 0666); 230 if (d == NULL) 231 return 1; 232 dbm_close(d); 233 return 0; 234}]])],[ 235 if test -f conftest.db; then 236 AC_MSG_RESULT([yes]) 237 AC_DEFINE(HAVE_NEW_DB, 1, [Define if NDBM really is DB (creates files *.db)]) 238 else 239 AC_MSG_RESULT([no]) 240 fi],[AC_MSG_RESULT([no])],[AC_MSG_RESULT([no-cross])]) 241fi 242 243AM_CONDITIONAL(HAVE_DB1, test "$have_db1" = yes)dnl 244AM_CONDITIONAL(HAVE_DB3, test "$have_db3" = yes)dnl 245AM_CONDITIONAL(HAVE_LMDB, test "$have_lmdb" = yes)dnl 246AM_CONDITIONAL(HAVE_NDBM, test "$have_ndbm" = yes)dnl 247AM_CONDITIONAL(HAVE_DBHEADER, test "$dbheader" != "")dnl 248 249## it's probably not correct to include LDFLAGS here, but we might 250## need it, for now just add any possible -L 251z="" 252for i in $LDFLAGS; do 253 case "$i" in 254 -L*) z="$z $i";; 255 esac 256done 257DB3LIB="$z $DB3LIB" 258DB1LIB="$z $DB1LIB" 259LMDBLIB="$z $LMDBLIB" 260NDMBLIB="$z $NDBMLIB" 261AC_SUBST(DB3LIB)dnl 262AC_SUBST(DB1LIB)dnl 263AC_SUBST(LMDBLIB)dnl 264AC_SUBST(NDBMLIB)dnl 265AC_SUBST(NDBMLIB)dnl 266AC_SUBST(db_type)dnl 267AC_SUBST(db_type_preference)dnl 268]) 269