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)
CYRUS_BERKELEY_DB_OPTS()
SASL_DB_LIB=""
case "$dblib" in
berkeley)
CYRUS_BERKELEY_DB_CHK()
CPPFLAGS="${CPPFLAGS} ${BDB_INCADD}"
SASL_DB_INC=$BDB_INCADD
SASL_DB_LIB="${BDB_LIBADD}"
;;
gdbm)
AC_ARG_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)
CYRUS_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
else
CPPFLAGS="${CPPFLAGS} ${BDB_INCADD}"
SASL_DB_INC=$BDB_INCADD
SASL_DB_LIB="${BDB_LIBADD}"
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"
AC_DEFINE(SASL_GDBM,[],[Use GDBM for SASLdb])
;;
ndbm)
SASL_MECHS="$SASL_MECHS libsasldb.la"
AC_DEFINE(SASL_NDBM,[],[Use NDBM for SASLdb])
;;
berkeley)
SASL_MECHS="$SASL_MECHS libsasldb.la"
AC_DEFINE(SASL_BERKELEYDB,[],[Use BerkeleyDB for SASLdb])
;;
*)
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
if test "$enable_static" = yes; then
if test "$dblib" != "none"; then
SASL_STATIC_OBJS="$SASL_STATIC_OBJS ../plugins/sasldb.o $SASL_DB_BACKEND_STATIC"
AC_DEFINE(STATIC_SASLDB,[],[Link SASLdb Staticly])
else
SASL_STATIC_OBJS="$SASL_STATIC_OBJS $SASL_DB_BACKEND_STATIC"
fi
fi
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", [Path to default SASLdb database])])