]> git.sur5r.net Git - openldap/blob - build/openldap.m4
update project settings
[openldap] / build / openldap.m4
1 dnl Copyright 1998-1999 The OpenLDAP Foundation,  All Rights Reserved.
2 dnl COPYING RESTRICTIONS APPLY, See COPYRIGHT file
3 dnl
4 dnl OpenLDAP Autoconf Macros
5 dnl
6 dnl --------------------------------------------------------------------
7 dnl Restricted form of AC_ARG_ENABLE that limits user options
8 dnl
9 dnl $1 = option name
10 dnl $2 = help-string
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)[)],[
15         ol_arg=invalid
16         for ol_val in ifelse($4,,[auto yes no],[$4]) ; do
17                 if test "$enableval" = "$ol_val" ; then
18                         ol_arg="$ol_val"
19                 fi
20         done
21         if test "$ol_arg" = "invalid" ; then
22                 AC_MSG_ERROR(bad value $enableval for --enable-$1)
23         fi
24         ol_enable_$1="$ol_arg"
25 ],
26 [       ol_enable_$1=ifelse($3,,"auto","$3")])dnl
27 dnl AC_VERBOSE(OpenLDAP -enable-$1 $ol_enable_$1)
28 # end --enable-$1
29 ])dnl
30 dnl
31 dnl --------------------------------------------------------------------
32 dnl Restricted form of AC_ARG_WITH that limits user options
33 dnl
34 dnl $1 = option name
35 dnl $2 = help-string
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)[)],[
40         ol_arg=invalid
41         for ol_val in ifelse($4,,[yes no],[$4]) ; do
42                 if test "$withval" = "$ol_val" ; then
43                         ol_arg="$ol_val"
44                 fi
45         done
46         if test "$ol_arg" = "invalid" ; then
47                 AC_MSG_ERROR(bad value $withval for --with-$1)
48         fi
49         ol_with_$1="$ol_arg"
50 ],
51 [       ol_with_$1=ifelse($3,,"no","$3")])dnl
52 dnl AC_VERBOSE(OpenLDAP --with-$1 $ol_with_$1)
53 # end --with-$1
54 ])dnl
55 dnl
56 dnl ====================================================================
57 dnl check if hard links are supported.
58 dnl
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
65 then
66   ol_cv_prog_LN_H="ln"
67 else
68   ol_cv_prog_LN_H="cp"
69 fi
70 rm -f conftest.src conftest.dst
71 ])dnl
72 LN_H="$ol_cv_prog_LN_H"
73 if test "$ol_cv_prog_LN_H" = "ln"; then
74         AC_MSG_RESULT(yes)
75 else
76         AC_MSG_RESULT(no)
77 fi
78 AC_SUBST(LN_H)dnl
79 ])dnl
80 dnl
81 dnl ====================================================================
82 dnl Check if system uses EBCDIC instead of ASCII
83 AC_DEFUN([OL_CPP_EBCDIC], [# test for EBCDIC
84 AC_MSG_CHECKING([for EBCDIC])
85 AC_CACHE_VAL(ol_cv_cpp_ebcdic,[
86         AC_TRY_CPP([
87 #if !('M' == 0xd4)
88 #include <__ASCII__/generate_error.h>
89 #endif
90 ],
91         [ol_cv_cpp_ebcdic=yes],
92         [ol_cv_cpp_ebcdic=no])])
93 AC_MSG_RESULT($ol_cv_cpp_ebcdic)
94 if test $ol_cv_cpp_ebcdic = yes ; then
95         AC_DEFINE(HAVE_EBCDIC,1, [define if system uses EBCDIC instead of ASCII])
96 fi
97 ])
98 dnl
99 dnl --------------------------------------------------------------------
100 dnl OpenLDAP version of STDC header check w/ EBCDIC support
101 AC_DEFUN(OL_HEADER_STDC,
102 [AC_REQUIRE_CPP()dnl
103 AC_REQUIRE([OL_CPP_EBCDIC])dnl
104 AC_CACHE_CHECK([for ANSI C header files], ol_cv_header_stdc,
105 [AC_TRY_CPP([#include <stdlib.h>
106 #include <stdarg.h>
107 #include <string.h>
108 #include <float.h>], ol_cv_header_stdc=yes, ol_cv_header_stdc=no)
109
110 if test $ol_cv_header_stdc = yes; then
111   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
112 AC_EGREP_HEADER(memchr, string.h, , ol_cv_header_stdc=no)
113 fi
114
115 if test $ol_cv_header_stdc = yes; then
116   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
117 AC_EGREP_HEADER(free, stdlib.h, , ol_cv_header_stdc=no)
118 fi
119
120 if test $ol_cv_header_stdc = yes; then
121   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
122 AC_TRY_RUN([#include <ctype.h>
123 #ifndef HAVE_EBCDIC
124 #       define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
125 #       define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
126 #else
127 #       define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
128                 || ('j' <= (c) && (c) <= 'r') \
129                 || ('s' <= (c) && (c) <= 'z'))
130 #       define TOUPPER(c)       (ISLOWER(c) ? ((c) | 0x40) : (c))
131 #endif
132 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
133 int main () { int i; for (i = 0; i < 256; i++)
134 if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
135 exit (0); }
136 ], , ol_cv_header_stdc=no, :)
137 fi])
138 if test $ol_cv_header_stdc = yes; then
139   AC_DEFINE(STDC_HEADERS)
140 fi
141 ac_cv_header_stdc=disable
142 ])
143 dnl
144 dnl ====================================================================
145 dnl Check if struct passwd has pw_gecos
146 AC_DEFUN([OL_STRUCT_PASSWD_PW_GECOS], [# test for pw_gecos in struct passwd
147 AC_MSG_CHECKING([struct passwd for pw_gecos])
148 AC_CACHE_VAL(ol_cv_struct_passwd_pw_gecos,[
149         AC_TRY_COMPILE([#include <pwd.h>],[
150         struct passwd pwd;
151         pwd.pw_gecos = pwd.pw_name;
152 ],
153         [ol_cv_struct_passwd_pw_gecos=yes],
154         [ol_cv_struct_passwd_pw_gecos=no])])
155 AC_MSG_RESULT($ol_cv_struct_passwd_pw_gecos)
156 if test $ol_cv_struct_passwd_pw_gecos = yes ; then
157         AC_DEFINE(HAVE_PW_GECOS,1, [define if struct passwd has pw_gecos])
158 fi
159 ])
160 dnl
161 dnl ====================================================================
162 dnl Check if db.h is Berkeley DB2
163 dnl
164 dnl defines ol_cv_header_db2 to 'yes' or 'no'
165 dnl
166 dnl uses:
167 dnl             AC_CHECK_HEADERS(db.h)
168 dnl
169 AC_DEFUN([OL_HEADER_BERKELEY_DB2],
170 [AC_CHECK_HEADERS(db.h)
171 if test $ac_cv_header_db_h = yes ; then
172         AC_CACHE_CHECK([if db.h is DB2], [ol_cv_header_db2],[
173                 AC_EGREP_CPP(__db_version_2,[
174 #                       include <db.h>
175                         /* this check could be improved */
176 #                       ifdef DB_VERSION_MAJOR
177 #                               if DB_VERSION_MAJOR == 2
178                                         __db_version_2
179 #                               endif
180 #                       endif
181                 ], ol_cv_header_db2=yes, ol_cv_header_db2=no)])
182 else
183         ol_cv_header_db2=no
184 fi
185 ])dnl
186 dnl --------------------------------------------------------------------
187 dnl Check if Berkeley DB2 library exists
188 dnl Check for dbopen in standard libraries or -ldb
189 dnl
190 dnl defines ol_cv_lib_db2 to '-ldb' or 'no'
191 dnl
192 dnl uses:
193 dnl             AC_CHECK_LIB(db,db_open)
194 dnl
195 AC_DEFUN([OL_LIB_BERKELEY_DB2],
196 [AC_CACHE_CHECK([for DB2 library], [ol_cv_lib_db2],
197 [       ol_LIBS="$LIBS"
198         AC_CHECK_LIB(db,db_open,[ol_cv_lib_db2=-ldb],[ol_cv_lib_db2=no])
199         LIBS="$ol_LIBS"
200 ])
201 ])dnl
202 dnl
203 dnl --------------------------------------------------------------------
204 dnl Check if Berkeley db2 exists
205 dnl
206 dnl defines ol_cv_berkeley_db2 to 'yes' or 'no'
207 dnl 
208 dnl uses:
209 dnl             OL_LIB_BERKELEY_DB2
210 dnl             OL_HEADER_BERKELEY_DB2
211 dnl
212 AC_DEFUN([OL_BERKELEY_DB2],
213 [AC_REQUIRE([OL_LIB_BERKELEY_DB2])
214  AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
215  AC_CACHE_CHECK([for Berkeley DB2], [ol_cv_berkeley_db2], [
216         if test "$ol_cv_lib_db2" = no -o "$ol_cv_header_db2" = no ; then
217                 ol_cv_berkeley_db2=no
218         else
219                 ol_cv_berkeley_db2=yes
220         fi
221 ])
222  if test $ol_cv_berkeley_db2 = yes ; then
223         AC_DEFINE(HAVE_BERKELEY_DB2,1, [define if Berkeley DBv2 is available])
224  fi
225 ])dnl
226 dnl
227 dnl ====================================================================
228 dnl Check for db.h/db_185.h is Berkeley DB
229 dnl
230 dnl defines ol_cv_header_db to 'yes' or 'no'
231 dnl
232 dnl uses:
233 dnl             OL_HEADER_BERKELEY_DB2
234 dnl             AC_CHECK_HEADERS(db_185.h)
235 dnl
236 AC_DEFUN([OL_HEADER_BERKELEY_DB],
237 [AC_REQUIRE([OL_HEADER_BERKELEY_DB2])
238 AC_CHECK_HEADERS(db_185.h)
239 if test "$ol_cv_header_db2" = yes ; then
240         dnl db.h is db2! 
241
242         ol_cv_header_db=$ac_cv_header_db_185_h
243 else
244         ol_cv_header_db=$ac_cv_header_db_h
245 fi
246 ])dnl
247 dnl
248 dnl --------------------------------------------------------------------
249 dnl Check if Berkeley DB library exists
250 dnl Check for dbopen in standard libraries or -ldb
251 dnl
252 dnl defines ol_cv_lib_db to 'yes' or '-ldb' or 'no'
253 dnl             'yes' implies dbopen is in $LIBS
254 dnl
255 dnl uses:
256 dnl             AC_CHECK_FUNC(dbopen)
257 dnl             AC_CHECK_LIB(db,dbopen)
258 dnl
259 AC_DEFUN([OL_LIB_BERKELEY_DB],
260 [AC_CACHE_CHECK([for Berkeley DB library], [ol_cv_lib_db],
261 [       ol_LIBS="$LIBS"
262         AC_CHECK_FUNC(dbopen,[ol_cv_lib_db=yes], [
263                 AC_CHECK_LIB(db,dbopen,[ol_cv_lib_db=-ldb],[ol_cv_lib_db=no])
264         ])
265         LIBS="$ol_LIBS"
266 ])
267 ])dnl
268 dnl
269 dnl --------------------------------------------------------------------
270 dnl Check if Berkeley DB exists
271 dnl
272 dnl defines ol_cv_berkeley_db to 'yes' or 'no'
273 dnl 
274 dnl uses:
275 dnl             OL_LIB_BERKELEY_DB
276 dnl             OL_HEADER_BERKELEY_DB
277 dnl
278 AC_DEFUN([OL_BERKELEY_DB],
279 [AC_REQUIRE([OL_LIB_BERKELEY_DB])
280  AC_REQUIRE([OL_HEADER_BERKELEY_DB])
281  AC_CACHE_CHECK([for Berkeley DB], [ol_cv_berkeley_db], [
282         if test "$ol_cv_lib_db" = no -o "$ol_cv_header_db" = no ; then
283                 ol_cv_berkeley_db=no
284         else
285                 ol_cv_berkeley_db=yes
286         fi
287 ])
288  if test $ol_cv_berkeley_db = yes ; then
289         AC_DEFINE(HAVE_BERKELEY_DB,1, [define if Berkeley DB is available])
290  fi
291 ])dnl
292 dnl
293 dnl ====================================================================
294 dnl Check if GDBM library exists
295 dnl Check for gdbm_open in standard libraries or -lgdbm
296 dnl
297 dnl defines ol_cv_lib_gdbm to 'yes' or '-lgdbm' or 'no'
298 dnl             'yes' implies gdbm_open is in $LIBS
299 dnl
300 dnl uses:
301 dnl             AC_CHECK_FUNC(gdbm_open)
302 dnl             AC_CHECK_LIB(gdbm,gdbm_open)
303 dnl
304 AC_DEFUN([OL_LIB_GDBM],
305 [AC_CACHE_CHECK(for GDBM library, [ol_cv_lib_gdbm],
306 [       ol_LIBS="$LIBS"
307         AC_CHECK_FUNC(gdbm_open,[ol_cv_lib_gdbm=yes], [
308                 AC_CHECK_LIB(gdbm,gdbm_open,[ol_cv_lib_gdbm=-lgdbm],[ol_cv_lib_gdbm=no])
309         ])
310         LIBS="$ol_LIBS"
311 ])
312 ])dnl
313 dnl
314 dnl --------------------------------------------------------------------
315 dnl Check if GDBM exists
316 dnl
317 dnl defines ol_cv_gdbm to 'yes' or 'no'
318 dnl 
319 dnl uses:
320 dnl             OL_LIB_GDBM
321 dnl             AC_CHECK_HEADERS(gdbm.h)
322 dnl
323 AC_DEFUN([OL_GDBM],
324 [AC_REQUIRE([OL_LIB_GDBM])
325  AC_CHECK_HEADERS(gdbm.h)
326  AC_CACHE_CHECK(for db, [ol_cv_gdbm], [
327         if test $ol_cv_lib_gdbm = no -o $ac_cv_header_gdbm_h = no ; then
328                 ol_cv_gdbm=no
329         else
330                 ol_cv_gdbm=yes
331         fi
332 ])
333  if test $ol_cv_gdbm = yes ; then
334         AC_DEFINE(HAVE_GDBM,1, [define if GNU DBM is available])
335  fi
336 ])dnl
337 dnl
338 dnl ====================================================================
339 dnl Check if MDBM library exists
340 dnl Check for mdbm_open in standard libraries or -lmdbm
341 dnl
342 dnl defines ol_cv_lib_mdbm to 'yes' or '-lmdbm' or 'no'
343 dnl             'yes' implies mdbm_open is in $LIBS
344 dnl
345 dnl uses:
346 dnl             AC_CHECK_FUNC(mdbm_set_chain)
347 dnl             AC_CHECK_LIB(mdbm,mdbm_set_chain)
348 dnl
349 AC_DEFUN([OL_LIB_MDBM],
350 [AC_CACHE_CHECK(for MDBM library, [ol_cv_lib_mdbm],
351 [       ol_LIBS="$LIBS"
352         AC_CHECK_FUNC(mdbm_set_chain,[ol_cv_lib_mdbm=yes], [
353                 AC_CHECK_LIB(mdbm,mdbm_set_chain,[ol_cv_lib_mdbm=-lmdbm],[ol_cv_lib_mdbm=no])
354         ])
355         LIBS="$ol_LIBS"
356 ])
357 ])dnl
358 dnl
359 dnl --------------------------------------------------------------------
360 dnl Check if MDBM exists
361 dnl
362 dnl defines ol_cv_mdbm to 'yes' or 'no'
363 dnl 
364 dnl uses:
365 dnl             OL_LIB_MDBM
366 dnl             AC_CHECK_HEADERS(mdbm.h)
367 dnl
368 AC_DEFUN([OL_MDBM],
369 [AC_REQUIRE([OL_LIB_MDBM])
370  AC_CHECK_HEADERS(mdbm.h)
371  AC_CACHE_CHECK(for db, [ol_cv_mdbm], [
372         if test $ol_cv_lib_mdbm = no -o $ac_cv_header_mdbm_h = no ; then
373                 ol_cv_mdbm=no
374         else
375                 ol_cv_mdbm=yes
376         fi
377 ])
378  if test $ol_cv_mdbm = yes ; then
379         AC_DEFINE(HAVE_MDBM,1, [define if MDBM is available])
380  fi
381 ])dnl
382 dnl
383 dnl ====================================================================
384 dnl Check if NDBM library exists
385 dnl Check for dbm_open in standard libraries or -lndbm or -ldbm
386 dnl
387 dnl defines ol_cv_lib_ndbm to 'yes' or '-lndbm' or -ldbm or 'no'
388 dnl             'yes' implies ndbm_open is in $LIBS
389 dnl
390 dnl uses:
391 dnl             AC_CHECK_FUNC(dbm_open)
392 dnl             AC_CHECK_LIB(ndbm,dbm_open)
393 dnl             AC_CHECK_LIB(dbm,dbm_open)
394 dnl
395 dnl restrictions:
396 dnl             should also check SVR4 case: dbm_open() in -lucb but that
397 dnl             would requiring dealing with -L/usr/ucblib
398 dnl
399 AC_DEFUN([OL_LIB_NDBM],
400 [AC_CACHE_CHECK(for NDBM library, [ol_cv_lib_ndbm],
401 [       ol_LIBS="$LIBS"
402         AC_CHECK_FUNC(dbm_open,[ol_cv_lib_ndbm=yes], [
403                 AC_CHECK_LIB(ndbm,dbm_open,[ol_cv_lib_ndbm=-lndbm], [
404                         AC_CHECK_LIB(dbm,dbm_open,[ol_cv_lib_ndbm=-ldbm],
405                                 [ol_cv_lib_ndbm=no])dnl
406                 ])
407         ])
408         LIBS="$ol_LIBS"
409 ])
410 ])dnl
411 dnl
412 dnl --------------------------------------------------------------------
413 dnl Check if NDBM exists
414 dnl
415 dnl defines ol_cv_ndbm to 'yes' or 'no'
416 dnl 
417 dnl uses:
418 dnl             OL_LIB_NDBM
419 dnl             AC_CHECK_HEADERS(ndbm.h)
420 dnl
421 dnl restrictions:
422 dnl             Doesn't handle SVR4 case (see above)
423 dnl
424 AC_DEFUN([OL_NDBM],
425 [AC_REQUIRE([OL_LIB_NDBM])
426  AC_CHECK_HEADERS(ndbm.h)
427  AC_CACHE_CHECK(for db, [ol_cv_ndbm], [
428         if test $ol_cv_lib_ndbm = no -o $ac_cv_header_ndbm_h = no ; then
429                 ol_cv_ndbm=no
430         else
431                 ol_cv_ndbm=yes
432         fi
433 ])
434  if test $ol_cv_ndbm = yes ; then
435         AC_DEFINE(HAVE_NDBM,1, [define if NDBM is available])
436  fi
437 ])dnl
438 dnl
439 dnl ====================================================================
440 dnl Check POSIX Thread version 
441 dnl
442 dnl defines ol_cv_posix_version to 'final' or 'draft' or 'unknown'
443 dnl     'unknown' implies that the version could not be detected
444 dnl             or that pthreads.h does exist.  Existance of pthreads.h
445 dnl             should be tested separately.
446 dnl
447 AC_DEFUN([OL_POSIX_THREAD_VERSION],
448 [AC_CACHE_CHECK([POSIX thread version],[ol_cv_pthread_version],[
449         AC_EGREP_CPP(pthread_version_final,[
450 #               include <pthread.h>
451                 /* this check could be improved */
452 #               ifdef PTHREAD_ONCE_INIT
453                         pthread_version_final
454 #               endif
455         ], ol_pthread_final=yes, ol_pthread_final=no)
456
457         AC_EGREP_CPP(pthread_version_draft4,[
458 #               include <pthread.h>
459                 /* this check could be improved */
460 #               ifdef pthread_once_init
461                         pthread_version_draft4
462 #               endif
463         ], ol_pthread_draft4=yes, ol_pthread_draft4=no)
464
465         if test $ol_pthread_final = yes -a $ol_pthread_draft4 = no; then
466                 ol_cv_pthread_version=final
467         elif test $ol_pthread_final = no -a $ol_pthread_draft4 = yes; then
468                 ol_cv_pthread_version=draft4
469         else
470                 ol_cv_pthread_version=unknown
471         fi
472 ])
473 ])dnl
474 dnl
475 dnl --------------------------------------------------------------------
476 dnl Check LinuxThread
477 dnl
478 dnl defines ol_cv_linux_threads to 'yes' or 'no'
479 dnl             'no' implies pthreads.h is not LinuxThreads or pthreads.h
480 dnl             doesn't exists.  Existance of pthread.h should separately
481 dnl             checked.
482 dnl 
483 AC_DEFUN([OL_LINUX_THREADS],
484 [
485 AC_CACHE_CHECK([for LinuxThreads], [ol_cv_linux_threads], [
486         res=`grep Linuxthreads /usr/include/pthread.h 2>/dev/null | wc -l`
487         if test "$res" -gt 0 ; then
488                 ol_cv_linux_threads=yes
489         else
490                 ol_cv_linux_threads=no
491         fi
492 ])
493 ])dnl
494 dnl
495 dnl ====================================================================
496 dnl Check if toupper() requires islower() to be called first
497 AC_DEFUN([OL_C_UPPER_LOWER],
498 [
499 AC_MSG_CHECKING([if toupper() requires islower()])
500 AC_CACHE_VAL(ol_cv_c_upper_lower,[
501         AC_TRY_RUN([
502 #include <ctype.h>
503 main()
504 {
505         if ('C' == toupper('C'))
506                 exit(0);
507         else
508                 exit(1);
509 }],
510         [ol_cv_c_upper_lower=no],
511         [ol_cv_c_upper_lower=yes],
512         [ol_cv_c_upper_lower=safe])])
513 AC_MSG_RESULT($ol_cv_c_upper_lower)
514 if test $ol_cv_c_upper_lower != no ; then
515         AC_DEFINE(C_UPPER_LOWER,1, [define if toupper() requires islower()])
516 fi
517 ])
518 dnl
519 dnl ====================================================================
520 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
521 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
522 dnl Reported by Keith Bostic.
523 AC_DEFUN([OL_SYS_ERRLIST],
524 [
525 AC_MSG_CHECKING([declaration of sys_errlist])
526 AC_CACHE_VAL(ol_cv_dcl_sys_errlist,[
527         AC_TRY_COMPILE([
528 #include <stdio.h>
529 #include <sys/types.h>
530 #include <errno.h> ],
531         [char *c = (char *) *sys_errlist],
532         [ol_cv_dcl_sys_errlist=yes],
533         [ol_cv_dcl_sys_errlist=no])])
534 AC_MSG_RESULT($ol_cv_dcl_sys_errlist)
535 # It's possible (for near-UNIX clones) that sys_errlist doesn't exist
536 if test $ol_cv_dcl_sys_errlist = no ; then
537         AC_DEFINE(DECL_SYS_ERRLIST,1,
538                 [define if sys_errlist is not declared in stdio.h or errno.h])
539         AC_MSG_CHECKING([existence of sys_errlist])
540         AC_CACHE_VAL(ol_cv_have_sys_errlist,[
541                 AC_TRY_LINK([#include <errno.h>],
542                         [char *c = (char *) *sys_errlist],
543                         [ol_cv_have_sys_errlist=yes],
544                         [ol_cv_have_sys_errlist=no])])
545         AC_MSG_RESULT($ol_cv_have_sys_errlist)
546         if test $ol_cv_have_sys_errlist = yes ; then
547                 AC_DEFINE(HAVE_SYS_ERRLIST,1,
548                         [define if you actually have sys_errlist in your libs])
549         fi
550 fi
551 ])dnl
552 dnl
553 dnl ====================================================================
554 dnl Check to see if we should not declare strdup if we have it
555 dnl
556 AC_DEFUN([OL_DECL_STRDUP],
557 [
558 AC_MSG_CHECKING([strdup declaration])
559 AC_CACHE_VAL(ol_cv_dcl_strdup,[
560         AC_TRY_COMPILE([
561 #include <string.h> ],
562         [extern char *strdup();],
563         [ol_cv_dcl_strdup=yes],
564         [ol_cv_dcl_strdup=no])])
565 AC_MSG_RESULT($ol_cv_dcl_strdup)
566 if test $ol_cv_dcl_strdup = yes ; then
567         AC_DEFINE(DECL_STRDUP,1,
568                 [define if you have strdup() but it's not declared])
569 fi
570 ])dnl
571
572 dnl ====================================================================
573 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
574 dnl "int x; int *volatile a = &x; *a = 0;"
575 dnl     -- borrowed from PDKSH
576 AC_DEFUN(OL_C_VOLATILE,
577  [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
578     [AC_TRY_COMPILE([int x, y, z;],
579       [volatile int a; int * volatile b = x ? &y : &z;
580       /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */
581       *b = 0;], ol_cv_c_volatile=yes, ol_cv_c_volatile=no)])
582   if test $ol_cv_c_volatile = yes; then
583     : 
584   else
585     AC_DEFINE(volatile,)
586   fi
587  ])dnl
588 dnl
589 dnl ====================================================================
590 dnl Define sig_atomic_t if not defined in signal.h
591 AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
592  [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
593     [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
594                 ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
595   if test $ol_cv_type_sig_atomic_t = no; then
596     AC_DEFINE(sig_atomic_t, int)
597   fi
598  ])dnl
599 dnl
600 dnl ====================================================================
601 dnl check no of arguments for ctime_r
602 AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
603  [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs,
604    [AC_TRY_COMPILE([#include <time.h>],
605                 [time_t ti; char *buffer; ctime_r(&ti,buffer,32);],
606                         ol_cv_func_ctime_r_nargs=3,
607                         [AC_TRY_COMPILE([#include <time.h>],
608                                 [time_t ti; char *buffer; ctime_r(&ti,buffer);],
609                                         ol_cv_func_ctime_r_nargs=2,
610                                         ol_cv_func_ctime_r_nargs=0)])])
611   if test $ol_cv_func_ctime_r_nargs -gt 1 ; then
612     AC_DEFINE_UNQUOTED(CTIME_R_NARGS, $ol_cv_func_ctime_r_nargs,
613                 [set to the number of arguments ctime_r() expects])
614   fi
615 ])dnl
616 dnl
617 dnl --------------------------------------------------------------------
618 dnl check return type of ctime_r()
619 AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
620  [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type,
621    [AC_TRY_COMPILE([#include <time.h>],
622                 [int ctime_r();],
623                         ol_cv_func_ctime_r_type="int", ol_cv_func_ctime_r_type="charp")
624         ])
625   if test $ol_cv_func_ctime_r_type = "int" ; then
626         AC_DEFINE(CTIME_R_RETURNS_INT,1, [define if ctime_r() returns int])
627   fi
628 ])dnl
629 dnl ====================================================================
630 dnl check no of arguments for gethostbyname_r
631 AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
632  [AC_CACHE_CHECK(number of arguments of gethostbyname_r,
633         ol_cv_func_gethostbyname_r_nargs,
634         [AC_TRY_COMPILE([#include <sys/types.h>
635 #include <sys/socket.h>
636 #include <netinet/in.h>
637 #include <netdb.h>
638 #define BUFSIZE (sizeof(struct hostent)+10)],
639                 [struct hostent hent; char buffer[BUFSIZE];
640                 int bufsize=BUFSIZE;int h_errno;
641                 (void)gethostbyname_r("segovia.cs.purdue.edu", &hent,
642                         buffer, bufsize, &h_errno);],
643                 ol_cv_func_gethostbyname_r_nargs=5, 
644                 [AC_TRY_COMPILE([#include <sys/types.h>
645 #include <sys/socket.h>
646 #include <netinet/in.h>
647 #include <netdb.h>
648 #define BUFSIZE (sizeof(struct hostent)+10)],
649                         [struct hostent hent;struct hostent *rhent;
650                         char buffer[BUFSIZE];
651                         int bufsize=BUFSIZE;int h_errno;
652                         (void)gethostbyname_r("localhost", &hent, buffer, bufsize,
653                                 &rhent, &h_errno);],
654                         ol_cv_func_gethostbyname_r_nargs=6,
655                         ol_cv_func_gethostbyname_r_nargs=0)])])
656   if test $ol_cv_func_gethostbyname_r_nargs -gt 1 ; then
657         AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_NARGS,
658                 $ol_cv_func_gethostbyname_r_nargs,
659                 [set to the number of arguments gethostbyname_r() expects])
660   fi
661 ])dnl
662 dnl
663 dnl check no of arguments for gethostbyaddr_r
664 AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
665  [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r,
666         [ol_cv_func_gethostbyaddr_r_nargs],
667         [AC_TRY_COMPILE([#include <sys/types.h>
668 #include <sys/socket.h>
669 #include <netinet/in.h>
670 #include <netdb.h>
671 #define BUFSIZE (sizeof(struct hostent)+10)],
672            [struct hostent hent; char buffer[BUFSIZE]; 
673             struct in_addr add;
674             size_t alen=sizeof(struct in_addr);
675             int bufsize=BUFSIZE;int h_errno;
676                 (void)gethostbyaddr_r( (void *)&(add.s_addr),
677                         alen, AF_INET, &hent, buffer, bufsize, &h_errno);],
678                 ol_cv_func_gethostbyaddr_r_nargs=7,
679                 [AC_TRY_COMPILE([#include <sys/types.h>
680 #include <sys/socket.h>
681 #include <netinet/in.h>
682 #include <netdb.h>
683 #define BUFSIZE (sizeof(struct hostent)+10)],
684                         [struct hostent hent;
685                         struct hostent *rhent; char buffer[BUFSIZE]; 
686                         struct in_addr add;
687                         size_t alen=sizeof(struct in_addr);
688                         int bufsize=BUFSIZE;int h_errno;
689                         (void)gethostbyaddr_r( (void *)&(add.s_addr),
690                                 alen, AF_INET, &hent, buffer, bufsize, 
691                                 &rhent, &h_errno);],
692                         ol_cv_func_gethostbyaddr_r_nargs=8,
693                         ol_cv_func_gethostbyaddr_r_nargs=0)])])
694   if test $ol_cv_func_gethostbyaddr_r_nargs -gt 1 ; then
695     AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_NARGS,
696                 $ol_cv_func_gethostbyaddr_r_nargs,
697                 [set to the number of arguments gethostbyaddr_r() expects])
698   fi
699 ])dnl
700 dnl