GSS_S_PROMPTING_NEEDED is a bit
[cyrus-sasl.git] / config / sasldb.m4
1 dnl Functions to check what database to use for libsasldb
2
3 dnl Berkeley DB specific checks first..
4
5 dnl Figure out what database type we're using
6 AC_DEFUN([SASL_DB_CHECK], [
7 cmu_save_LIBS="$LIBS"
8 AC_ARG_WITH(dblib, [  --with-dblib=DBLIB      set the DB library to use [berkeley] ],
9   dblib=$withval,
10   dblib=auto_detect)
11
12 CYRUS_BERKELEY_DB_OPTS()
13
14 SASL_DB_LIB=""
15
16 case "$dblib" in
17 dnl this is unbelievably painful due to confusion over what db-3 should be
18 dnl named.  arg.
19   berkeley)
20         CYRUS_BERKELEY_DB_CHK()
21         CPPFLAGS="${CPPFLAGS} ${BDB_INCADD}"
22         SASL_DB_INC=$BDB_INCADD
23         SASL_DB_LIB="${BDB_LIBADD}"
24         ;;
25   gdbm)
26         AC_ARG_WITH(gdbm,[  --with-gdbm=PATH        use gdbm from PATH],
27                     with_gdbm="${withval}")
28
29         case "$with_gdbm" in
30            ""|yes)
31                AC_CHECK_HEADER(gdbm.h, [
32                         AC_CHECK_LIB(gdbm, gdbm_open, SASL_DB_LIB="-lgdbm",
33                                            dblib="no")],
34                         dblib="no")
35                ;;
36            *)
37                if test -d $with_gdbm; then
38                  CPPFLAGS="${CPPFLAGS} -I${with_gdbm}/include"
39                  LDFLAGS="${LDFLAGS} -L${with_gdbm}/lib"
40                  SASL_DB_LIB="-lgdbm" 
41                else
42                  with_gdbm="no"
43                fi
44        esac
45         ;;
46   ndbm)
47         dnl We want to attempt to use -lndbm if we can, just in case
48         dnl there's some version of it installed and overriding libc
49         AC_CHECK_HEADER(ndbm.h, [
50                         AC_CHECK_LIB(ndbm, dbm_open, SASL_DB_LIB="-lndbm", [
51                                 AC_CHECK_FUNC(dbm_open,,dblib="no")])],
52                                 dblib="no")
53         ;;
54   auto_detect)
55         dnl How about berkeley db?
56         CYRUS_BERKELEY_DB_CHK()
57         if test "$dblib" = no; then
58           dnl How about ndbm?
59           AC_CHECK_HEADER(ndbm.h, [
60                 AC_CHECK_LIB(ndbm, dbm_open,
61                              dblib="ndbm"; SASL_DB_LIB="-lndbm",
62                              dblib="weird")],
63                    dblib="no")
64           if test "$dblib" = "weird"; then
65             dnl Is ndbm in the standard library?
66             AC_CHECK_FUNC(dbm_open, dblib="ndbm", dblib="no")
67           fi
68
69           if test "$dblib" = no; then
70             dnl Can we use gdbm?
71             AC_CHECK_HEADER(gdbm.h, [
72                 AC_CHECK_LIB(gdbm, gdbm_open, dblib="gdbm";
73                                              SASL_DB_LIB="-lgdbm", dblib="no")],
74                              dblib="no")
75           fi
76         else
77           dnl we took Berkeley
78           CPPFLAGS="${CPPFLAGS} ${BDB_INCADD}"
79           SASL_DB_INC=$BDB_INCADD
80           SASL_DB_LIB="${BDB_LIBADD}"
81         fi
82         ;;
83   none)
84         ;;
85   no)
86         ;;
87   *)
88         AC_MSG_WARN([Bad DB library implementation specified;])
89         AC_ERROR([Use either \"berkeley\", \"gdbm\", \"ndbm\" or \"none\"])
90         dblib=no
91         ;;
92 esac
93 LIBS="$cmu_save_LIBS"
94
95 AC_MSG_CHECKING(DB library to use)
96 AC_MSG_RESULT($dblib)
97
98 SASL_DB_BACKEND="db_${dblib}.lo"
99 SASL_DB_BACKEND_STATIC="db_${dblib}.o allockey.o"
100 SASL_DB_BACKEND_STATIC_SRCS="../sasldb/db_${dblib}.c ../sasldb/allockey.c"
101 SASL_DB_UTILS="saslpasswd2 sasldblistusers2"
102 SASL_DB_MANS="saslpasswd2.8 sasldblistusers2.8"
103
104 case "$dblib" in
105   gdbm) 
106     SASL_MECHS="$SASL_MECHS libsasldb.la"
107     AC_DEFINE(SASL_GDBM,[],[Use GDBM for SASLdb])
108     ;;
109   ndbm)
110     SASL_MECHS="$SASL_MECHS libsasldb.la"
111     AC_DEFINE(SASL_NDBM,[],[Use NDBM for SASLdb])
112     ;;
113   berkeley)
114     SASL_MECHS="$SASL_MECHS libsasldb.la"
115     AC_DEFINE(SASL_BERKELEYDB,[],[Use BerkeleyDB for SASLdb])
116     ;;
117   *)
118     AC_MSG_WARN([Disabling SASL authentication database support])
119     dnl note that we do not add libsasldb.la to SASL_MECHS, since it
120     dnl will just fail to load anyway.
121     SASL_DB_BACKEND="db_none.lo"
122     SASL_DB_BACKEND_STATIC="db_none.o"
123     SASL_DB_BACKEND_STATIC_SRCS="../sasldb/db_none.c"
124     SASL_DB_UTILS=""
125     SASL_DB_MANS=""
126     SASL_DB_LIB=""
127     ;;
128 esac
129
130 if test "$enable_static" = yes; then
131     if test "$dblib" != "none"; then
132       SASL_STATIC_SRCS="$SASL_STATIC_SRCS ../plugins/sasldb.c $SASL_DB_BACKEND_STATIC_SRCS"
133       SASL_STATIC_OBJS="$SASL_STATIC_OBJS sasldb.o $SASL_DB_BACKEND_STATIC"
134       AC_DEFINE(STATIC_SASLDB,[],[Link SASLdb Staticly])
135     else
136       SASL_STATIC_OBJS="$SASL_STATIC_OBJS $SASL_DB_BACKEND_STATIC"
137       SASL_STATIC_SRCS="$SASL_STATIC_SRCS $SASL_DB_BACKEND_STATIC_SRCS"
138     fi
139 fi
140
141 AC_SUBST(SASL_DB_UTILS)
142 AC_SUBST(SASL_DB_MANS)
143 AC_SUBST(SASL_DB_BACKEND)
144 AC_SUBST(SASL_DB_BACKEND_STATIC)
145 AC_SUBST(SASL_DB_INC)
146 AC_SUBST(SASL_DB_LIB)
147 ])
148
149 dnl Figure out what database path we're using
150 AC_DEFUN([SASL_DB_PATH_CHECK], [
151 AC_ARG_WITH(dbpath, [  --with-dbpath=PATH      set the DB path to use [/etc/sasldb2] ],
152   dbpath=$withval,
153   dbpath=/etc/sasldb2)
154 AC_MSG_CHECKING(DB path to use)
155 AC_MSG_RESULT($dbpath)
156 AC_DEFINE_UNQUOTED(SASL_DB_PATH, "$dbpath", [Path to default SASLdb database])])