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, [define if Berkeley DBv2 is available])
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, [define if Berkeley DB is available])
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, [define if GNU DBM is available])
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, [define if NDBM is available])
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, [define if toupper() requires islower()])
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 [define if sys_errlist is declared in stdio.h or errno.h])
391 AC_MSG_CHECKING([existence of sys_errlist])
392 AC_CACHE_VAL(ol_cv_have_sys_errlist,[
393 AC_TRY_LINK([#include <errno.h>],
394 [char *c = (char *) *sys_errlist],
395 [ol_cv_have_sys_errlist=yes],
396 [ol_cv_have_sys_errlist=no])])
397 AC_MSG_RESULT($ol_cv_have_sys_errlist)
401 dnl ====================================================================
402 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
403 dnl "int x; int *volatile a = &x; *a = 0;"
404 dnl -- borrowed from PDKSH
405 AC_DEFUN(OL_C_VOLATILE,
406 [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
407 [AC_TRY_COMPILE([int x, y, z;],
408 [volatile int a; int * volatile b = x ? &y : &z;
409 /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */
410 *b = 0;], ol_cv_c_volatile=yes, ol_cv_c_volatile=no)])
411 if test $ol_cv_c_volatile = yes; then
418 dnl ====================================================================
419 dnl Define sig_atomic_t if not defined in signal.h
420 AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
421 [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
422 [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
423 ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
424 if test $ol_cv_type_sig_atomic_t = no; then
425 AC_DEFINE(sig_atomic_t, int)
429 dnl ====================================================================
430 dnl check no of arguments for ctime_r
431 AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
432 [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs,
433 [AC_TRY_COMPILE([#include <time.h>],
434 [time_t ti; char *buffer; ctime_r(&ti,buffer,32);],
435 ol_cv_func_ctime_r_nargs=3, ol_cv_func_ctime_r_nargs=0)
436 if test $ol_cv_func_ctime_r_nargs = 0 ; then
437 AC_TRY_COMPILE([#include <time.h>],
438 [time_t ti; char *buffer;
439 ctime_r(&ti,buffer);],
440 ol_cv_func_ctime_r_nargs=2, ol_cv_func_ctime_r_nargs=0)
443 if test $ol_cv_func_ctime_r_nargs -gt 1 ; then
444 AC_DEFINE_UNQUOTED(CTIME_R_NARGS, $ol_cv_func_ctime_r_nargs,
445 [set to the number of arguments ctime_r() expects])
448 dnl --------------------------------------------------------------------
449 dnl check return type of ctime_r()
450 AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
451 [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type,
452 [AC_TRY_COMPILE([#include <time.h>],
454 ol_cv_func_ctime_r_type="int", ol_cv_func_ctime_r_type="charp")
456 if test $ol_cv_func_ctime_r_type = "int" ; then
457 AC_DEFINE(CTIME_R_RETURNS_INT,1, [define if ctime_r() returns int])
460 dnl ====================================================================
461 dnl check no of arguments for gethostbyname_r
462 AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
463 [AC_CACHE_CHECK(number of arguments of gethostbyname_r, ol_cv_func_gethostbyname_r_nargs,
464 [AC_TRY_COMPILE([#include <sys/types.h>
465 #include <sys/socket.h>
466 #include <netinet/in.h>
468 #define BUFSIZE (sizeof(struct hostent)+10)],
469 [struct hostent hent; char buffer[BUFSIZE];
470 int bufsize=BUFSIZE;int h_errno;
471 (void)gethostbyname_r( "segovia.cs.purdue.edu", &hent, buffer, bufsize, &h_errno);
473 ol_cv_func_gethostbyname_r_nargs=5, ol_cv_func_gethostbyname_r_nargs=0)
474 if test $ol_cv_func_gethostbyname_r_nargs = 0 ; then
475 AC_TRY_COMPILE([#include <sys/types.h>
476 #include <sys/socket.h>
477 #include <netinet/in.h>
479 #define BUFSIZE (sizeof(struct hostent)+10)],
480 [struct hostent hent;struct hostent *rhent;
481 char buffer[BUFSIZE];
482 int bufsize=BUFSIZE;int h_errno;
483 (void)gethostbyname_r( "segovia.cs.purdue.edu", &hent, buffer, bufsize, &rhent, &h_errno);
485 ol_cv_func_gethostbyname_r_nargs=6, ol_cv_func_gethostbyname_r_nargs=0)
488 if test $ol_cv_func_gethostbyname_r_nargs -gt 1 ; then
489 AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_NARGS,
490 $ol_cv_func_gethostbyname_r_nargs,
491 [set to the number of arguments gethostbyname_r() expects])
494 dnl check no of arguments for gethostbyaddr_r
495 AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
496 [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r, ol_cv_func_gethostbyaddr_r_nargs,
497 [AC_TRY_COMPILE([#include <sys/types.h>
498 #include <sys/socket.h>
499 #include <netinet/in.h>
501 #define BUFSIZE (sizeof(struct hostent)+10)],
502 [struct hostent hent; char buffer[BUFSIZE];
503 struct in_addr add={0x70707070};
504 size_t alen=sizeof(struct in_addr);
505 int bufsize=BUFSIZE;int h_errno;
506 (void)gethostbyaddr_r( (void *)&(add.s_addr),
507 alen, AF_INET, &hent, buffer, bufsize, &h_errno);
509 ol_cv_func_gethostbyaddr_r_nargs=7,
510 ol_cv_func_gethostbyaddr_r_nargs=0)
511 if test $ol_cv_func_gethostbyaddr_r_nargs = 0 ; then
512 AC_TRY_COMPILE([#include <sys/types.h>
513 #include <sys/socket.h>
514 #include <netinet/in.h>
516 #define BUFSIZE (sizeof(struct hostent)+10)],
517 [struct hostent hent; struct hostent *rhent; char buffer[BUFSIZE];
518 struct in_addr add={0x70707070};
519 size_t alen=sizeof(struct in_addr);
520 int bufsize=BUFSIZE;int h_errno;
521 (void)gethostbyaddr_r( (void *)&(add.s_addr),
522 alen, AF_INET, &hent, buffer, bufsize,
525 ol_cv_func_gethostbyaddr_r_nargs=8,
526 ol_cv_func_gethostbyaddr_r_nargs=0)
529 if test $ol_cv_func_gethostbyaddr_r_nargs -gt 1 ; then
530 AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_NARGS,
531 $ol_cv_func_gethostbyaddr_r_nargs,
532 [set to the number of arguments gethostbyaddr_r() expects])