1dnl $Id: db.m4 15456 2005-06-16 21:04:43Z lha $ 2dnl 3dnl tests for various db libraries 4dnl 5AC_DEFUN([rk_DB],[ 6AC_ARG_ENABLE(berkeley-db, 7 AS_HELP_STRING([--disable-berkeley-db], 8 [if you don't want berkeley db]),[ 9]) 10 11AC_ARG_ENABLE(ndbm-db, 12 AS_HELP_STRING([--disable-ndbm-db], 13 [if you don't want ndbm db]),[ 14]) 15 16have_ndbm=no 17db_type=unknown 18 19if test "$enable_berkeley_db" != no; then 20 21 AC_CHECK_HEADERS([ \ 22 db4/db.h \ 23 db3/db.h \ 24 db.h \ 25 db_185.h \ 26 ]) 27 28dnl db_create is used by db3 and db4 29 30 AC_FIND_FUNC_NO_LIBS(db_create, db4 db3 db, [ 31 #include <stdio.h> 32 #ifdef HAVE_DB4_DB_H 33 #include <db4/db.h> 34 #elif defined(HAVE_DB3_DB_H) 35 #include <db3/db.h> 36 #else 37 #include <db.h> 38 #endif 39 ],[NULL, NULL, 0]) 40 41 if test "$ac_cv_func_db_create" = "yes"; then 42 db_type=db3 43 if test "$ac_cv_funclib_db_create" != "yes"; then 44 DBLIB="$ac_cv_funclib_db_create" 45 else 46 DBLIB="" 47 fi 48 AC_DEFINE(HAVE_DB3, 1, [define if you have a berkeley db3/4 library]) 49 else 50 51dnl dbopen is used by db1/db2 52 53 AC_FIND_FUNC_NO_LIBS(dbopen, db2 db, [ 54 #include <stdio.h> 55 #if defined(HAVE_DB2_DB_H) 56 #include <db2/db.h> 57 #elif defined(HAVE_DB_185_H) 58 #include <db_185.h> 59 #elif defined(HAVE_DB_H) 60 #include <db.h> 61 #else 62 #error no db.h 63 #endif 64 ],[NULL, 0, 0, 0, NULL]) 65 66 if test "$ac_cv_func_dbopen" = "yes"; then 67 db_type=db1 68 if test "$ac_cv_funclib_dbopen" != "yes"; then 69 DBLIB="$ac_cv_funclib_dbopen" 70 else 71 DBLIB="" 72 fi 73 AC_DEFINE(HAVE_DB1, 1, [define if you have a berkeley db1/2 library]) 74 fi 75 fi 76 77dnl test for ndbm compatability 78 79 if test "$ac_cv_func_dbm_firstkey" != yes; then 80 AC_FIND_FUNC_NO_LIBS2(dbm_firstkey, $ac_cv_funclib_dbopen $ac_cv_funclib_db_create, [ 81 #include <stdio.h> 82 #define DB_DBM_HSEARCH 1 83 #include <db.h> 84 DBM *dbm; 85 ],[NULL]) 86 87 if test "$ac_cv_func_dbm_firstkey" = "yes"; then 88 if test "$ac_cv_funclib_dbm_firstkey" != "yes"; then 89 LIB_NDBM="$ac_cv_funclib_dbm_firstkey" 90 else 91 LIB_NDBM="" 92 fi 93 AC_DEFINE(HAVE_DB_NDBM, 1, [define if you have ndbm compat in db]) 94 AC_DEFINE(HAVE_NEW_DB, 1, [Define if NDBM really is DB (creates files *.db)]) 95 else 96 $as_unset ac_cv_func_dbm_firstkey 97 $as_unset ac_cv_funclib_dbm_firstkey 98 fi 99 fi 100 101fi # berkeley db 102 103if test "$enable_ndbm_db" != "no"; then 104 105 if test "$db_type" = "unknown" -o "$ac_cv_func_dbm_firstkey" = ""; then 106 107 AC_CHECK_HEADERS([ \ 108 dbm.h \ 109 ndbm.h \ 110 ]) 111 112 AC_FIND_FUNC_NO_LIBS(dbm_firstkey, ndbm, [ 113 #include <stdio.h> 114 #if defined(HAVE_NDBM_H) 115 #include <ndbm.h> 116 #elif defined(HAVE_DBM_H) 117 #include <dbm.h> 118 #endif 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 LIB_NDBM="$ac_cv_funclib_dbm_firstkey" 125 else 126 LIB_NDBM="" 127 fi 128 AC_DEFINE(HAVE_NDBM, 1, [define if you have a ndbm library])dnl 129 have_ndbm=yes 130 if test "$db_type" = "unknown"; then 131 db_type=ndbm 132 DBLIB="$LIB_NDBM" 133 fi 134 else 135 136 $as_unset ac_cv_func_dbm_firstkey 137 $as_unset ac_cv_funclib_dbm_firstkey 138 139 AC_CHECK_HEADERS([ \ 140 gdbm/ndbm.h \ 141 ]) 142 143 AC_FIND_FUNC_NO_LIBS(dbm_firstkey, gdbm, [ 144 #include <stdio.h> 145 #include <gdbm/ndbm.h> 146 DBM *dbm; 147 ],[NULL]) 148 149 if test "$ac_cv_func_dbm_firstkey" = "yes"; then 150 if test "$ac_cv_funclib_dbm_firstkey" != "yes"; then 151 LIB_NDBM="$ac_cv_funclib_dbm_firstkey" 152 else 153 LIB_NDBM="" 154 fi 155 AC_DEFINE(HAVE_NDBM, 1, [define if you have a ndbm library])dnl 156 have_ndbm=yes 157 if test "$db_type" = "unknown"; then 158 db_type=ndbm 159 DBLIB="$LIB_NDBM" 160 fi 161 fi 162 fi 163 fi #enable_ndbm_db 164fi # unknown 165 166if test "$have_ndbm" = "yes"; then 167 AC_MSG_CHECKING([if ndbm is implemented with db]) 168 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 169#include <unistd.h> 170#include <fcntl.h> 171#if defined(HAVE_GDBM_NDBM_H) 172#include <gdbm/ndbm.h> 173#elif defined(HAVE_NDBM_H) 174#include <ndbm.h> 175#elif defined(HAVE_DBM_H) 176#include <dbm.h> 177#endif 178int main(int argc, char **argv) 179{ 180 DBM *d; 181 182 d = dbm_open("conftest", O_RDWR | O_CREAT, 0666); 183 if (d == NULL) 184 return 1; 185 dbm_close(d); 186 return 0; 187}]])],[ 188 if test -f conftest.db; then 189 AC_MSG_RESULT([yes]) 190 AC_DEFINE(HAVE_NEW_DB, 1, [Define if NDBM really is DB (creates files *.db)]) 191 else 192 AC_MSG_RESULT([no]) 193 fi],[AC_MSG_RESULT([no])]) 194fi 195 196AM_CONDITIONAL(HAVE_DB1, test "$db_type" = db1)dnl 197AM_CONDITIONAL(HAVE_DB3, test "$db_type" = db3)dnl 198AM_CONDITIONAL(HAVE_NDBM, test "$db_type" = ndbm)dnl 199 200## it's probably not correct to include LDFLAGS here, but we might 201## need it, for now just add any possible -L 202z="" 203for i in $LDFLAGS; do 204 case "$i" in 205 -L*) z="$z $i";; 206 esac 207done 208DBLIB="$z $DBLIB" 209AC_SUBST(DBLIB)dnl 210AC_SUBST(LIB_NDBM)dnl 211]) 212