]> git.sur5r.net Git - openldap/blob - build/openldap.m4
Changes to support FreeBSD LinuxThreads port. Namely don't rely
[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 AC_DEFUN([OL_PTHREAD_TRY_LINK], [# Pthread try link: $1 ($2)
477         if test "$ol_link_threads" = no ; then
478                 # try $1
479                 AC_CACHE_CHECK([for pthread link with $1], [$2], [
480                         # save the flags
481                         ol_LIBS="$LIBS"
482                         LIBS="$1 $LIBS"
483
484                         AC_TRY_LINK([
485 #include <pthread.h>
486 #ifndef NULL
487 #define NULL (void*)0
488 #endif
489 ],[
490         pthread_t t;
491
492 #if HAVE_PTHREADS_D4
493         pthread_create(&t, pthread_attr_default, NULL, NULL);
494         pthread_detach( &t );
495 #else
496         pthread_create(&t, NULL, NULL, NULL);
497         pthread_detach( t );
498 #endif
499 #ifdef HAVE_LINUX_THREADS
500         pthread_kill_other_threads_np();
501 #endif
502 ], [$2=yes], [$2=no])
503
504                 # restore the LIBS
505                 LIBS="$ol_LIBS"
506                 ])
507
508                 if test $$2 = yes ; then
509                         ol_link_pthreads="$1"
510                         ol_link_threads=posix
511                 fi
512         fi
513 ])
514 dnl
515 dnl ====================================================================
516 dnl Check LinuxThreads Header
517 dnl
518 dnl defines ol_cv_header linux_threads to 'yes' or 'no'
519 dnl             'no' implies pthreads.h is not LinuxThreads or pthreads.h
520 dnl             doesn't exists.  Existance of pthread.h should separately
521 dnl             checked.
522 dnl 
523 AC_DEFUN([OL_HEADER_LINUX_THREADS], [
524         AC_CACHE_CHECK([for LinuxThreads pthread.h],
525                 [ol_cv_header_linux_threads],
526                 [AC_EGREP_CPP(pthread_kill_other_threads_np,
527                         [#include <pthread.h>],
528                         [ol_cv_header_linux_threads=yes],
529                         [ol_cv_header_linux_threads=no])
530                 ])
531         if test $ol_cv_header_linux_threads = yes; then
532                 AC_DEFINE(HAVE_LINUX_THREADS,1,[if you have LinuxThreads])
533         fi
534 ])dnl
535 dnl --------------------------------------------------------------------
536 dnl     Check LinuxThreads Implementation
537 dnl
538 dnl     defines ol_cv_sys_linux_threads to 'yes' or 'no'
539 dnl     'no' implies pthreads implementation is not LinuxThreads.
540 dnl 
541 AC_DEFUN([OL_SYS_LINUX_THREADS], [
542         AC_CHECK_FUNC(pthread_kill_other_threads_np)
543         AC_CACHE_CHECK([for LinuxThreads implementation],
544                 [ol_cv_sys_linux_threads],
545                 [ol_cv_sys_linux_threads=$ac_cv_func_pthread_kill_other_threads_np])
546 ])dnl
547 dnl
548 dnl --------------------------------------------------------------------
549 dnl Check LinuxThreads consistency
550 AC_DEFUN([OL_LINUX_THREADS], [
551         AC_REQUIRE([OL_HEADER_LINUX_THREADS])
552         AC_REQUIRE([OL_SYS_LINUX_THREADS])
553         AC_CACHE_CHECK([for LinuxThreads consistency], [ol_cv_linux_threads], [
554                 if test $ol_cv_header_linux_threads = yes -a \
555                         $ol_cv_sys_linux_threads = yes; then
556                         ol_cv_linux_threads=yes
557                 elif test $ol_cv_header_linux_threads = no -a \
558                         $ol_cv_sys_linux_threads = no; then
559                         ol_cv_linux_threads=no
560                 else
561                         ol_cv_linux_threads=error
562                 fi
563         ])
564 ])dnl
565 dnl
566 dnl ====================================================================
567 dnl Check if toupper() requires islower() to be called first
568 AC_DEFUN([OL_C_UPPER_LOWER],
569 [
570 AC_MSG_CHECKING([if toupper() requires islower()])
571 AC_CACHE_VAL(ol_cv_c_upper_lower,[
572         AC_TRY_RUN([
573 #include <ctype.h>
574 main()
575 {
576         if ('C' == toupper('C'))
577                 exit(0);
578         else
579                 exit(1);
580 }],
581         [ol_cv_c_upper_lower=no],
582         [ol_cv_c_upper_lower=yes],
583         [ol_cv_c_upper_lower=safe])])
584 AC_MSG_RESULT($ol_cv_c_upper_lower)
585 if test $ol_cv_c_upper_lower != no ; then
586         AC_DEFINE(C_UPPER_LOWER,1, [define if toupper() requires islower()])
587 fi
588 ])
589 dnl
590 dnl ====================================================================
591 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
592 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
593 dnl Reported by Keith Bostic.
594 AC_DEFUN([OL_SYS_ERRLIST],
595 [
596 AC_MSG_CHECKING([declaration of sys_errlist])
597 AC_CACHE_VAL(ol_cv_dcl_sys_errlist,[
598         AC_TRY_COMPILE([
599 #include <stdio.h>
600 #include <sys/types.h>
601 #include <errno.h> ],
602         [char *c = (char *) *sys_errlist],
603         [ol_cv_dcl_sys_errlist=yes],
604         [ol_cv_dcl_sys_errlist=no])])
605 AC_MSG_RESULT($ol_cv_dcl_sys_errlist)
606 # It's possible (for near-UNIX clones) that sys_errlist doesn't exist
607 if test $ol_cv_dcl_sys_errlist = no ; then
608         AC_DEFINE(DECL_SYS_ERRLIST,1,
609                 [define if sys_errlist is not declared in stdio.h or errno.h])
610         AC_MSG_CHECKING([existence of sys_errlist])
611         AC_CACHE_VAL(ol_cv_have_sys_errlist,[
612                 AC_TRY_LINK([#include <errno.h>],
613                         [char *c = (char *) *sys_errlist],
614                         [ol_cv_have_sys_errlist=yes],
615                         [ol_cv_have_sys_errlist=no])])
616         AC_MSG_RESULT($ol_cv_have_sys_errlist)
617         if test $ol_cv_have_sys_errlist = yes ; then
618                 AC_DEFINE(HAVE_SYS_ERRLIST,1,
619                         [define if you actually have sys_errlist in your libs])
620         fi
621 fi
622 ])dnl
623 dnl
624 dnl ====================================================================
625 dnl Check to see if we should not declare strdup if we have it
626 dnl
627 AC_DEFUN([OL_DECL_STRDUP],
628 [
629 AC_MSG_CHECKING([strdup declaration])
630 AC_CACHE_VAL(ol_cv_dcl_strdup,[
631         AC_TRY_COMPILE([
632 #include <string.h> ],
633         [extern char *strdup();],
634         [ol_cv_dcl_strdup=yes],
635         [ol_cv_dcl_strdup=no])])
636 AC_MSG_RESULT($ol_cv_dcl_strdup)
637 if test $ol_cv_dcl_strdup = yes ; then
638         AC_DEFINE(DECL_STRDUP,1,
639                 [define if you have strdup() but it's not declared])
640 fi
641 ])dnl
642
643 dnl ====================================================================
644 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
645 dnl "int x; int *volatile a = &x; *a = 0;"
646 dnl     -- borrowed from PDKSH
647 AC_DEFUN(OL_C_VOLATILE,
648  [AC_CACHE_CHECK(if compiler understands volatile, ol_cv_c_volatile,
649     [AC_TRY_COMPILE([int x, y, z;],
650       [volatile int a; int * volatile b = x ? &y : &z;
651       /* Older MIPS compilers (eg., in Ultrix 4.2) don't like *b = 0 */
652       *b = 0;], ol_cv_c_volatile=yes, ol_cv_c_volatile=no)])
653   if test $ol_cv_c_volatile = yes; then
654     : 
655   else
656     AC_DEFINE(volatile,)
657   fi
658  ])dnl
659 dnl
660 dnl ====================================================================
661 dnl Define sig_atomic_t if not defined in signal.h
662 AC_DEFUN(OL_TYPE_SIG_ATOMIC_T,
663  [AC_CACHE_CHECK(for sig_atomic_t, ol_cv_type_sig_atomic_t,
664     [AC_TRY_COMPILE([#include <signal.h>], [sig_atomic_t atomic;],
665                 ol_cv_type_sig_atomic_t=yes, ol_cv_type_sig_atomic_t=no)])
666   if test $ol_cv_type_sig_atomic_t = no; then
667     AC_DEFINE(sig_atomic_t, int)
668   fi
669  ])dnl
670 dnl
671 dnl ====================================================================
672 dnl check no of arguments for ctime_r
673 AC_DEFUN(OL_FUNC_CTIME_R_NARGS,
674  [AC_CACHE_CHECK(number of arguments of ctime_r, ol_cv_func_ctime_r_nargs,
675    [AC_TRY_COMPILE([#include <time.h>],
676                 [time_t ti; char *buffer; ctime_r(&ti,buffer,32);],
677                         ol_cv_func_ctime_r_nargs=3,
678                         [AC_TRY_COMPILE([#include <time.h>],
679                                 [time_t ti; char *buffer; ctime_r(&ti,buffer);],
680                                         ol_cv_func_ctime_r_nargs=2,
681                                         ol_cv_func_ctime_r_nargs=0)])])
682   if test $ol_cv_func_ctime_r_nargs -gt 1 ; then
683     AC_DEFINE_UNQUOTED(CTIME_R_NARGS, $ol_cv_func_ctime_r_nargs,
684                 [set to the number of arguments ctime_r() expects])
685   fi
686 ])dnl
687 dnl
688 dnl --------------------------------------------------------------------
689 dnl check return type of ctime_r()
690 AC_DEFUN(OL_FUNC_CTIME_R_TYPE,
691  [AC_CACHE_CHECK(return type of ctime_r, ol_cv_func_ctime_r_type,
692    [AC_TRY_COMPILE([#include <time.h>],
693                 [int ctime_r();],
694                         ol_cv_func_ctime_r_type="int", ol_cv_func_ctime_r_type="charp")
695         ])
696   if test $ol_cv_func_ctime_r_type = "int" ; then
697         AC_DEFINE(CTIME_R_RETURNS_INT,1, [define if ctime_r() returns int])
698   fi
699 ])dnl
700 dnl ====================================================================
701 dnl check no of arguments for gethostbyname_r
702 AC_DEFUN(OL_FUNC_GETHOSTBYNAME_R_NARGS,
703  [AC_CACHE_CHECK(number of arguments of gethostbyname_r,
704         ol_cv_func_gethostbyname_r_nargs,
705         [AC_TRY_COMPILE([#include <sys/types.h>
706 #include <sys/socket.h>
707 #include <netinet/in.h>
708 #include <netdb.h>
709 #define BUFSIZE (sizeof(struct hostent)+10)],
710                 [struct hostent hent; char buffer[BUFSIZE];
711                 int bufsize=BUFSIZE;int h_errno;
712                 (void)gethostbyname_r("segovia.cs.purdue.edu", &hent,
713                         buffer, bufsize, &h_errno);],
714                 ol_cv_func_gethostbyname_r_nargs=5, 
715                 [AC_TRY_COMPILE([#include <sys/types.h>
716 #include <sys/socket.h>
717 #include <netinet/in.h>
718 #include <netdb.h>
719 #define BUFSIZE (sizeof(struct hostent)+10)],
720                         [struct hostent hent;struct hostent *rhent;
721                         char buffer[BUFSIZE];
722                         int bufsize=BUFSIZE;int h_errno;
723                         (void)gethostbyname_r("localhost", &hent, buffer, bufsize,
724                                 &rhent, &h_errno);],
725                         ol_cv_func_gethostbyname_r_nargs=6,
726                         ol_cv_func_gethostbyname_r_nargs=0)])])
727   if test $ol_cv_func_gethostbyname_r_nargs -gt 1 ; then
728         AC_DEFINE_UNQUOTED(GETHOSTBYNAME_R_NARGS,
729                 $ol_cv_func_gethostbyname_r_nargs,
730                 [set to the number of arguments gethostbyname_r() expects])
731   fi
732 ])dnl
733 dnl
734 dnl check no of arguments for gethostbyaddr_r
735 AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
736  [AC_CACHE_CHECK(number of arguments of gethostbyaddr_r,
737         [ol_cv_func_gethostbyaddr_r_nargs],
738         [AC_TRY_COMPILE([#include <sys/types.h>
739 #include <sys/socket.h>
740 #include <netinet/in.h>
741 #include <netdb.h>
742 #define BUFSIZE (sizeof(struct hostent)+10)],
743            [struct hostent hent; char buffer[BUFSIZE]; 
744             struct in_addr add;
745             size_t alen=sizeof(struct in_addr);
746             int bufsize=BUFSIZE;int h_errno;
747                 (void)gethostbyaddr_r( (void *)&(add.s_addr),
748                         alen, AF_INET, &hent, buffer, bufsize, &h_errno);],
749                 ol_cv_func_gethostbyaddr_r_nargs=7,
750                 [AC_TRY_COMPILE([#include <sys/types.h>
751 #include <sys/socket.h>
752 #include <netinet/in.h>
753 #include <netdb.h>
754 #define BUFSIZE (sizeof(struct hostent)+10)],
755                         [struct hostent hent;
756                         struct hostent *rhent; char buffer[BUFSIZE]; 
757                         struct in_addr add;
758                         size_t alen=sizeof(struct in_addr);
759                         int bufsize=BUFSIZE;int h_errno;
760                         (void)gethostbyaddr_r( (void *)&(add.s_addr),
761                                 alen, AF_INET, &hent, buffer, bufsize, 
762                                 &rhent, &h_errno);],
763                         ol_cv_func_gethostbyaddr_r_nargs=8,
764                         ol_cv_func_gethostbyaddr_r_nargs=0)])])
765   if test $ol_cv_func_gethostbyaddr_r_nargs -gt 1 ; then
766     AC_DEFINE_UNQUOTED(GETHOSTBYADDR_R_NARGS,
767                 $ol_cv_func_gethostbyaddr_r_nargs,
768                 [set to the number of arguments gethostbyaddr_r() expects])
769   fi
770 ])dnl
771 dnl