1 dnl Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
2 dnl COPYING RESTRICTIONS APPLY, See COPYRIGHT file
4 dnl OpenLDAP Autoconf Macros
6 dnl --------------------------------------------------------------------
7 dnl Restricted form of AC_ARG_ENABLE that limits user options
11 dnl $3 = default value (auto)
12 dnl $4 = allowed values (auto yes no)
13 AC_DEFUN([OL_ARG_ENABLE], [# OpenLDAP --enable-$1
14 AC_ARG_ENABLE($1,[$2 (]ifelse($3,,auto,$3)[)],[
16 for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
17 if test "$enableval" = "$ol_val" ; then
21 if test "$ol_arg" = "invalid" ; then
22 AC_MSG_ERROR(bad value $enableval for --enable-$1)
24 ol_enable_$1="$ol_arg"
26 [ ol_enable_$1=ifelse($3,,"auto","$3")])dnl
27 dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
31 dnl --------------------------------------------------------------------
32 dnl Restricted form of AC_ARG_WITH that limits user options
36 dnl $3 = default value (no)
37 dnl $4 = allowed values (yes or no)
38 AC_DEFUN([OL_ARG_WITH], [# OpenLDAP --with-$1
39 AC_ARG_WITH($1,[$2 (]ifelse($3,,yes,$3)[)],[
41 for ol_val in ifelse($4,,[yes no],[$4]) ; do
42 if test "$withval" = "$ol_val" ; then
46 if test "$ol_arg" = "invalid" ; then
47 AC_MSG_ERROR(bad value $withval for --with-$1)
51 [ ol_with_$1=ifelse($3,,"no","$3")])dnl
52 dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
56 dnl ====================================================================
57 dnl check if hard links are supported.
59 AC_DEFUN([OL_PROG_LN_H], [# test for ln hardlink support
60 AC_MSG_CHECKING(whether ln works)
61 AC_CACHE_VAL(ol_cv_prog_LN_H,
62 [rm -f conftest.src conftest.dst
63 echo "conftest" > conftest.src
64 if ln conftest.src conftest.dst 2>/dev/null
70 rm -f conftest.src conftest.dst
72 LN_H="$ol_cv_prog_LN_H"
73 if test "$ol_cv_prog_LN_H" = "ln"; then
81 dnl ====================================================================
82 dnl Check for dependency generation flag
83 AC_DEFUN([OL_MKDEPEND], [# test for make depend flag
86 if test -z "${MKDEP}"; then
88 if test -z "${MKDEP_FLAGS}"; then
89 AC_CACHE_CHECK([for ${OL_MKDEP} depend flag], ol_cv_mkdep, [
91 for flag in "-M" "-xM"; do
92 cat > conftest.c <<EOF
95 if AC_TRY_COMMAND($OL_MKDEP $flag conftest.c) \
96 | egrep '^conftest\.'"${ac_objext}" >/dev/null 2>&1
98 if test ! -f conftest."${ac_object}" ; then
100 OL_MKDEP_FLAGS="$flag"
109 OL_MKDEP_FLAGS="${MKDEP_FLAGS}"
114 OL_MKDEP_FLAGS="${MKDEP_FLAGS}"
117 AC_SUBST(OL_MKDEP_FLAGS)
120 dnl ====================================================================
121 dnl Check if system uses EBCDIC instead of ASCII
122 AC_DEFUN([OL_CPP_EBCDIC], [# test for EBCDIC
123 AC_CACHE_CHECK([for EBCDIC],ol_cv_cpp_ebcdic,[
126 #include <__ASCII__/generate_error.h>
129 [ol_cv_cpp_ebcdic=yes],
130 [ol_cv_cpp_ebcdic=no])])
131 if test $ol_cv_cpp_ebcdic = yes ; then
132 AC_DEFINE(HAVE_EBCDIC,1, [define if system uses EBCDIC instead of ASCII])
136 dnl --------------------------------------------------------------------
137 dnl OpenLDAP version of STDC header check w/ EBCDIC support
138 AC_DEFUN(OL_HEADER_STDC,
140 AC_REQUIRE([OL_CPP_EBCDIC])dnl
141 AC_CACHE_CHECK([for ANSI C header files], ol_cv_header_stdc,
142 [AC_TRY_CPP([#include <stdlib.h>
145 #include <float.h>], ol_cv_header_stdc=yes, ol_cv_header_stdc=no)
147 if test $ol_cv_header_stdc = yes; then
148 # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
149 AC_EGREP_HEADER(memchr, string.h, , ol_cv_header_stdc=no)
152 if test $ol_cv_header_stdc = yes; then
153 # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
154 AC_EGREP_HEADER(free, stdlib.h, , ol_cv_header_stdc=no)
157 if test $ol_cv_header_stdc = yes; then
158 # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
159 AC_TRY_RUN([#include <ctype.h>
161 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
162 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
164 # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
165 || ('j' <= (c) && (c) <= 'r') \
166 || ('s' <= (c) && (c) <= 'z'))
167 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
169 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
170 int main () { int i; for (i = 0; i < 256; i++)
171 if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
173 ], , ol_cv_header_stdc=no, :)
175 if test $ol_cv_header_stdc = yes; then
176 AC_DEFINE(STDC_HEADERS)
178 ac_cv_header_stdc=disable
181 dnl ====================================================================
182 dnl Check if struct passwd has pw_gecos
183 AC_DEFUN([OL_STRUCT_PASSWD_PW_GECOS], [# test for pw_gecos in struct passwd
184 AC_CACHE_CHECK([struct passwd for pw_gecos],ol_cv_struct_passwd_pw_gecos,[
185 AC_TRY_COMPILE([#include <pwd.h>],[
187 pwd.pw_gecos = pwd.pw_name;
189 [ol_cv_struct_passwd_pw_gecos=yes],
190 [ol_cv_struct_passwd_pw_gecos=no])])
191 if test $ol_cv_struct_passwd_pw_gecos = yes ; then
192 AC_DEFINE(HAVE_PW_GECOS,1, [define if struct passwd has pw_gecos])
196 dnl --------------------------------------------------------------------
197 dnl Check if struct passwd has pw_passwd
198 AC_DEFUN([OL_STRUCT_PASSWD_PW_PASSWD], [# test for pw_passwd in struct passwd
199 AC_CACHE_CHECK([struct passwd for pw_passwd],ol_cv_struct_passwd_pw_passwd,[
200 AC_TRY_COMPILE([#include <pwd.h>],[
202 pwd.pw_passwd = pwd.pw_name;
204 [ol_cv_struct_passwd_pw_passwd=yes],
205 [ol_cv_struct_passwd_pw_passwd=no])])
206 if test $ol_cv_struct_passwd_pw_passwd = yes ; then
207 AC_DEFINE(HAVE_PW_PASSWD,1, [define if struct passwd has pw_passwd])
211 dnl ====================================================================
212 dnl Check if db.h is Berkeley DB2
214 dnl defines ol_cv_header_db2 to 'yes' or 'no'
217 dnl AC_CHECK_HEADERS(db.h)
219 AC_DEFUN([OL_HEADER_BERKELEY_DB2],
220 [AC_CHECK_HEADERS(db.h)
221 if test $ac_cv_header_db_h = yes ; then
222 AC_CACHE_CHECK([if db.h is DB2], [ol_cv_header_db2],[
223 AC_EGREP_CPP(__db_version_2,[
225 /* this check could be improved */
226 # ifdef DB_VERSION_MAJOR
227 # if DB_VERSION_MAJOR == 2
231 ], ol_cv_header_db2=yes, ol_cv_header_db2=no)])
236 dnl --------------------------------------------------------------------
237 dnl Check if Berkeley DB2 library exists
238 dnl Check for dbopen in standard libraries or -ldb
240 dnl defines ol_cv_lib_db2 to '-ldb' or 'no'
243 dnl AC_CHECK_LIB(db,db_open)
245 AC_DEFUN([OL_LIB_BERKELEY_DB2],
246 [AC_CACHE_CHECK([for DB2 library], [ol_cv_lib_db2],
248 AC_CHECK_LIB(db,db_open,[ol_cv_lib_db2=-ldb],[ol_cv_lib_db2=no])
253 dnl --------------------------------------------------------------------
254 dnl Check if Berkeley db2 exists
256 dnl defines ol_cv_berkeley_db2 to 'yes' or 'no'
259 dnl OL_LIB_BERKELEY_DB2
260 dnl OL_HEADER_BERKELEY_DB2
262 AC_DEFUN([OL_BERKELEY_DB2],
263 [AC_REQUIRE([OL_LIB_BERKELEY_DB2])
264 AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
265 AC_CACHE_CHECK([for Berkeley DB2], [ol_cv_berkeley_db2], [
266 if test "$ol_cv_lib_db2" = no -o "$ol_cv_header_db2" = no ; then
267 ol_cv_berkeley_db2=no
269 ol_cv_berkeley_db2=yes
272 if test $ol_cv_berkeley_db2 = yes ; then
273 AC_DEFINE(HAVE_BERKELEY_DB2,1, [define if Berkeley DBv2 is available])
277 dnl ====================================================================
278 dnl Check for db.h/db_185.h is Berkeley DB
280 dnl defines ol_cv_header_db to 'yes' or 'no'
283 dnl OL_HEADER_BERKELEY_DB2
284 dnl AC_CHECK_HEADERS(db_185.h)
286 AC_DEFUN([OL_HEADER_BERKELEY_DB],
287 [AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
288 AC_CHECK_HEADERS(db_185.h)
289 if test "$ol_cv_header_db2" = yes ; then
292 ol_cv_header_db=$ac_cv_header_db_185_h
294 ol_cv_header_db=$ac_cv_header_db_h
298 dnl --------------------------------------------------------------------
299 dnl Check if Berkeley DB library exists
300 dnl Check for dbopen in standard libraries or -ldb
302 dnl defines ol_cv_lib_db to 'yes' or '-ldb' or 'no'
303 dnl 'yes' implies dbopen is in $LIBS
306 dnl AC_CHECK_FUNC(dbopen)
307 dnl AC_CHECK_LIB(db,dbopen)
309 AC_DEFUN([OL_LIB_BERKELEY_DB],
310 [AC_CACHE_CHECK([for Berkeley DB library], [ol_cv_lib_db],
312 AC_CHECK_HEADERS(db1/db.h)
314 AC_CHECK_FUNC(dbopen,[ol_cv_lib_db=yes], [
315 AC_CHECK_LIB(db1,dbopen,[ol_cv_lib_db=-ldb1],[
316 AC_CHECK_LIB(db,dbopen,[ol_cv_lib_db=-ldb],
324 dnl --------------------------------------------------------------------
325 dnl Check if Berkeley DB exists
327 dnl defines ol_cv_berkeley_db to 'yes' or 'no'
330 dnl OL_LIB_BERKELEY_DB
331 dnl OL_HEADER_BERKELEY_DB
333 AC_DEFUN([OL_BERKELEY_DB],
334 [AC_REQUIRE([OL_LIB_BERKELEY_DB])
335 AC_REQUIRE([OL_HEADER_BERKELEY_DB])
336 AC_CACHE_CHECK([for Berkeley DB], [ol_cv_berkeley_db], [
337 if test "$ol_cv_lib_db" = no -o "$ol_cv_header_db" = no ; then
340 ol_cv_berkeley_db=yes
343 if test $ol_cv_berkeley_db = yes ; then
344 AC_DEFINE(HAVE_BERKELEY_DB,1, [define if Berkeley DB is available])
348 dnl ====================================================================
349 dnl Check if GDBM library exists
350 dnl Check for gdbm_open in standard libraries or -lgdbm
352 dnl defines ol_cv_lib_gdbm to 'yes' or '-lgdbm' or 'no'
353 dnl 'yes' implies gdbm_open is in $LIBS
356 dnl AC_CHECK_FUNC(gdbm_open)
357 dnl AC_CHECK_LIB(gdbm,gdbm_open)
359 AC_DEFUN([OL_LIB_GDBM],
360 [AC_CACHE_CHECK(for GDBM library, [ol_cv_lib_gdbm],
362 AC_CHECK_FUNC(gdbm_open,[ol_cv_lib_gdbm=yes], [
363 AC_CHECK_LIB(gdbm,gdbm_open,[ol_cv_lib_gdbm=-lgdbm],[ol_cv_lib_gdbm=no])
369 dnl --------------------------------------------------------------------
370 dnl Check if GDBM exists
372 dnl defines ol_cv_gdbm to 'yes' or 'no'
376 dnl AC_CHECK_HEADERS(gdbm.h)
379 [AC_REQUIRE([OL_LIB_GDBM])
380 AC_CHECK_HEADERS(gdbm.h)
381 AC_CACHE_CHECK(for db, [ol_cv_gdbm], [
382 if test $ol_cv_lib_gdbm = no -o $ac_cv_header_gdbm_h = no ; then
388 if test $ol_cv_gdbm = yes ; then
389 AC_DEFINE(HAVE_GDBM,1, [define if GNU DBM is available])
393 dnl ====================================================================
394 dnl Check if MDBM library exists
395 dnl Check for mdbm_open in standard libraries or -lmdbm
397 dnl defines ol_cv_lib_mdbm to 'yes' or '-lmdbm' or 'no'
398 dnl 'yes' implies mdbm_open is in $LIBS
401 dnl AC_CHECK_FUNC(mdbm_set_chain)
402 dnl AC_CHECK_LIB(mdbm,mdbm_set_chain)
404 AC_DEFUN([OL_LIB_MDBM],
405 [AC_CACHE_CHECK(for MDBM library, [ol_cv_lib_mdbm],
407 AC_CHECK_FUNC(mdbm_set_chain,[ol_cv_lib_mdbm=yes], [
408 AC_CHECK_LIB(mdbm,mdbm_set_chain,[ol_cv_lib_mdbm=-lmdbm],[ol_cv_lib_mdbm=no])
414 dnl --------------------------------------------------------------------
415 dnl Check if MDBM exists
417 dnl defines ol_cv_mdbm to 'yes' or 'no'
421 dnl AC_CHECK_HEADERS(mdbm.h)
424 [AC_REQUIRE([OL_LIB_MDBM])
425 AC_CHECK_HEADERS(mdbm.h)
426 AC_CACHE_CHECK(for db, [ol_cv_mdbm], [
427 if test $ol_cv_lib_mdbm = no -o $ac_cv_header_mdbm_h = no ; then
433 if test $ol_cv_mdbm = yes ; then
434 AC_DEFINE(HAVE_MDBM,1, [define if MDBM is available])
438 dnl ====================================================================
439 dnl Check if NDBM library exists
440 dnl Check for dbm_open in standard libraries or -lndbm or -ldbm
442 dnl defines ol_cv_lib_ndbm to 'yes' or '-lndbm' or -ldbm or 'no'
443 dnl 'yes' implies ndbm_open is in $LIBS
446 dnl AC_CHECK_FUNC(dbm_open)
447 dnl AC_CHECK_LIB(ndbm,dbm_open)
448 dnl AC_CHECK_LIB(dbm,dbm_open)
451 dnl should also check SVR4 case: dbm_open() in -lucb but that
452 dnl would requiring dealing with -L/usr/ucblib
454 AC_DEFUN([OL_LIB_NDBM],
455 [AC_CACHE_CHECK(for NDBM library, [ol_cv_lib_ndbm],
457 AC_CHECK_FUNC(dbm_open,[ol_cv_lib_ndbm=yes], [
458 AC_CHECK_LIB(ndbm,dbm_open,[ol_cv_lib_ndbm=-lndbm], [
459 AC_CHECK_LIB(dbm,dbm_open,[ol_cv_lib_ndbm=-ldbm],
460 [ol_cv_lib_ndbm=no])dnl
467 dnl --------------------------------------------------------------------
468 dnl Check if NDBM exists
470 dnl defines ol_cv_ndbm to 'yes' or 'no'
474 dnl AC_CHECK_HEADERS(ndbm.h)
477 dnl Doesn't handle SVR4 case (see above)
480 [AC_REQUIRE([OL_LIB_NDBM])
481 AC_CHECK_HEADERS(ndbm.h)
482 AC_CACHE_CHECK(for db, [ol_cv_ndbm], [
483 if test $ol_cv_lib_ndbm = no -o $ac_cv_header_ndbm_h = no ; then
489 if test $ol_cv_ndbm = yes ; then
490 AC_DEFINE(HAVE_NDBM,1, [define if NDBM is available])
494 dnl ====================================================================
495 dnl Check POSIX Thread version
497 dnl defines ol_cv_posix_version to 'final' or 'draft' or 'unknown'
498 dnl 'unknown' implies that the version could not be detected
499 dnl or that pthreads.h does exist. Existance of pthreads.h
500 dnl should be tested separately.
502 AC_DEFUN([OL_POSIX_THREAD_VERSION],
503 [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
504 AC_EGREP_CPP(pthread_version_final,[
505 # include <pthread.h>
506 /* this check could be improved */
507 # ifdef PTHREAD_ONCE_INIT
508 pthread_version_final
510 ], ol_pthread_final=yes, ol_pthread_final=no)
512 AC_EGREP_CPP(pthread_version_draft4,[
513 # include <pthread.h>
514 /* this check could be improved */
515 # ifdef pthread_once_init
516 pthread_version_draft4
518 ], ol_pthread_draft4=yes, ol_pthread_draft4=no)
520 if test $ol_pthread_final = yes -a $ol_pthread_draft4 = no; then
521 ol_cv_pthread_version=final
522 elif test $ol_pthread_final = no -a $ol_pthread_draft4 = yes; then
523 ol_cv_pthread_version=draft4
525 ol_cv_pthread_version=unknown
530 dnl --------------------------------------------------------------------
531 AC_DEFUN([OL_PTHREAD_TEST_INCLUDES],
532 [/* pthread test headers */
535 #define NULL (void*)0
541 return (void *) (p == NULL);
544 AC_DEFUN([OL_PTHREAD_TEST_FUNCTION],[
545 /* pthread test function */
549 /* make sure pthread_create() isn't just a stub */
551 status = pthread_create(&t, pthread_attr_default, task, NULL);
553 status = pthread_create(&t, NULL, task, NULL);
556 if( status ) exit( status );
558 /* make sure pthread_detach() isn't just a stub */
560 status = pthread_detach( &t );
562 status = pthread_detach( t );
565 #ifdef HAVE_LINUX_THREADS
566 pthread_kill_other_threads_np();
572 AC_DEFUN([OL_PTHREAD_TEST_PROGRAM],
573 [OL_PTHREAD_TEST_INCLUDES
579 OL_PTHREAD_TEST_FUNCTION
582 dnl --------------------------------------------------------------------
583 AC_DEFUN([OL_PTHREAD_TRY], [# Pthread try link: $1 ($2)
584 if test "$ol_link_threads" = no ; then
586 AC_CACHE_CHECK([for pthread link with $1], [$2], [
591 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
593 [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
600 if test $$2 = yes ; then
601 ol_link_pthreads="$1"
602 ol_link_threads=posix
607 dnl ====================================================================
608 dnl Check LinuxThreads Header
610 dnl defines ol_cv_header linux_threads to 'yes' or 'no'
611 dnl 'no' implies pthreads.h is not LinuxThreads or pthreads.h
612 dnl doesn't exists. Existance of pthread.h should separately
615 AC_DEFUN([OL_HEADER_LINUX_THREADS], [
616 AC_CACHE_CHECK([for LinuxThreads pthread.h],
617 [ol_cv_header_linux_threads],
618 [AC_EGREP_CPP(pthread_kill_other_threads_np,
619 [#include <pthread.h>],
620 [ol_cv_header_linux_threads=yes],
621 [ol_cv_header_linux_threads=no])
623 if test $ol_cv_header_linux_threads = yes; then
624 AC_DEFINE(HAVE_LINUX_THREADS,1,[if you have LinuxThreads])
627 dnl --------------------------------------------------------------------
628 dnl Check LinuxThreads Implementation
630 dnl defines ol_cv_sys_linux_threads to 'yes' or 'no'
631 dnl 'no' implies pthreads implementation is not LinuxThreads.
633 AC_DEFUN([OL_SYS_LINUX_THREADS], [
634 AC_CHECK_FUNC(pthread_kill_other_threads_np)
635 AC_CACHE_CHECK([for LinuxThreads implementation],
636 [ol_cv_sys_linux_threads],
637 [ol_cv_sys_linux_threads=$ac_cv_func_pthread_kill_other_threads_np])
640 dnl --------------------------------------------------------------------
641 dnl Check LinuxThreads consistency
642 AC_DEFUN([OL_LINUX_THREADS], [
643 AC_REQUIRE([OL_HEADER_LINUX_THREADS])
644 AC_REQUIRE([OL_SYS_LINUX_THREADS])
645 AC_CACHE_CHECK([for LinuxThreads consistency], [ol_cv_linux_threads], [
646 if test $ol_cv_header_linux_threads = yes -a \
647 $ol_cv_sys_linux_threads = yes; then
648 ol_cv_linux_threads=yes
649 elif test $ol_cv_header_linux_threads = no -a \
650 $ol_cv_sys_linux_threads = no; then
651 ol_cv_linux_threads=no
653 ol_cv_linux_threads=error
658 dnl ====================================================================
659 dnl Check for POSIX Regex
660 AC_DEFUN([OL_POSIX_REGEX], [
661 AC_CACHE_CHECK([for compatible POSIX regex],ol_cv_c_posix_regex,[
663 #include <sys/types.h>
665 static char *pattern, *string;
673 if(regcomp(&re, pattern, 0)) {
677 string = "ALL MATCH";
679 rc = regexec(&re, string, 0, (void*)0, 0);
685 [ol_cv_c_posix_regex=yes],
686 [ol_cv_c_posix_regex=no],
687 [ol_cv_c_posix_regex=cross])])
690 dnl ====================================================================
691 dnl Check if toupper() requires islower() to be called first
692 AC_DEFUN([OL_C_UPPER_LOWER],
693 [AC_CACHE_CHECK([if toupper() requires islower()],ol_cv_c_upper_lower,[
698 if ('C' == toupper('C'))
703 [ol_cv_c_upper_lower=no],
704 [ol_cv_c_upper_lower=yes],
705 [ol_cv_c_upper_lower=safe])])
706 if test $ol_cv_c_upper_lower != no ; then
707 AC_DEFINE(C_UPPER_LOWER,1, [define if toupper() requires islower()])
711 dnl ====================================================================
712 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
713 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
714 dnl Reported by Keith Bostic.
715 AC_DEFUN([OL_SYS_ERRLIST],
716 [AC_CACHE_CHECK([declaration of sys_errlist],ol_cv_dcl_sys_errlist,[
719 #include <sys/types.h>
720 #include <errno.h> ],
721 [char *c = (char *) *sys_errlist],
722 [ol_cv_dcl_sys_errlist=yes
723 ol_cv_have_sys_errlist=yes],
724 [ol_cv_dcl_sys_errlist=no])])
726 # It's possible (for near-UNIX clones) that sys_errlist doesn't exist
727 if test $ol_cv_dcl_sys_errlist = no ; then
728 AC_DEFINE(DECL_SYS_ERRLIST,1,
729 [define if sys_errlist is not declared in stdio.h or errno.h])
731 AC_CACHE_CHECK([existence of sys_errlist],ol_cv_have_sys_errlist,[
732 AC_TRY_LINK([#include <errno.h>],
733 [char *c = (char *) *sys_errlist],
734 [ol_cv_have_sys_errlist=yes],
735 [ol_cv_have_sys_errlist=no])])
737 if test $ol_cv_have_sys_errlist = yes ; then
738 AC_DEFINE(HAVE_SYS_ERRLIST,1,
739 [define if you actually have sys_errlist in your libs])
743 dnl ====================================================================
744 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
745 dnl "int x; int *volatile a = &x; *a = 0;"
746 dnl -- borrowed from PDKSH
747 AC_DEFUN(OL_C_VOLATILE,
748 [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
749 [AC_TRY_COMPILE([int x, y, z;],
750 [volatile int a; int * volatile b = x ? &y : &z;
751 /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */
752 *b = 0;], ol_cv_c_volatile=yes, ol_cv_c_volatile=no)])
753 if test $ol_cv_c_volatile = yes; then
756 AC_DEFINE(volatile,,[define as empty if volatile is not supported])
760 dnl ====================================================================
761 dnl Look for fetch(3)
762 AC_DEFUN([OL_LIB_FETCH],
764 LIBS="-lfetch -lcom_err $LIBS"
765 AC_CACHE_CHECK([fetch(3) library],ol_cv_lib_fetch,[
767 #include <sys/param.h>
770 [struct url *u = fetchParseURL("file:///"); ],
771 [ol_cv_lib_fetch=yes],
772 [ol_cv_lib_fetch=no])])
774 if test $ol_cv_lib_fetch != no ; then
775 ol_link_fetch="-lfetch -lcom_err"
776 AC_DEFINE(HAVE_FETCH,1,
777 [define if you actually have FreeBSD fetch(3)])
781 dnl ====================================================================
782 dnl Define sig_atomic_t if not defined in signal.h
783 AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
784 [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
785 [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
786 ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
787 if test $ol_cv_type_sig_atomic_t = no; then
788 AC_DEFINE(sig_atomic_t,int,
789 [define to atomic type if sig_atomic_t is not available])
793 dnl ====================================================================
794 dnl Define socklen_t if not defined in sys/types.h or sys/socket.h
795 AC_DEFUN(OL_TYPE_SOCKLEN_T,
796 [AC_CACHE_CHECK(for socklen_t, ol_cv_type_socklen_t,
798 #ifdef HAVE_SYS_TYPES_H
799 #include <sys/types.h>
801 #ifdef HAVE_SYS_SOCKET_H
802 #include <sys/socket.h>
805 ol_cv_type_socklen_t=yes, ol_cv_type_socklen_t=no)])
806 if test $ol_cv_type_socklen_t = no; then
807 AC_DEFINE(socklen_t, int,
808 [define to int if socklen_t is not available])
812 dnl ====================================================================
813 dnl Define inet_aton is available
814 AC_DEFUN(OL_FUNC_INET_ATON,
815 [AC_CACHE_CHECK([for inet_aton()], ol_cv_func_inet_aton,
817 #ifdef HAVE_SYS_TYPES_H
818 # include <sys/types.h>
820 #ifdef HAVE_SYS_SOCKET_H
821 # include <sys/socket.h>
822 # ifdef HAVE_SYS_SELECT_H
823 # include <sys/select.h>
825 # include <netinet/in.h>
826 # ifdef HAVE_ARPA_INET_H
827 # include <arpa/inet.h>
830 ], [struct in_addr in;
831 int rc = inet_aton( "255.255.255.255", &in );],
832 ol_cv_func_inet_aton=yes, ol_cv_func_inet_aton=no)])
833 if test $ol_cv_func_inet_aton != no; then
834 AC_DEFINE(HAVE_INET_ATON, 1,
835 [define to you inet_aton(3) is available])
839 dnl ====================================================================
840 dnl check no of arguments for ctime_r
841 AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
842 [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs,
843 [AC_TRY_COMPILE([#include <time.h>],
844 [time_t ti; char *buffer; ctime_r(&ti,buffer,32);],
845 ol_cv_func_ctime_r_nargs=3,
846 [AC_TRY_COMPILE([#include <time.h>],
847 [time_t ti; char *buffer; ctime_r(&ti,buffer);],
848 ol_cv_func_ctime_r_nargs=2,
849 ol_cv_func_ctime_r_nargs=0)])])
850 if test $ol_cv_func_ctime_r_nargs -gt 1 ; then
851 AC_DEFINE_UNQUOTED(CTIME_R_NARGS, $ol_cv_func_ctime_r_nargs,
852 [set to the number of arguments ctime_r() expects])
856 dnl --------------------------------------------------------------------
857 dnl check return type of ctime_r()
858 AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
859 [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type,
860 [AC_TRY_COMPILE([#include <time.h>],
861 [extern int (ctime_r)();],
862 ol_cv_func_ctime_r_type="int", ol_cv_func_ctime_r_type="charp")
864 if test $ol_cv_func_ctime_r_type = "int" ; then
865 AC_DEFINE(CTIME_R_RETURNS_INT,1, [define if ctime_r() returns int])
868 dnl ====================================================================
869 dnl check no of arguments for gethostbyname_r
870 AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
871 [AC_CACHE_CHECK(number of arguments of gethostbyname_r,
872 ol_cv_func_gethostbyname_r_nargs,
873 [AC_TRY_COMPILE([#include <sys/types.h>
874 #include <sys/socket.h>
875 #include <netinet/in.h>
877 #define BUFSIZE (sizeof(struct hostent)+10)],
878 [struct hostent hent; char buffer[BUFSIZE];
879 int bufsize=BUFSIZE;int h_errno;
880 (void)gethostbyname_r("segovia.cs.purdue.edu", &hent,
881 buffer, bufsize, &h_errno);],
882 ol_cv_func_gethostbyname_r_nargs=5,
883 [AC_TRY_COMPILE([#include <sys/types.h>
884 #include <sys/socket.h>
885 #include <netinet/in.h>
887 #define BUFSIZE (sizeof(struct hostent)+10)],
888 [struct hostent hent;struct hostent *rhent;
889 char buffer[BUFSIZE];
890 int bufsize=BUFSIZE;int h_errno;
891 (void)gethostbyname_r("localhost", &hent, buffer, bufsize,
893 ol_cv_func_gethostbyname_r_nargs=6,
894 ol_cv_func_gethostbyname_r_nargs=0)])])
895 if test $ol_cv_func_gethostbyname_r_nargs -gt 1 ; then
896 AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_NARGS,
897 $ol_cv_func_gethostbyname_r_nargs,
898 [set to the number of arguments gethostbyname_r() expects])
902 dnl check no of arguments for gethostbyaddr_r
903 AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
904 [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r,
905 [ol_cv_func_gethostbyaddr_r_nargs],
906 [AC_TRY_COMPILE([#include <sys/types.h>
907 #include <sys/socket.h>
908 #include <netinet/in.h>
910 #define BUFSIZE (sizeof(struct hostent)+10)],
911 [struct hostent hent; char buffer[BUFSIZE];
913 size_t alen=sizeof(struct in_addr);
914 int bufsize=BUFSIZE;int h_errno;
915 (void)gethostbyaddr_r( (void *)&(add.s_addr),
916 alen, AF_INET, &hent, buffer, bufsize, &h_errno);],
917 ol_cv_func_gethostbyaddr_r_nargs=7,
918 [AC_TRY_COMPILE([#include <sys/types.h>
919 #include <sys/socket.h>
920 #include <netinet/in.h>
922 #define BUFSIZE (sizeof(struct hostent)+10)],
923 [struct hostent hent;
924 struct hostent *rhent; char buffer[BUFSIZE];
926 size_t alen=sizeof(struct in_addr);
927 int bufsize=BUFSIZE;int h_errno;
928 (void)gethostbyaddr_r( (void *)&(add.s_addr),
929 alen, AF_INET, &hent, buffer, bufsize,
931 ol_cv_func_gethostbyaddr_r_nargs=8,
932 ol_cv_func_gethostbyaddr_r_nargs=0)])])
933 if test $ol_cv_func_gethostbyaddr_r_nargs -gt 1 ; then
934 AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_NARGS,
935 $ol_cv_func_gethostbyaddr_r_nargs,
936 [set to the number of arguments gethostbyaddr_r() expects])