1 dnl Copyright 1998 The OpenLDAP Foundation, All Rights Reserved.
2 dnl COPYING RESTRICTIONS APPLY, See COPYRIGHT file
4 dnl OpenLDAP Autoconf Macros
6 dnl builtin(include, build/libtool.m4)dnl
7 dnl --------------------------------------------------------------------
8 dnl Restricted form of AC_ARG_ENABLE that limits user options
12 dnl $3 = default value (auto)
13 dnl $4 = allowed values (auto yes no)
14 AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
15 AC_ARG_ENABLE($1,[$2 (]ifelse($3,,auto,$3)[)],[
17 for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
18 if test "$enableval" = "$ol_val" ; then
22 if test "$ol_arg" = "invalid" ; then
23 AC_MSG_ERROR(bad value $enableval for --enable-$1)
25 ol_enable_$1="$ol_arg"
27 [ ol_enable_$1=ifelse($3,,"auto","$3")])dnl
28 dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
32 dnl --------------------------------------------------------------------
33 dnl Restricted form of AC_ARG_WITH that limits user options
37 dnl $3 = default value (no)
38 dnl $4 = allowed values (yes or no)
39 AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1
40 AC_ARG_WITH($1,[$2 (]ifelse($3,,yes,$3)[)],[
42 for ol_val in ifelse($4,,[yes no],[$4]) ; do
43 if test "$withval" = "$ol_val" ; then
47 if test "$ol_arg" = "invalid" ; then
48 AC_MSG_ERROR(bad value $withval for --with-$1)
52 [ ol_with_$1=ifelse($3,,"no","$3")])dnl
53 dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
57 dnl ====================================================================
58 dnl Check if db.h is Berkeley DB2
60 dnl defines ol_cv_header_db2 to 'yes' or 'no'
63 dnl AC_CHECK_HEADERS(db.h)
65 AC_DEFUN([OL_HEADER_BERKELEY_DB2],
66 [AC_CHECK_HEADERS(db.h)
67 if test $ac_cv_header_db_h = yes ; then
68 AC_CACHE_CHECK([if db.h is DB2], [ol_cv_header_db2],[
69 AC_EGREP_CPP(__db_version_2,[
71 /* this check could be improved */
72 # ifdef DB_VERSION_MAJOR
73 # if DB_VERSION_MAJOR == 2
77 ], ol_cv_header_db2=yes, ol_cv_header_db2=no)])
82 dnl --------------------------------------------------------------------
83 dnl Check if Berkeley DB2 library exists
84 dnl Check for dbopen in standard libraries or -ldb
86 dnl defines ol_cv_lib_db2 to '-ldb' or 'no'
89 dnl AC_CHECK_LIB(db,db_open)
91 AC_DEFUN([OL_LIB_BERKELEY_DB2],
92 [AC_CACHE_CHECK([for DB2 library], [ol_cv_lib_db2],
94 AC_CHECK_LIB(db,db_open,[ol_cv_lib_db2=-ldb],[ol_cv_lib_db2=no])
99 dnl --------------------------------------------------------------------
100 dnl Check if Berkeley db2 exists
102 dnl defines ol_cv_berkeley_db2 to 'yes' or 'no'
105 dnl OL_LIB_BERKELEY_DB2
106 dnl OL_HEADER_BERKELEY_DB2
108 AC_DEFUN([OL_BERKELEY_DB2],
109 [AC_REQUIRE([OL_LIB_BERKELEY_DB2])
110 AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
111 AC_CACHE_CHECK([for Berkeley DB2], [ol_cv_berkeley_db2], [
112 if test $ol_cv_lib_db2 = no -o $ol_cv_header_db2 = no ; then
113 ol_cv_berkeley_db2=no
115 ol_cv_berkeley_db2=yes
118 if test $ol_cv_berkeley_db2 = yes ; then
119 AC_DEFINE(HAVE_BERKELEY_DB2,1)
123 dnl ====================================================================
124 dnl Check for db.h/db_185.h is Berkeley DB
126 dnl defines ol_cv_header_db to 'yes' or 'no'
129 dnl OL_HEADER_BERKELEY_DB2
130 dnl AC_CHECK_HEADERS(db_185.h)
132 AC_DEFUN([OL_HEADER_BERKELEY_DB],
133 [AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
134 AC_CHECK_HEADERS(db_185.h)
135 if test $ol_cv_header_db2 = yes ; then
138 ol_cv_header_db=$ac_cv_header_db_185_h
140 ol_cv_header_db=$ac_cv_header_db_h
144 dnl --------------------------------------------------------------------
145 dnl Check if Berkeley DB library exists
146 dnl Check for dbopen in standard libraries or -ldb
148 dnl defines ol_cv_lib_db to 'yes' or '-ldb' or 'no'
149 dnl 'yes' implies dbopen is in $LIBS
152 dnl AC_CHECK_FUNC(dbopen)
153 dnl AC_CHECK_LIB(db,dbopen)
155 AC_DEFUN([OL_LIB_BERKELEY_DB],
156 [AC_CACHE_CHECK([for Berkeley DB library], [ol_cv_lib_db],
158 AC_CHECK_FUNC(dbopen,[ol_cv_lib_db=yes], [
159 AC_CHECK_LIB(db,dbopen,[ol_cv_lib_db=-ldb],[ol_cv_lib_db=no])
165 dnl --------------------------------------------------------------------
166 dnl Check if Berkeley DB exists
168 dnl defines ol_cv_berkeley_db to 'yes' or 'no'
171 dnl OL_LIB_BERKELEY_DB
172 dnl OL_HEADER_BERKELEY_DB
174 AC_DEFUN([OL_BERKELEY_DB],
175 [AC_REQUIRE([OL_LIB_BERKELEY_DB])
176 AC_REQUIRE([OL_HEADER_BERKELEY_DB])
177 AC_CACHE_CHECK([for Berkeley DB], [ol_cv_berkeley_db], [
178 if test $ol_cv_lib_db = no -o $ol_cv_header_db = no ; then
181 ol_cv_berkeley_db=yes
184 if test $ol_cv_berkeley_db = yes ; then
185 AC_DEFINE(HAVE_BERKELEY_DB,1)
189 dnl ====================================================================
190 dnl Check if GDBM library exists
191 dnl Check for gdbm_open in standard libraries or -lgdbm
193 dnl defines ol_cv_lib_gdbm to 'yes' or '-lgdbm' or 'no'
194 dnl 'yes' implies gdbm_open is in $LIBS
197 dnl AC_CHECK_FUNC(gdbm_open)
198 dnl AC_CHECK_LIB(gdbm,gdbm_open)
200 AC_DEFUN([OL_LIB_GDBM],
201 [AC_CACHE_CHECK(for GDBM library, [ol_cv_lib_gdbm],
203 AC_CHECK_FUNC(gdbm_open,[ol_cv_lib_gdbm=yes], [
204 AC_CHECK_LIB(gdbm,gdbm_open,[ol_cv_lib_gdbm=-lgdbm],[ol_cv_lib_gdbm=no])
210 dnl --------------------------------------------------------------------
211 dnl Check if GDBM exists
213 dnl defines ol_cv_gdbm to 'yes' or 'no'
217 dnl AC_CHECK_HEADERS(gdbm.h)
220 [AC_REQUIRE([OL_LIB_GDBM])
221 AC_CHECK_HEADERS(gdbm.h)
222 AC_CACHE_CHECK(for db, [ol_cv_gdbm], [
223 if test $ol_cv_lib_gdbm = no -o $ac_cv_header_gdbm_h = no ; then
229 if test $ol_cv_gdbm = yes ; then
230 AC_DEFINE(HAVE_GDBM,1)
234 dnl ====================================================================
235 dnl Check if NDBM library exists
236 dnl Check for dbm_open in standard libraries or -lndbm or -ldbm
238 dnl defines ol_cv_lib_ndbm to 'yes' or '-lndbm' or -ldbm or 'no'
239 dnl 'yes' implies ndbm_open is in $LIBS
242 dnl AC_CHECK_FUNC(dbm_open)
243 dnl AC_CHECK_LIB(ndbm,dbm_open)
244 dnl AC_CHECK_LIB(dbm,dbm_open)
247 dnl should also check SVR4 case: dbm_open() in -lucb but that
248 dnl would requiring dealing with -L/usr/ucblib
250 AC_DEFUN([OL_LIB_NDBM],
251 [AC_CACHE_CHECK(for NDBM library, [ol_cv_lib_ndbm],
253 AC_CHECK_FUNC(dbm_open,[ol_cv_lib_ndbm=yes], [
254 AC_CHECK_LIB(ndbm,dbm_open,[ol_cv_lib_ndbm=-lndbm], [
255 AC_CHECK_LIB(dbm,dbm_open,[ol_cv_lib_ndbm=-ldbm],
256 [ol_cv_lib_ndbm=no])dnl
263 dnl --------------------------------------------------------------------
264 dnl Check if NDBM exists
266 dnl defines ol_cv_ndbm to 'yes' or 'no'
270 dnl AC_CHECK_HEADERS(ndbm.h)
273 dnl Doesn't handle SVR4 case (see above)
276 [AC_REQUIRE([OL_LIB_NDBM])
277 AC_CHECK_HEADERS(ndbm.h)
278 AC_CACHE_CHECK(for db, [ol_cv_ndbm], [
279 if test $ol_cv_lib_ndbm = no -o $ac_cv_header_ndbm_h = no ; then
285 if test $ol_cv_ndbm = yes ; then
286 AC_DEFINE(HAVE_NDBM,1)
290 dnl ====================================================================
291 dnl Check POSIX Thread version
293 dnl defines ol_cv_posix_version to 'final' or 'draft' or 'unknown'
294 dnl 'unknown' implies that the version could not be detected
295 dnl or that pthreads.h does exist. Existance of pthreads.h
296 dnl should be tested separately.
298 AC_DEFUN([OL_POSIX_THREAD_VERSION],
299 [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
300 AC_EGREP_CPP(pthread_version_final,[
301 # include <pthread.h>
302 /* this check could be improved */
303 # ifdef PTHREAD_ONCE_INIT
304 pthread_version_final
306 ], ol_pthread_final=yes, ol_pthread_final=no)
308 AC_EGREP_CPP(pthread_version_draft4,[
309 # include <pthread.h>
310 /* this check could be improved */
311 # ifdef pthread_once_init
312 pthread_version_draft4
314 ], ol_pthread_draft4=yes, ol_pthread_draft4=no)
316 if test $ol_pthread_final = yes -a $ol_pthread_draft4 = no; then
317 ol_cv_pthread_version=final
318 elif test $ol_pthread_final = no -a $ol_pthread_draft4 = yes; then
319 ol_cv_pthread_version=draft4
321 ol_cv_pthread_version=unknown
326 dnl --------------------------------------------------------------------
327 dnl Check LinuxThread
329 dnl defines ol_cv_linux_threads to 'yes' or 'no'
330 dnl 'no' implies pthreads.h is not LinuxThreads or pthreads.h
331 dnl doesn't exists. Existance of pthread.h should separately
334 AC_DEFUN([OL_LINUX_THREADS],
336 AC_CACHE_CHECK([for LinuxThreads], [ol_cv_linux_threads], [
337 res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
338 if test "$res" -gt 0 ; then
339 ol_cv_linux_threads=yes
341 ol_cv_linux_threads=no
346 dnl ====================================================================
347 dnl Check if toupper() requires islower() to be called first
348 AC_DEFUN([OL_C_UPPER_LOWER],
350 AC_MSG_CHECKING([if toupper() requires islower()])
351 AC_CACHE_VAL(ol_cv_c_upper_lower,[
356 if ('C' == toupper('C'))
361 [ol_cv_c_upper_lower=no],
362 [ol_cv_c_upper_lower=yes],
363 [ol_cv_c_upper_lower=safe])])
364 AC_MSG_RESULT($ol_cv_c_upper_lower)
365 if test $ol_cv_c_upper_lower != no ; then
366 AC_DEFINE(C_UPPER_LOWER,1)
370 dnl ====================================================================
371 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
372 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
373 dnl Reported by Keith Bostic.
374 AC_DEFUN([OL_SYS_ERRLIST],
376 AC_MSG_CHECKING([declaration of sys_errlist])
377 AC_CACHE_VAL(ol_cv_dcl_sys_errlist,[
380 #include <sys/types.h>
381 #include <errno.h> ],
382 [char *c = (char *) *sys_errlist],
383 [ol_cv_dcl_sys_errlist=yes],
384 [ol_cv_dcl_sys_errlist=no])])
385 AC_MSG_RESULT($ol_cv_dcl_sys_errlist)
387 # It's possible (for near-UNIX clones) that sys_errlist doesn't exist
388 if test $ol_cv_dcl_sys_errlist = no ; then
389 AC_DEFINE(DECL_SYS_ERRLIST,1)
390 AC_MSG_CHECKING([existence of sys_errlist])
391 AC_CACHE_VAL(ol_cv_have_sys_errlist,[
392 AC_TRY_LINK([#include <errno.h>],
393 [char *c = (char *) *sys_errlist],
394 [ol_cv_have_sys_errlist=yes],
395 [ol_cv_have_sys_errlist=no])])
396 AC_MSG_RESULT($ol_cv_have_sys_errlist)
400 dnl ====================================================================
401 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
402 dnl "int x; int *volatile a = &x; *a = 0;"
403 dnl -- borrowed from PDKSH
404 AC_DEFUN(OL_C_VOLATILE,
405 [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
406 [AC_TRY_COMPILE([int x, y, z;],
407 [volatile int a; int * volatile b = x ? &y : &z;
408 /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */
409 *b = 0;], ol_cv_c_volatile=yes, ol_cv_c_volatile=no)])
410 if test $ol_cv_c_volatile = yes; then
413 AC_DEFINE(volatile, )
417 dnl ====================================================================
418 dnl Define sig_atomic_t if not defined in signal.h
419 AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
420 [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
421 [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
422 ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
423 if test $ol_cv_type_sig_atomic_t = no; then
424 AC_DEFINE(sig_atomic_t, int)
428 dnl ====================================================================
429 dnl check no of arguments for ctime_r
430 AC_DEFUN(OL_NARGS_CTIME_R,
431 [AC_MSG_CHECKING([number of args for ctime_r])
432 AC_TRY_COMPILE([#include <time.h>],
433 [time_t ti; char *buffer;
434 ctime_r(&ti,buffer,32);],ol_nargs_ctime_r=3,
436 if test $ol_nargs_ctime_r = 0 ; then
437 AC_TRY_COMPILE([#include <time.h>],
438 [time_t ti; char *buffer;
439 ctime_r(&ti,buffer);],ol_nargs_ctime_r=2 )
441 AC_MSG_RESULT($ol_nargs_ctime_r)
442 if test $ol_nargs_ctime_r = 2 ; then
443 AC_DEFINE( ARGS_CTIME_R_2 )
445 if test $ol_nargs_ctime_r = 3 ; then
446 AC_DEFINE( ARGS_CTIME_R_3 )