2 dnl OpenLDAP Autoconf Macros
4 dnl --------------------------------------------------------------------
5 dnl Restricted form of AC_ARG_ENABLE that limits user options
9 dnl $3 = default value (auto)
10 dnl $4 = allowed values (auto yes no)
11 AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
12 AC_ARG_ENABLE($1,[$2 (]ifelse($3,,auto,$3)[)],[
14 for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
15 if test "$enableval" = "$ol_val" ; then
19 if test "$ol_arg" = "invalid" ; then
20 AC_MSG_ERROR(bad value $enableval for --enable-$1)
22 ol_enable_$1="$ol_arg"
24 [ ol_enable_$1=ifelse($3,,"auto","$3")])dnl
25 dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
29 dnl --------------------------------------------------------------------
30 dnl Restricted form of AC_ARG_WITH that limits user options
34 dnl $3 = default value (no)
35 dnl $4 = allowed values (yes or no)
36 AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1
37 AC_ARG_WITH($1,[$2 (]ifelse($3,,yes,$3)[)],[
39 for ol_val in ifelse($4,,[yes no],[$4]) ; do
40 if test "$withval" = "$ol_val" ; then
44 if test "$ol_arg" = "invalid" ; then
45 AC_MSG_ERROR(bad value $withval for --with-$1)
49 [ ol_with_$1=ifelse($3,,"no","$3")])dnl
50 dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
54 dnl ====================================================================
55 dnl Check if db.h is Berkeley DB2
57 dnl defines ol_cv_header_db2 to 'yes' or 'no'
60 dnl AC_CHECK_HEADERS(db.h)
62 AC_DEFUN([OL_HEADER_BERKELEY_DB2],
63 [AC_CHECK_HEADERS(db.h)
64 if test $ac_cv_header_db_h = yes ; then
65 AC_CACHE_CHECK([if db.h is DB2], [ol_cv_header_db2],[
66 AC_EGREP_CPP(__db_version_2,[
68 /* this check could be improved */
69 # ifdef DB_VERSION_MAJOR
70 # if DB_VERSION_MAJOR == 2
74 ], ol_cv_header_db2=yes, ol_cv_header_db2=no)])
79 dnl --------------------------------------------------------------------
80 dnl Check if Berkeley DB2 library exists
81 dnl Check for dbopen in standard libraries or -ldb
83 dnl defines ol_cv_lib_db2 to '-ldb' or 'no'
86 dnl AC_CHECK_LIB(db,db_open)
88 AC_DEFUN([OL_LIB_BERKELEY_DB2],
89 [AC_CACHE_CHECK([for DB2 library], [ol_cv_lib_db2],
91 AC_CHECK_LIB(db,db_open,[ol_cv_lib_db2=-ldb],[ol_cv_lib_db2=no])
96 dnl --------------------------------------------------------------------
97 dnl Check if Berkeley db2 exists
99 dnl defines ol_cv_berkeley_db2 to 'yes' or 'no'
102 dnl OL_LIB_BERKELEY_DB2
103 dnl OL_HEADER_BERKELEY_DB2
105 AC_DEFUN([OL_BERKELEY_DB2],
106 [AC_REQUIRE([OL_LIB_BERKELEY_DB2])
107 AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
108 AC_CACHE_CHECK([for Berkeley DB2], [ol_cv_berkeley_db2], [
109 if test $ol_cv_lib_db2 = no -o $ol_cv_header_db2 = no ; then
110 ol_cv_berkeley_db2=no
112 ol_cv_berkeley_db2=yes
115 if test $ol_cv_berkeley_db2 = yes ; then
116 AC_DEFINE(HAVE_BERKELEY_DB2,1)
120 dnl ====================================================================
121 dnl Check for db.h/db_185.h is Berkeley DB
123 dnl defines ol_cv_header_db to 'yes' or 'no'
126 dnl OL_HEADER_BERKELEY_DB2
127 dnl AC_CHECK_HEADERS(db_185.h)
129 AC_DEFUN([OL_HEADER_BERKELEY_DB],
130 [AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
131 AC_CHECK_HEADERS(db_185.h)
132 if test $ol_cv_header_db2 = yes ; then
135 ol_cv_header_db=$ac_cv_header_db_185_h
137 ol_cv_header_db=$ac_cv_header_db_h
141 dnl --------------------------------------------------------------------
142 dnl Check if Berkeley DB library exists
143 dnl Check for dbopen in standard libraries or -ldb
145 dnl defines ol_cv_lib_db to 'yes' or '-ldb' or 'no'
146 dnl 'yes' implies dbopen is in $LIBS
149 dnl AC_CHECK_FUNC(dbopen)
150 dnl AC_CHECK_LIB(db,dbopen)
152 AC_DEFUN([OL_LIB_BERKELEY_DB],
153 [AC_CACHE_CHECK([for Berkeley DB library], [ol_cv_lib_db],
155 AC_CHECK_FUNC(dbopen,[ol_cv_lib_db=yes], [
156 AC_CHECK_LIB(db,dbopen,[ol_cv_lib_db=-ldb],[ol_cv_lib_db=no])
162 dnl --------------------------------------------------------------------
163 dnl Check if Berkeley DB exists
165 dnl defines ol_cv_berkeley_db to 'yes' or 'no'
168 dnl OL_LIB_BERKELEY_DB
169 dnl OL_HEADER_BERKELEY_DB
171 AC_DEFUN([OL_BERKELEY_DB],
172 [AC_REQUIRE([OL_LIB_BERKELEY_DB])
173 AC_REQUIRE([OL_HEADER_BERKELEY_DB])
174 AC_CACHE_CHECK([for Berkeley DB], [ol_cv_berkeley_db], [
175 if test $ol_cv_lib_db = no -o $ol_cv_header_db = no ; then
178 ol_cv_berkeley_db=yes
181 if test $ol_cv_berkeley_db = yes ; then
182 AC_DEFINE(HAVE_BERKELEY_DB,1)
186 dnl ====================================================================
187 dnl Check if GDBM library exists
188 dnl Check for gdbm_open in standard libraries or -lgdbm
190 dnl defines ol_cv_lib_gdbm to 'yes' or '-lgdbm' or 'no'
191 dnl 'yes' implies gdbm_open is in $LIBS
194 dnl AC_CHECK_FUNC(gdbm_open)
195 dnl AC_CHECK_LIB(gdbm,gdbm_open)
197 AC_DEFUN([OL_LIB_GDBM],
198 [AC_CACHE_CHECK(for GDBM library, [ol_cv_lib_gdbm],
200 AC_CHECK_FUNC(gdbm_open,[ol_cv_lib_gdbm=yes], [
201 AC_CHECK_LIB(gdbm,gdbm_open,[ol_cv_lib_gdbm=-lgdbm],[ol_cv_lib_gdbm=no])
207 dnl --------------------------------------------------------------------
208 dnl Check if GDBM exists
210 dnl defines ol_cv_gdbm to 'yes' or 'no'
214 dnl AC_CHECK_HEADERS(gdbm.h)
217 [AC_REQUIRE([OL_LIB_GDBM])
218 AC_CHECK_HEADERS(gdbm.h)
219 AC_CACHE_CHECK(for db, [ol_cv_gdbm], [
220 if test $ol_cv_lib_gdbm = no -o $ac_cv_header_gdbm_h = no ; then
226 if test $ol_cv_gdbm = yes ; then
227 AC_DEFINE(HAVE_GDBM,1)
231 dnl ====================================================================
232 dnl Check if NDBM library exists
233 dnl Check for dbm_open in standard libraries or -lndbm or -ldbm
235 dnl defines ol_cv_lib_ndbm to 'yes' or '-lndbm' or -ldbm or 'no'
236 dnl 'yes' implies ndbm_open is in $LIBS
239 dnl AC_CHECK_FUNC(dbm_open)
240 dnl AC_CHECK_LIB(ndbm,dbm_open)
241 dnl AC_CHECK_LIB(dbm,dbm_open)
244 dnl should also check SVR4 case: dbm_open() in -lucb but that
245 dnl would requiring dealing with -L/usr/ucblib
247 AC_DEFUN([OL_LIB_NDBM],
248 [AC_CACHE_CHECK(for NDBM library, [ol_cv_lib_ndbm],
250 AC_CHECK_FUNC(dbm_open,[ol_cv_lib_ndbm=yes], [
251 AC_CHECK_LIB(ndbm,dbm_open,[ol_cv_lib_ndbm=-lndbm], [
252 AC_CHECK_LIB(dbm,dbm_open,[ol_cv_lib_ndbm=-ldbm],
253 [ol_cv_lib_ndbm=no])dnl
260 dnl --------------------------------------------------------------------
261 dnl Check if NDBM exists
263 dnl defines ol_cv_ndbm to 'yes' or 'no'
267 dnl AC_CHECK_HEADERS(ndbm.h)
270 dnl Doesn't handle SVR4 case (see above)
273 [AC_REQUIRE([OL_LIB_NDBM])
274 AC_CHECK_HEADERS(ndbm.h)
275 AC_CACHE_CHECK(for db, [ol_cv_ndbm], [
276 if test $ol_cv_lib_ndbm = no -o $ac_cv_header_ndbm_h = no ; then
282 if test $ol_cv_ndbm = yes ; then
283 AC_DEFINE(HAVE_NDBM,1)
287 dnl ====================================================================
288 dnl Check POSIX Thread version
290 dnl defines ol_cv_posix_version to 'final' or 'draft' or 'unknown'
291 dnl 'unknown' implies that the version could not be detected
292 dnl or that pthreads.h does exist. Existance of pthreads.h
293 dnl should be tested separately.
295 AC_DEFUN([OL_POSIX_THREAD_VERSION],
296 [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
298 # include <pthread.h>
299 /* this check could be improved */
300 # ifdef PTHREAD_ONCE_INIT
303 ], ol_pthread_final=yes, ol_pthread_final=no)
305 AC_EGREP_CPP(draft4,[
306 # include <pthread.h>
307 /* this check could be improved */
308 # ifdef pthread_once_init
311 ], ol_pthread_draft4=yes, ol_pthread_draft4=no)
313 if test $ol_pthread_final = yes -a $ol_pthread_draft4 = no; then
314 ol_cv_pthread_version=final
315 elif test $ol_pthread_final = no -a $ol_pthread_draft4 = yes; then
316 ol_cv_pthread_version=draft4
318 ol_cv_pthread_version=unknown
323 dnl --------------------------------------------------------------------
324 dnl Check LinuxThread
326 dnl defines ol_cv_linux_threads to 'yes' or 'no'
327 dnl 'no' implies pthreads.h is not LinuxThreads or pthreads.h
328 dnl doesn't exists. Existance of pthread.h should separately
331 AC_DEFUN([OL_LINUX_THREADS],
333 AC_CACHE_CHECK([for LinuxThreads], [ol_cv_linux_threads], [
334 res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
335 if test "$res" -gt 0 ; then
336 ol_cv_linux_threads=yes
338 ol_cv_linux_threads=no
343 dnl ====================================================================
344 dnl Check if toupper() requires islower() to be called first
345 AC_DEFUN([OL_C_UPPER_LOWER],
347 AC_MSG_CHECKING([if toupper() requires islower()])
348 AC_CACHE_VAL(ol_cv_c_upper_lower,[
353 if ('C' == toupper('C'))
358 [ol_cv_c_upper_lower=no],
359 [ol_cv_c_upper_lower=yes],
360 [ol_cv_c_upper_lower=safe])])
361 AC_MSG_RESULT($ol_cv_c_upper_lower)
362 if test $ol_cv_c_upper_lower != no ; then
363 AC_DEFINE(C_UPPER_LOWER,1)
367 dnl ====================================================================
368 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
369 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
370 dnl Reported by Keith Bostic.
371 AC_DEFUN([OL_SYS_ERRLIST],
373 AC_MSG_CHECKING([declaration of sys_errlist])
374 AC_CACHE_VAL(ol_cv_dcl_sys_errlist,[
377 #include <sys/types.h>
378 #include <errno.h> ],
379 [char *c = (char *) *sys_errlist],
380 [ol_cv_dcl_sys_errlist=yes],
381 [ol_cv_dcl_sys_errlist=no])])
382 AC_MSG_RESULT($ol_cv_dcl_sys_errlist)
384 # It's possible (for near-UNIX clones) that sys_errlist doesn't exist
385 if test $ol_cv_dcl_sys_errlist = no ; then
386 AC_DEFINE(DECL_SYS_ERRLIST,1)
387 AC_MSG_CHECKING([existence of sys_errlist])
388 AC_CACHE_VAL(ol_cv_have_sys_errlist,[
389 AC_TRY_LINK([#include <errno.h>],
390 [char *c = (char *) *sys_errlist],
391 [ol_cv_have_sys_errlist=yes],
392 [ol_cv_have_sys_errlist=no])])
393 AC_MSG_RESULT($ol_cv_have_sys_errlist)