AC_DEFUN(BERKELEY_DB_CHK_LIB,
[
BDB_SAVE_LIBS=$LIBS
if test -d $with_bdb_lib; then
LIBS="$LIBS -L$with_bdb_lib"
BDB_LIBADD="-L$with_bdb_lib -R $with_bdb_lib"
else
BDB_LIBADD=""
fi
for dbname in db-4.0 db4.0 db-4 db-3.3 db3.3 db-3.2 db3.2 db-3.1 db3.1 db-3 db3 db
do
AC_CHECK_LIB($dbname, db_create, SASL_DB_LIB="$BDB_LIBADD -l$dbname";
dblib="berkeley"; break, dblib="no")
done
if test "$dblib" = "no"; then
AC_CHECK_LIB(db, db_open, SASL_DB_LIB="$BDB_LIBADD -ldb";
dblib="berkeley"; dbname=db,
dblib="no")
fi
LIBS=$BDB_SAVE_LIBS
])
AC_DEFUN(BERKELEY_DB_CHK,
[
if test -d $with_bdb_inc; then
CPPFLAGS="$CPPFLAGS -I$with_bdb_inc"
BDB_INCADD="-I$with_bdb_inc"
else
BDB_INCADD=""
fi
AC_CHECK_HEADER(db3/db.h,
BERKELEY_DB_CHK_LIB()
if test "$dblib" = "berkeley"; then
SASL_DB_INC=$BDB_INCADD
AC_DEFINE(HAVE_DB3_DB_H)
fi,
AC_CHECK_HEADER(db.h,
BERKELEY_DB_CHK_LIB()
SASL_DB_INC=$BDB_INCADD,
dblib="no"))
])
AC_DEFUN(SASL_DB_CHECK, [
cmu_save_LIBS="$LIBS"
AC_ARG_WITH(dblib, [ --with-dblib=DBLIB set the DB library to use [berkeley] ],
dblib=$withval,
dblib=auto_detect)
AC_ARG_WITH(bdb-libdir,
[ --with-bdb-libdir=DIR Berkeley DB lib files are in DIR],
with_bdb_lib=$withval,
with_bdb_lib=none)
AC_ARG_WITH(bdb-incdir,
[ --with-bdb-incdir=DIR Berkeley DB include files are in DIR],
with_bdb_inc=$withval,
with_bdb_inc=none)
SASL_DB_LIB=""
case "$dblib" in
berkeley)
BERKELEY_DB_CHK()
;;
gdbm)
AC_ARG_WITH(with-gdbm,[ --with-gdbm=PATH use gdbm from PATH],
with_gdbm="${withval}")
case "$with_gdbm" in
""|yes)
AC_CHECK_HEADER(gdbm.h,
AC_CHECK_LIB(gdbm, gdbm_open, SASL_DB_LIB="-lgdbm",
dblib="no"),
dblib="no")
;;
*)
if test -d $with_gdbm; then
CPPFLAGS="${CPPFLAGS} -I${with_gdbm}/include"
LDFLAGS="${LDFLAGS} -L${with_gdbm}/lib"
SASL_DB_LIB="-lgdbm"
else
with_gdbm="no"
fi
esac
;;
ndbm)
AC_CHECK_HEADER(ndbm.h,
AC_CHECK_LIB(ndbm, dbm_open, SASL_DB_LIB="-lndbm",
AC_CHECK_FUNC(dbm_open,,dblib="no")),
dblib="no")
;;
auto_detect)
BERKELEY_DB_CHK()
if test "$dblib" = no; then
AC_CHECK_HEADER(ndbm.h,
AC_CHECK_LIB(ndbm, dbm_open,
dblib="ndbm"; SASL_DB_LIB="-lndbm",
dblib="weird"),
dblib="no")
if test "$dblib" = "weird"; then
AC_CHECK_FUNC(dbm_open, dblib="ndbm", dblib="no")
fi
if test "$dblib" = no; then
AC_CHECK_HEADER(gdbm.h,
AC_CHECK_LIB(gdbm, gdbm_open, dblib="gdbm";
SASL_DB_LIB="-lgdbm", dblib="no"),
dblib="no")
fi
fi
;;
none)
;;
no)
;;
*)
AC_MSG_WARN([Bad DB library implementation specified;])
AC_ERROR([Use either \"berkeley\", \"gdbm\", \"ndbm\" or \"none\"])
dblib=no
;;
esac
LIBS="$cmu_save_LIBS"
AC_MSG_CHECKING(DB library to use)
AC_MSG_RESULT($dblib)
SASL_DB_BACKEND="db_${dblib}.lo"
SASL_DB_BACKEND_STATIC="../sasldb/db_${dblib}.o ../sasldb/allockey.o"
SASL_DB_UTILS="saslpasswd2 sasldblistusers2"
SASL_DB_MANS="saslpasswd2.8 sasldblistusers2.8"
case "$dblib" in
gdbm)
SASL_MECHS="$SASL_MECHS libsasldb.la"
SASL_STATIC_OBJS="$SASL_STATIC_OBJS ../plugins/sasldb.o"
AC_DEFINE(STATIC_SASLDB)
AC_DEFINE(SASL_GDBM)
;;
ndbm)
SASL_MECHS="$SASL_MECHS libsasldb.la"
SASL_STATIC_OBJS="$SASL_STATIC_OBJS ../plugins/sasldb.o"
AC_DEFINE(STATIC_SASLDB)
AC_DEFINE(SASL_NDBM)
;;
berkeley)
SASL_MECHS="$SASL_MECHS libsasldb.la"
SASL_STATIC_OBJS="$SASL_STATIC_OBJS ../plugins/sasldb.o"
AC_DEFINE(STATIC_SASLDB)
AC_DEFINE(SASL_BERKELEYDB)
;;
*)
AC_MSG_WARN([Disabling SASL authentication database support])
SASL_DB_BACKEND="db_none.lo"
SASL_DB_BACKEND_STATIC="../sasldb/db_none.o"
SASL_DB_UTILS=""
SASL_DB_MANS=""
SASL_DB_LIB=""
;;
esac
AC_SUBST(SASL_DB_UTILS)
AC_SUBST(SASL_DB_MANS)
AC_SUBST(SASL_DB_BACKEND)
AC_SUBST(SASL_DB_BACKEND_STATIC)
AC_SUBST(SASL_DB_INC)
AC_SUBST(SASL_DB_LIB)
])
AC_DEFUN(SASL_DB_PATH_CHECK, [
AC_ARG_WITH(dbpath, [ --with-dbpath=PATH set the DB path to use [/etc/sasldb2] ],
dbpath=$withval,
dbpath=/etc/sasldb2)
AC_MSG_CHECKING(DB path to use)
AC_MSG_RESULT($dbpath)
AC_DEFINE_UNQUOTED(SASL_DB_PATH, "$dbpath")])