]> git.sur5r.net Git - openldap/blob - configure.in
NT updates from jon@symas.com.
[openldap] / configure.in
1 dnl $OpenLDAP$
2 dnl
3 dnl Copyright 1998-2001 The OpenLDAP Foundation.  All Rights Reserved.
4 dnl 
5 dnl Redistribution and use in source and binary forms, with or without
6 dnl modification, are permitted only as authorized by the OpenLDAP
7 dnl Public License.  A copy of this license is available at
8 dnl http://www.OpenLDAP.org/license.html or in file LICENSE in the
9 dnl top-level directory of the distribution.
10 dnl
11 dnl ----------------------------------------------------------------
12 dnl Redefine AC_INIT_BINSH to provide RCS IDs and copyright notice
13 dnl at top of generated configure script.  Prints simple copyright.
14 define([AC_INIT_BINSH],
15 [[#! /bin/sh
16 # $]OpenLDAP[$
17 # from] translit([$OpenLDAP$], $")] [
18
19 # Copyright 1998-2001 The OpenLDAP Foundation.  All Rights Reserved.
20
21 # Redistribution and use in source and binary forms, with or without
22 # modification, are permitted only as authorized by the OpenLDAP
23 # Public License.  A copy of this license is available at
24 # http://www.OpenLDAP.org/license.html or in file LICENSE in the
25 # top-level directory of the distribution.
26
27 echo "Copyright 1998-2001 The OpenLDAP Foundation,  All Rights Reserved."
28 echo "Restrictions apply, see COPYRIGHT and LICENSE files."
29 ])dnl
30 dnl ----------------------------------------------------------------
31 dnl Disable config.cache!
32 define([AC_CACHE_LOAD], )dnl
33 define([AC_CACHE_SAVE], )dnl
34 dnl ================================================================
35 dnl Configure.in for OpenLDAP
36 AC_INIT(build/version.sh)dnl
37
38 # set unset (borrowed from autoconf 2.49c)
39 if (OL_FOO=OL_FOO; unset OL_FOO) >/dev/null 2>&1; then
40   ol_unset=unset
41 else
42   ol_unset=false
43 fi
44 # unset CDPATH
45 $ol_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
46
47 AC_CONFIG_AUX_DIR(build)dnl
48
49 eval `$ac_aux_dir/version.sh`
50 if test -z "$OL_STRING"; then
51         AC_MSG_ERROR([could not determine version])
52 fi
53
54 echo "Configuring $OL_STRING ..."
55
56 dnl Determine host platform
57 dnl             we try not to use this for much
58 AC_CANONICAL_SYSTEM
59
60 AM_INIT_AUTOMAKE([$OL_PACKAGE],[$OL_VERSION], [no defines])dnl
61 AC_SUBST(PACKAGE)dnl
62 AC_SUBST(VERSION)dnl
63 AC_DEFINE_UNQUOTED(OPENLDAP_PACKAGE,"$PACKAGE",Package)
64 AC_DEFINE_UNQUOTED(OPENLDAP_VERSION,"$VERSION",Version)
65
66 AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION,$OL_API_INC,Version)
67 AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_MAJOR,$OL_MAJOR,Major)
68 AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_MINOR,$OL_MINOR,Minor)
69 AC_DEFINE_UNQUOTED(LDAP_VENDOR_VERSION_PATCH,$OL_PATCH,Patch)
70
71 OPENLDAP_LIBVERSION=$OL_API_LIB
72 AC_SUBST(OPENLDAP_LIBVERSION)dnl
73
74 dnl We use autoconf features new to 2.13.
75 dnl aclocal.m4 should be built using aclocal from automake 1.4
76 dnl libtool 1.3.3 should be installed.
77 AC_PREREQ(2.13)dnl Required Autoconf version
78
79 AC_CONFIG_HEADER(include/portable.h include/ldap_features.h include/lber_types.h)dnl
80
81 dnl ================================================================
82 dnl Start Args
83 AC_MSG_CHECKING(configure arguments)
84 AC_PREFIX_DEFAULT(/usr/local)
85
86 top_builddir=`pwd`
87 AC_SUBST(top_builddir)dnl
88
89 dnl ----------------------------------------------------------------
90 dnl --with-subdir
91 ldap_subdir="/openldap"
92
93 AC_ARG_WITH(subdir,
94 [  --with-subdir=DIR       change default subdirectory used for installs],
95 [case "$withval" in
96         no) ldap_subdir=""
97                 ;;
98         yes)
99                 ;;
100         /*|\\*)
101                 ldap_subdir="$withval"
102                 ;;
103         *)
104                 ldap_subdir="/$withval"
105                 ;;
106 esac
107 ])dnl
108
109 AC_SUBST(ldap_subdir)dnl
110
111 dnl ----------------------------------------------------------------
112 dnl General "enable" options
113 OL_ARG_ENABLE(debug,[  --enable-debug     enable debugging], yes)dnl
114 OL_ARG_ENABLE(syslog,[  --enable-syslog   enable syslog support], auto)dnl
115 OL_ARG_ENABLE(proctitle,[  --enable-proctitle     enable proctitle support], yes)dnl
116 OL_ARG_ENABLE(cache,[  --enable-cache     enable caching (experimental)], no)dnl
117 OL_ARG_ENABLE(referrals,[  --enable-referrals     enable LDAPv2+ Referrals (experimental)], no)dnl
118 OL_ARG_ENABLE(kbind,[  --enable-kbind     enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
119 OL_ARG_ENABLE(ipv6,[  --enable-ipv6       enable IPv6 support], auto)dnl
120 OL_ARG_ENABLE(local,[  --enable-local     enable AF_LOCAL (AF_UNIX) socket support], auto)dnl
121 OL_ARG_ENABLE(rewrite,[  --enable-rewrite         enable rewrite], no)dnl
122 OL_ARG_ENABLE(x_compile,[  --enable-x-compile     enable cross compiling],
123         no, [yes no])dnl
124
125 dnl ----------------------------------------------------------------
126 dnl General "with" options
127 dnl OL_ARG_ENABLE(dmalloc,[  --enable-dmalloc     enable debug malloc support], no)dnl
128
129 OL_ARG_WITH(cyrus_sasl,[  --with-cyrus-sasl       with Cyrus SASL support],
130         auto, [auto yes no] )
131 OL_ARG_WITH(fetch,[  --with-fetch                 with fetch URL support],
132         auto, [auto yes no] )
133 OL_ARG_WITH(kerberos,[  --with-kerberos   with Kerberos support],
134         auto, [auto k5 k5only k425 kth k4 afs yes no])
135 OL_ARG_WITH(readline,[  --with-readline   with readline support],
136         auto, [auto yes no] )
137 OL_ARG_WITH(threads,[  --with-threads     with threads],
138         auto, [auto nt posix mach pth lwp yes no manual] )
139 OL_ARG_WITH(tls,[  --with-tls             with TLS/SSL support],
140         auto, [auto ssleay openssl yes no] )
141 OL_ARG_WITH(yielding_select,[  --with-yielding-select  with implicitly yielding select],
142         auto, [auto yes no manual] )
143
144 dnl ----------------------------------------------------------------
145 dnl Server options
146 dnl ----------------------------------------------------------------
147
148 dnl ----------------------------------------------------------------
149 dnl SLAPD OPTIONS
150 AC_ARG_WITH(xxslapdoptions,[SLAPD (Standalone LDAP Daemon) Options:])
151 OL_ARG_ENABLE(slapd,[  --enable-slapd     enable building slapd], yes)dnl
152 OL_ARG_ENABLE(aci,[    --enable-aci       enable per-object ACIs (experimental)], no)dnl
153 OL_ARG_ENABLE(cleartext,[    --enable-cleartext   enable cleartext passwords], yes)dnl
154 OL_ARG_ENABLE(crypt,[    --enable-crypt   enable crypt(3) passwords], no)dnl
155 OL_ARG_ENABLE(dynamic,[    --enable-dynamic       enable linking built binaries with dynamic libs], no)dnl
156 OL_ARG_ENABLE(kpasswd,[    --enable-kpasswd       enable Kerberos password verification], no)dnl
157 OL_ARG_ENABLE(lmpasswd,[    --enable-lmpasswd     enable LAN Manager passwords], no)dnl
158 OL_ARG_ENABLE(spasswd,[    --enable-spasswd       enable (Cyrus) SASL password verification], no)dnl
159 OL_ARG_ENABLE(modules,[    --enable-modules       enable dynamic module support], no)dnl
160 dnl OL_ARG_ENABLE(multimaster,[    --enable-multimaster  enable multimaster replication], no)dnl
161 OL_ARG_ENABLE(phonetic,[    --enable-phonetic     enable phonetic/soundex], no)dnl
162 OL_ARG_ENABLE(rlookups,[    --enable-rlookups     enable reverse lookups], no)dnl
163 OL_ARG_ENABLE(slp, [    --enable-slp          enable SLPv2 support], no)dnl     
164 OL_ARG_ENABLE(wrappers,[    --enable-wrappers     enable tcp wrapper support], no)dnl
165
166 dnl SLAPD Backend options
167 OL_ARG_ENABLE(bdb,[    --enable-bdb       enable Berkeley DB backend], no)dnl
168 OL_ARG_WITH(bdb_module,[    --with-bdb-module     module type], static,
169         [static dynamic])
170 OL_ARG_ENABLE(dnssrv,[    --enable-dnssrv         enable dnssrv backend], no)dnl
171 OL_ARG_WITH(dnssrv_module,[    --with-dnssrv-module  module type], static,
172         [static dynamic])
173 OL_ARG_ENABLE(ldap,[    --enable-ldap     enable ldap backend], no)dnl
174 OL_ARG_WITH(ldap_module,[    --with-ldap-module   module type], static,
175         [static dynamic])
176 OL_ARG_ENABLE(ldbm,[    --enable-ldbm     enable ldbm backend], yes)dnl
177 OL_ARG_WITH(ldbm_api,[    --with-ldbm-api       with LDBM API], auto,
178         [auto berkeley bcompat mdbm gdbm])
179 OL_ARG_WITH(ldbm_module,[    --with-ldbm-module   module type], static,
180         [static dynamic])
181 OL_ARG_WITH(ldbm_type,[    --with-ldbm-type       use LDBM type], auto,
182         [auto btree hash])
183 OL_ARG_ENABLE(meta,[    --enable-meta     enable metadirectory backend], no)dnl
184 OL_ARG_WITH(meta_module,[    --with-meta-module   module type], static,
185         [static dynamic])
186 OL_ARG_ENABLE(monitor,[    --enable-monitor       enable monitor backend], no)dnl
187 OL_ARG_WITH(monitor_module,[    --with-monitor-module module type], static,
188         [static dynamic])
189 OL_ARG_ENABLE(passwd,[    --enable-passwd         enable passwd backend], no)dnl
190 OL_ARG_WITH(passwd_module,[    --with-passwd-module  module type], static,
191         [static dynamic])
192 OL_ARG_ENABLE(perl,[    --enable-perl     enable perl backend], no)dnl
193 OL_ARG_WITH(perl_module,[    --with-perl-module   module type], static,
194         [static dynamic])
195 OL_ARG_ENABLE(shell,[    --enable-shell   enable shell backend], no)dnl
196 OL_ARG_WITH(shell_module,[    --with-shell-module         module type], static,
197         [static dynamic])
198 OL_ARG_ENABLE(sql,[    --enable-sql       enable sql backend], no)dnl
199 OL_ARG_WITH(sql_module,[    --with-sql-module     module type], static,
200         [static dynamic])
201 OL_ARG_ENABLE(tcl,[    --enable-tcl       enable tcl backend], no)dnl
202 OL_ARG_WITH(tcl_module,[    --with-tcl-module     module type], static,
203         [static dynamic])
204
205 dnl ----------------------------------------------------------------
206 dnl SLURPD OPTIONS
207 AC_ARG_WITH(xxslurpdoptions,[SLURPD (Replication Daemon) Options:])
208 OL_ARG_ENABLE(slurpd,[  --enable-slurpd   enable building slurpd], auto)dnl
209
210 dnl ----------------------------------------------------------------
211 AC_ARG_WITH(xxliboptions,[Library Generation & Linking Options])
212 AC_ENABLE_STATIC
213 dnl AC_DISABLE_SHARED
214 AC_ENABLE_SHARED
215
216 dnl ----------------------------------------------------------------
217
218 dnl General "enable" options
219 # validate options
220 if test $ol_enable_slapd = no ; then
221         dnl SLAPD was specificallly disabled
222         if test $ol_enable_bdb = yes ; then
223                 AC_MSG_WARN([slapd disabled, ignoring --enable-bdb argument])
224         fi
225         if test $ol_enable_dnssrv = yes ; then
226                 AC_MSG_WARN([slapd disabled, ignoring --enable-dnssrv argument])
227         fi
228         if test $ol_enable_ldap = yes ; then
229                 AC_MSG_WARN([slapd disabled, ignoring --enable-ldap argument])
230         fi
231         if test $ol_enable_ldbm = yes ; then
232                 AC_MSG_WARN([slapd disabled, ignoring --enable-ldbm argument])
233         fi
234         if test $ol_enable_meta = yes ; then
235                 AC_MSG_WARN([slapd disabled, ignoring --enable-meta argument])
236         fi
237         if test $ol_enable_monitor = yes ; then
238                 AC_MSG_WARN([slapd disabled, ignoring --enable-monitor argument])
239         fi
240         if test $ol_enable_passwd = yes ; then
241                 AC_MSG_WARN([slapd disabled, ignoring --enable-passwd argument])
242         fi
243         if test $ol_enable_perl = yes ; then
244                 AC_MSG_WARN([slapd disabled, ignoring --enable-perl argument])
245         fi
246         if test $ol_enable_shell = yes ; then
247                 AC_MSG_WARN([slapd disabled, ignoring --enable-shell argument])
248         fi
249         if test $ol_enable_tcl = yes ; then
250                 AC_MSG_WARN([slapd disabled, ignoring --enable-tcl argument])
251         fi
252         if test $ol_enable_sql = yes ; then
253                 AC_MSG_WARN([slapd disabled, ignoring --enable-sql argument])
254         fi
255         if test $ol_enable_modules = yes ; then
256                 AC_MSG_WARN([slapd disabled, ignoring --enable-modules argument])
257         fi
258 dnl     if test $ol_enable_multimaster = yes ; then
259 dnl             AC_MSG_WARN([slapd disabled, ignoring --enable-multimaster argument])
260 dnl     fi
261         if test $ol_enable_wrappers = yes ; then
262                 AC_MSG_WARN([slapd disabled, ignoring --enable-wrappers argument])
263         fi
264         if test $ol_enable_phonetic = yes ; then
265                 AC_MSG_WARN([slapd disabled, ignoring --enable-phonetic argument])
266         fi
267         if test $ol_enable_rlookups = yes ; then
268                 AC_MSG_WARN([slapd disabled, ignoring --enable-rlookups argument])
269         fi
270         if test $ol_enable_aci = yes ; then
271                 AC_MSG_WARN([slapd disabled, ignoring --enable-aci argument])
272         fi
273         if test $ol_with_ldbm_api != auto ; then
274                 AC_MSG_WARN([slapd disabled, ignoring --with-ldbm-api argument])
275         fi
276         if test $ol_with_ldbm_type != auto ; then
277                 AC_MSG_WARN([slapd disabled, ignoring --with-ldbm-type argument])
278         fi
279         if test $ol_with_bdb_module != static ; then
280                 AC_MSG_WARN([slapd disabled, ignoring --with-bdb-module argument])
281         fi
282         if test $ol_with_dnssrv_module != static ; then
283                 AC_MSG_WARN([slapd disabled, ignoring --with-dnssrv-module argument])
284         fi
285         if test $ol_with_ldap_module != static ; then
286                 AC_MSG_WARN([slapd disabled, ignoring --with-ldap-module argument])
287         fi
288         if test $ol_with_ldbm_module != static ; then
289                 AC_MSG_WARN([slapd disabled, ignoring --with-ldbm-module argument])
290         fi
291         if test $ol_with_meta_module != static ; then
292                 AC_MSG_WARN([slapd disabled, ignoring --with-meta-module argument])
293         fi
294         if test $ol_with_monitor_module != static ; then
295                 AC_MSG_WARN([slapd disabled, ignoring --with-monitor-module argument])
296         fi
297         if test $ol_with_passwd_module != static ; then
298                 AC_MSG_WARN([slapd disabled, ignoring --with-passwd-module argument])
299         fi
300         if test $ol_with_perl_module != static ; then
301                 AC_MSG_WARN([slapd disabled, ignoring --with-perl-module argument])
302         fi
303         if test $ol_with_shell_module != static ; then
304                 AC_MSG_WARN([slapd disabled, ignoring --with-shell-module argument])
305         fi
306         if test $ol_with_tcl_module != static ; then
307                 AC_MSG_WARN([slapd disabled, ignoring --with-tcl-module argument])
308         fi
309         if test $ol_with_sql_module != static ; then
310                 AC_MSG_WARN([slapd disabled, ignoring --with-sql-module argument])
311         fi
312         if test $ol_enable_slurpd = yes ; then
313                 AC_MSG_ERROR([slurpd requires slapd])
314         fi
315         if test $ol_enable_rewrite = yes ; then
316                 AC_MSG_WARN([slapd disabled, ignoring --enable-rewrite argument])
317         fi
318
319         # force settings to no
320         ol_enable_bdb=no
321         ol_enable_dnssrv=no
322         ol_enable_ldap=no
323         ol_enable_ldbm=no
324         ol_enable_meta=no
325         ol_enable_monitor=no
326         ol_enable_passwd=no
327         ol_enable_perl=no
328         ol_enable_shell=no
329         ol_enable_tcl=no
330         ol_enable_sql=no
331
332         ol_enable_modules=no
333 dnl     ol_enable_multimaster=no
334         ol_enable_phonetic=no
335         ol_enable_rlookups=no
336         ol_enable_aci=no
337         ol_enable_wrappers=no
338         ol_enable_dynamic=no
339
340         ol_with_ldbm_api=no
341         ol_with_ldbm_type=no
342
343         ol_with_bdb_module=static
344         ol_with_dnssrv_module=static
345         ol_with_ldap_module=static
346         ol_with_ldbm_module=static
347         ol_with_meta_module=static
348         ol_with_monitor_module=static
349         ol_with_passwd_module=static
350         ol_with_perl_module=static
351         ol_with_shell_module=static
352         ol_with_tcl_module=static
353         ol_with_sql_module=static
354
355         ol_enable_slurpd=no
356
357         ol_enable_rewrite=no
358
359 elif test $ol_enable_ldbm = no ; then
360         dnl SLAPD without LDBM
361
362         if test $ol_with_ldbm_api != auto ; then
363                 AC_MSG_WARN([LDBM disabled, ignoring --with-ldbm-api argument])
364         fi
365
366         if test $ol_with_ldbm_type != auto ; then
367                 AC_MSG_WARN([LDBM disabled, ignoring --with-ldbm-type argument])
368         fi
369
370         if test $ol_with_ldbm_module != static ; then
371                 AC_MSG_WARN([LDBM disabled, ignoring --with-ldbm-module argument])
372         fi
373
374         if test $ol_enable_modules != yes -a \
375                 $ol_enable_bdb = no -a \
376                 $ol_enable_dnssrv = no -a \
377                 $ol_enable_ldap = no -a \
378                 $ol_enable_meta = no -a \
379                 $ol_enable_monitor = no -a \
380                 $ol_enable_passwd = no -a \
381                 $ol_enable_perl = no -a \
382                 $ol_enable_shell = no -a \
383                 $ol_enable_sql = no -a \
384                 $ol_enable_tcl = no ; then
385
386                 if test $ol_enable_slapd = yes ; then
387                         AC_MSG_ERROR([slapd requires a backend])
388                 else
389                         AC_MSG_WARN([skipping slapd, no backend specified])
390                         ol_enable_slapd=no
391                 fi
392         fi
393
394         ol_with_ldbm_api=no
395         ol_with_ldbm_type=no
396         ol_with_ldbm_module=static
397
398         if test $ol_enable_bdb != no ; then
399                 ol_with_ldbm_api=berkeley
400         fi
401
402 else
403         dnl SLAPD with LDBM
404         if test $ol_with_ldbm_api = gdbm -a \
405                 $ol_with_ldbm_type = btree ; then
406                 AC_MSG_ERROR([GDBM only supports LDBM type hash])
407         fi
408         if test $ol_with_ldbm_api = mdbm -a \
409                 $ol_with_ldbm_type = btree ; then
410                 AC_MSG_ERROR([MDBM only supports LDBM type hash])
411         fi
412         if test $ol_with_ldbm_api = ndbm -a \
413                 $ol_with_ldbm_type = btree ; then
414                 AC_MSG_ERROR([NDBM only supports LDBM type hash])
415         fi
416
417         if test $ol_enable_bdb = yes ; then
418                 if test $ol_with_ldbm_api = auto ; then
419                         ol_with_ldbm_api=berkeley
420                 elif test $ol_with_ldbm_api != berkeley ; then
421                         AC_MSG_ERROR([LDBM API not compatible with BDB])
422                 fi
423
424         elif test $ol_enable_bdb = auto ; then
425                 if test $ol_with_ldbm_api != berkeley \
426                         -o $ol_with_ldbm_api != auto ; then
427                         AC_MSG_WARN([LDBM API not compatible with BDB, disabling BDB])
428                         ol_enable_bdb=no
429                 fi
430         fi
431 fi
432
433 if test $ol_enable_slurpd = yes ; then
434         dnl SLURPD was specifically enabled
435         if test $ol_with_threads = no ; then
436                 AC_MSG_ERROR([slurpd requires threads])
437         fi
438 fi
439
440 if test $ol_enable_lmpasswd = yes ; then
441         if test $ol_with_tls = no ; then
442                 AC_MSG_ERROR([LAN Manager passwords require OpenSSL])
443         fi
444 fi
445
446 if test $ol_enable_kbind = yes -o $ol_enable_kpasswd = yes ; then
447         if test $ol_with_kerberos = no ; then
448                 AC_MSG_ERROR([options require --with-kerberos])
449         elif test $ol_with_kerberos = auto ; then
450                 ol_with_kerberos=yes
451         fi
452
453 elif test $ol_enable_kbind = no -o $ol_enable_kpasswd = no ; then
454         if test $ol_with_kerberos = auto ; then
455                 ol_with_kerberos=no
456         elif test $ol_with_kerberos != no ; then
457                 AC_MSG_WARN([Kerberos detection enabled unnecessarily]);
458                 ol_with_kerberos=no
459         fi
460 fi
461
462 if test $ol_enable_spasswd = yes ; then
463         if test $ol_with_cyrus_sasl = no ; then
464                 AC_MSG_ERROR([options require --with-cyrus-sasl])
465         fi
466         ol_with_cyrus_sasl=yes
467 fi
468
469 AC_MSG_RESULT(done)
470
471 dnl ----------------------------------------------------------------
472 dnl Initialize vars
473 LDAP_LIBS=
474 LDIF_LIBS=
475 LDBM_LIB=
476 LDBM_LIBS=
477 LTHREAD_LIBS=
478 LUTIL_LIBS=
479
480 SLAPD_LIBS=
481 SLURPD_LIBS=
482
483 BUILD_SLAPD=no
484 BUILD_SLURPD=no
485
486 BUILD_THREAD=no
487
488 BUILD_BDB=no
489 BUILD_DNSSRV=no
490 BUILD_LDAP=no
491 BUILD_LDBM=no
492 BUILD_META=no
493 BUILD_MONITOR=no
494 BUILD_PASSWD=no
495 BUILD_PERL=no
496 BUILD_SHELL=no
497 BUILD_SQL=no
498 BUILD_TCL=no
499
500 BUILD_BDB_DYNAMIC=static
501 BUILD_DNSSRV_DYNAMIC=static
502 BUILD_LDAP_DYNAMIC=static
503 BUILD_LDBM_DYNAMIC=static
504 BUILD_META_DYNAMIC=static
505 BUILD_MONITOR_DYNAMIC=static
506 BUILD_PASSWD_DYNAMIC=static
507 BUILD_PERL_DYNAMIC=static
508 BUILD_SHELL_DYNAMIC=static
509 BUILD_TCL_DYNAMIC=static
510 BUILD_SQL_DYNAMIC=static
511
512 SLAPD_MODULES_LDFLAGS=
513 SLAPD_MODULES_CPPFLAGS=
514 SLAPD_MODULES_LIST=
515
516 SLAPD_PERL_LDFLAGS=
517 MOD_PERL_LDFLAGS=
518 PERL_CPPFLAGS=
519
520 SLAPD_SQL_LDFLAGS=
521 SLAPD_SQL_LIBS=
522 SLAPD_SQL_INCLUDES=
523
524 MOD_TCL_LIB=
525 KRB4_LIBS=
526 KRB5_LIBS=
527 READLINE_LIBS=
528 SASL_LIBS=
529 TERMCAP_LIBS=
530 TLS_LIBS=
531 MODULES_LIBS=
532 AUTH_LIBS=
533
534 SLAPD_SLP_LIBS=
535
536 dnl ================================================================
537 dnl Checks for programs
538
539 dnl AC_PROG_INSTALL
540
541 AC_DEFINE(HAVE_MKVERSION, 1, [define this if you have mkversion])
542
543 dnl ----------------------------------------------------------------
544 dnl
545 dnl Determine which C translator to use
546 dnl
547
548 dnl AIX Thread requires we use cc_r or xlc_r.
549 dnl But only do this IF AIX and CC is not set
550 dnl and threads are auto|yes|posix.
551 dnl
552 dnl If we find cc_r|xlc_r, force pthreads and assume
553 dnl             pthread_create is in $LIBS (ie: don't bring in
554 dnl             any additional thread libraries)
555 dnl If we do not find cc_r|xlc_r, disable threads
556
557 ol_aix_threads=no
558 case "$target" in
559 *-*-aix*) dnl all AIX is not a good idea.
560         if test -z "$CC" ; then
561                 case "$ol_with_threads" in
562                 auto | yes |  posix) ol_aix_threads=yes ;;
563                 esac
564         fi
565 ;;
566 esac
567
568 if test $ol_aix_threads = yes ; then
569         if test -z "${CC}" ; then
570                 AC_CHECK_PROGS(CC,cc_r xlc_r cc)
571
572                 if test "$CC" = cc ; then
573                         dnl no CC! don't allow --with-threads
574                         if test $ol_with_threads != auto ; then
575                                 AC_MSG_ERROR([--with-threads requires cc_r (or other suitable compiler) on AIX])
576                         else
577                                 AC_MSG_WARN([disabling threads, no cc_r on AIX])
578                         fi
579                         ol_with_threads=no
580                 fi
581         fi
582
583         if test "${CC}" = "cc_r" -o "${CC}" = "xlc_r" ; then
584                 ol_with_threads=posix
585                 ol_cv_pthread_create=yes
586         fi
587 fi
588
589 if test -z "${CC}"; then
590         AC_CHECK_PROGS(CC,cc)
591 fi
592
593 dnl The default CFLAGS is empty NOT whatever AC_PROG_CC sets.
594 dnl (for now, let autoconf sort this out)
595 dnl CFLAGS=${CFLAGS-""}
596
597 AC_CHECK_PROGS(AR,ar gar,ar)
598
599 AC_LIBTOOL_WIN32_DLL
600 AC_LIBTOOL_DLOPEN
601 AC_PROG_LIBTOOL
602
603 AC_PROG_AWK
604 OL_PROG_LN_H
605 AC_PROG_LN_S
606
607 if test "$LN_H" = "cp" -a "$LN_S" = "ln"; then
608         LN_S="$LN_H"
609 fi
610
611 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
612         $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
613 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
614 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
615
616 dnl ----------------------------------------------------------------
617 dnl Perl
618 ol_link_perl=no
619 if test $ol_enable_perl != no ; then
620         AC_PATH_PROG(PERLBIN, perl, /usr/bin/perl)
621
622         if test "no$PERLBIN" = "no" ; then
623                 if test $ol_enable_perl = yes ; then
624                         AC_MSG_ERROR([could not locate perl])
625                 fi
626
627         else
628                 PERL_CPPFLAGS="`$PERLBIN -MExtUtils::Embed -e ccopts`"
629                 if test x"$ol_with_perl_module" = "xstatic" ; then
630                         SLAPD_PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e s/-lc//`"
631                 else
632                         MOD_PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e s/-lc//`"
633                 fi
634                 dnl should check perl version
635                 ol_link_perl=yes
636         fi
637 fi
638
639 AC_PROG_CPP
640
641 dnl ----------------------------------------------------------------
642 dnl Cross compiling checks
643 if test $cross_compiling = yes -a $ol_enable_x_compile = yes; then
644         AC_MSG_WARN([cross compiling....  some functionality will be removed.])
645
646 elif test $cross_compiling = no -a $ol_enable_x_compile = yes; then
647         AC_MSG_WARN([programs compiled here do run here...])
648         AC_MSG_ERROR([  if not cross compiling, use --disable-x-compile.])
649
650 elif test $cross_compiling = yes -a $ol_enable_x_compile = no; then
651         AC_MSG_WARN([programs compiled here do not run here...])
652         AC_MSG_ERROR([  if cross compiling,  add --enable-x-compile.])
653 fi
654
655 dnl ----------------------------------------------------------------
656 dnl Checks for UNIX Variants
657 AC_AIX
658 AC_ISC_POSIX
659 AC_MINIX
660
661 dnl ----------------------------------------------------------------
662 dnl Checks for system services
663 AC_CYGWIN
664 AC_MINGW32
665 AC_EXEEXT
666 AC_OBJEXT
667
668 AC_DEFINE_UNQUOTED( EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
669
670 dnl ----------------------------------------------------------------
671 dnl BeOS requires -lbe -lroot -lnet
672 AC_CHECK_LIB(be, be_app, [LIBS="$LIBS -lbe -lroot -lnet"], :, [-lroot -lnet])
673
674 dnl ----------------------------------------------------------------
675 dnl OpenLDAP requires STDC features
676 AM_PROG_CC_STDC
677 if test "X${am_cv_prog_cc_stdc}" = "Xno" ; then
678         AC_MSG_ERROR([OpenLDAP requires compiler to support STDC constructs.])
679 fi
680
681 dnl ----------------------------------------------------------------
682 dnl Check cc depend flags
683 OL_MKDEPEND
684 if test "${ol_cv_mkdep}" = no ; then
685         # this will soon become an error
686         AC_MSG_WARN([do not know how to generate dependencies])
687 fi
688
689 dnl ----------------------------------------------------------------
690 dnl Check for AIX security library
691 AC_CHECK_LIB(s, afopen, [
692         AUTH_LIBS=-ls
693         AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
694 ])
695
696
697 dnl ----------------------------------------------------------------
698 dnl Check for module support
699 ol_link_modules=no
700 if test $ol_enable_modules != no ; then
701         AC_CHECK_HEADERS(ltdl.h)
702
703         if test $ac_cv_header_ltdl_h = no ; then
704                 AC_MSG_ERROR([could not locate libtool ltdl.h])
705         fi
706
707         AC_CHECK_LIB(ltdl, lt_dlinit, [
708             MODULES_LIBS=-lltdl
709             AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
710         ])
711
712         if test "$ac_cv_lib_ltdl_lt_dlinit" = no ; then
713                 AC_MSG_ERROR([could not locate libtool -lltdl])
714         fi
715         ol_link_modules=yes
716 else
717         ol_with_bdb_module=static
718         ol_with_dnssrv_module=static
719         ol_with_ldap_module=static
720         ol_with_ldbm_module=static
721         ol_with_meta_module=static
722         ol_with_monitor_module=static
723         ol_with_passwd_module=static
724         ol_with_perl_module=static
725         ol_with_shell_module=static
726         ol_with_tcl_module=static
727         ol_with_sql_module=static
728 fi
729
730 dnl ----------------------------------------------------------------
731 dnl Checks for header files.
732 OL_HEADER_STDC
733
734 if test $ol_cv_header_stdc != yes; then
735         AC_MSG_WARN([could not locate Standard C compliant headers])
736 fi
737
738 AC_HEADER_DIRENT
739 AC_HEADER_SYS_WAIT
740 AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
741 if test $am_cv_sys_posix_termios = yes ; then
742         AC_DEFINE(HAVE_POSIX_TERMIOS,1,
743                 [define if you have POSIX termios])
744 fi
745
746 AC_CHECK_HEADERS(       \
747         arpa/inet.h             \
748         arpa/nameser.h  \
749         assert.h                \
750         conio.h                 \
751         crypt.h                 \
752         direct.h                \
753         errno.h                 \
754         fcntl.h                 \
755         filio.h                 \
756         getopt.h                \
757         grp.h                   \
758         io.h                    \
759         libutil.h               \
760         limits.h                \
761         locale.h                \
762         netinet/tcp.h   \
763         malloc.h                \
764         memory.h                \
765         psap.h                  \
766         pwd.h                   \
767         process.h               \
768         resolv.h                \
769         sgtty.h                 \
770         shadow.h                \
771         stddef.h                \
772         string.h                \
773         strings.h               \
774         sysexits.h              \
775         sys/file.h              \
776         sys/filio.h             \
777         sys/errno.h             \
778         sys/ioctl.h             \
779         sys/param.h             \
780         sys/queue.h             \
781         sys/resource.h  \
782         sys/select.h    \
783         sys/socket.h    \
784         sys/syslog.h    \
785         sys/time.h              \
786         sys/types.h             \
787         syslog.h                \
788         termios.h               \
789         unistd.h                \
790         winsock.h               \
791         winsock2.h              \
792 )
793
794
795 dnl ----------------------------------------------------------------
796 dnl Checks for libraries
797
798 AC_CHECK_FUNC(dlopen, :, [AC_CHECK_LIB(dl, dlopen)])
799
800 dnl HP-UX requires -lV3
801 AC_CHECK_LIB(V3, sigset)
802
803 dnl The following is INTENTIONALLY scripted out because shell does not
804 dnl support variable names with the '@' character, which is what
805 dnl autoconf would try to generate if one merely used AC_SEARCH_LIBS
806 AC_MSG_CHECKING(for winsock)
807 save_LIBS="$LIBS"
808 for curlib in ws2_32 wsock32; do
809         LIBS="$LIBS -l$curlib"
810         AC_TRY_LINK([
811                         char socket@12();
812                         char select@20();
813                         char closesocket@4();
814                         char gethostname@8();
815                     ],
816                     [
817                         socket@12();
818                         select@20();
819                         closesocket@4();
820                         gethostname@8();
821                     ],
822                     have_winsock=yes, have_winsock=no)
823
824         if test $have_winsock = yes; then
825                 AC_DEFINE(HAVE_WINSOCK, 1, [define if you have winsock])
826                 ac_cv_func_socket=yes
827                 ac_cv_func_select=yes
828                 ac_cv_func_closesocket=yes
829                 ac_cv_func_gethostname=yes
830                 if test $curlib = ws2_32; then
831                         have_winsock=winsock2
832                         AC_DEFINE(HAVE_WINSOCK2, 1,
833                                   [define if you have winsock2])
834                 fi
835                 break
836         fi
837         LIBS="$save_LIBS"
838 done
839 AC_MSG_RESULT($have_winsock)
840
841 dnl Find socket()
842 dnl Likely combinations:
843 dnl             -lsocket [ -lnsl_s | -lnsl ]
844 dnl             -linet
845
846 AC_CHECK_FUNC(socket, :, [      
847 dnl hopefully we won't include too many libraries
848         AC_CHECK_LIB(socket, main)
849         AC_CHECK_LIB(net, main)
850         AC_CHECK_LIB(nsl_s, main)
851         AC_CHECK_LIB(nsl, main)
852         AC_CHECK_LIB(inet, socket)
853         AC_CHECK_LIB(gen, main)
854 ])
855
856 dnl require select
857 AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
858
859 if test "${ac_cv_header_winsock_h}" != yes; then
860     dnl Select arg types
861     dnl (if this detection becomes permenent, it and the select() detection
862     dnl should be done before the yielding select test) 
863     AC_FUNC_SELECT_ARGTYPES
864 fi
865
866 dnl check to see if system call automatically restart
867 dnl AC_SYS_RESTARTABLE_SYSCALLS
868
869 dnl ----------------------------------------------------------------
870 dnl require POSIX regex
871 AC_CHECK_HEADERS( regex.h )
872 if test "$ac_cv_header_regex_h" != yes ; then
873         AC_MSG_ERROR([POSIX regex.h required.])
874 fi
875 AC_SEARCH_LIBS(regfree, [regex gnuregex],
876                :, AC_MSG_ERROR([POSIX regex required.]))
877
878 OL_POSIX_REGEX
879 if test "$ol_cv_c_posix_regex" = no ; then
880         AC_MSG_ERROR([broken POSIX regex!])
881 fi
882
883 dnl ----------------------------------------------------------------
884 dnl Check for resolver routines
885 dnl       need to check for both res_query and __res_query
886 dnl   need to check -lc, -lbind, and -lresolv
887 ol_link_dnssrv=no
888 AC_CHECK_FUNC(res_query,:)
889 if test $ac_cv_func_res_query = no ; then 
890         AC_CHECK_FUNC(__res_query,:)
891         ac_cv_func_res_query=$ac_cv_func___res_query
892 fi
893
894 if test $ac_cv_func_res_query = no ; then 
895         AC_CHECK_LIB(bind, res_query)
896         ac_cv_func_res_query=$ac_cv_lib_bind_res_query
897 fi
898
899 if test $ac_cv_func_res_query = no ; then 
900         AC_CHECK_LIB(bind, __res_query)
901         ac_cv_func_res_query=$ac_cv_lib_bind___res_query
902 fi
903
904 if test $ac_cv_func_res_query = no ; then 
905         AC_CHECK_LIB(resolv, res_query)
906         ac_cv_func_res_query=$ac_cv_lib_resolv_res_query
907 fi
908
909 if test $ac_cv_func_res_query = no ; then 
910         AC_CHECK_LIB(resolv, __res_query)
911         ac_cv_func_res_query=$ac_cv_lib_resolv___res_query
912 fi
913
914 if test "$ac_cv_func_res_query" = yes ; then
915         AC_DEFINE(HAVE_RES_QUERY,1,
916                 [define if you have res_query()])
917
918         if test $ol_enable_dnssrv != no ; then
919                 ol_link_dnssrv=yes
920         fi
921 fi
922
923 if test "$ol_enable_dnssrv" = yes -a "$ol_link_dnssrv" = no ; then
924         AC_MSG_ERROR([DNSSRV requires res_query()])
925 fi
926
927 dnl ----------------------------------------------------------------
928 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
929 dnl PF_LOCAL may use getaddrinfo in available
930 AC_CHECK_FUNCS( getaddrinfo inet_ntop )
931
932 ol_link_ipv6=no
933 if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
934         if test $ol_enable_ipv6 = yes ; then
935                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
936         fi
937 else
938         AC_CHECK_FUNCS( gai_strerror )
939
940         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
941                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
942 #                       include <netinet/in.h>
943 #                       ifdef INET6_ADDRSTRLEN
944                                 __has_inet6_addrstrlen__;
945 #                       endif
946                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
947
948         if test $ol_cv_inet6_addrstrlen = yes ; then
949                 ol_link_ipv6=yes
950         elif test $ol_enable_ipv6 = yes ; then
951                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
952         fi
953 fi
954
955 if test $ol_enable_local != no ; then
956         AC_CHECK_HEADERS( sys/un.h )
957
958         if test $ol_enable_local = auto ; then
959                 ol_enable_local=$ac_cv_header_sys_un_h
960         elif test $ac_cv_header_sys_un_h = no ; then
961                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
962         fi
963 fi
964
965 dnl ----------------------------------------------------------------
966 dnl Kerberos
967 ol_link_kbind=no
968 ol_link_kpasswd=no
969 ol_link_krb5=no
970 ol_link_krb4=no
971
972 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
973         -o $ol_with_kerberos = k5 -o $ol_with_kerberos = k5only \
974         -o $ol_with_kerberos = k425 ; then
975
976         AC_CHECK_HEADERS(krb5.h)
977
978         if test $ac_cv_header_krb5_h = yes ; then
979                 dnl lazy check for Heimdal Kerberos
980                 AC_CHECK_HEADERS(heim_err.h)
981                 if test $ac_cv_header_heim_err_h = yes ; then
982                         krb5_impl=heimdal
983                 else
984                         krb5_impl=mit
985                 fi
986
987                 if test $krb5_impl = mit; then
988                         AC_CHECK_LIB(k5crypto, main,
989                                 [krb5crypto=k5crypto],
990                                 [krb5crypto=crypto])
991
992                         AC_CHECK_LIB(krb5, main,
993                                 [have_krb5=yes
994                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
995                                 [have_krb5=no],
996                                 [-l$krb5crypto -lcom_err])
997
998                 elif test $krb5_impl = heimdal; then
999                         AC_CHECK_LIB(krb5, main,
1000                                 [have_krb5=yes
1001                                 KRB5_LIBS="-lkrb5 -ldes -lasn1 -lroken -lcom_err"],
1002                                 [have_krb5=no],
1003                                 [-ldes -lasn1 -lroken -lcom_err])
1004
1005                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
1006                                 [define if you have HEIMDAL Kerberos])
1007
1008                 else
1009                         have_krb5=no
1010                         AC_MSG_WARN([Unrecongized Kerberos5 Implementation])
1011                 fi
1012
1013                 if test $have_krb5 = yes ; then
1014                         ol_link_krb5=yes
1015
1016                         AC_DEFINE(HAVE_KRB5, 1,
1017                                 [define if you have Kerberos V])
1018
1019                         if test $ol_enable_kpasswd != no ; then
1020                                 ol_link_kpasswd=yes;
1021                         fi
1022
1023                         if test $ol_with_kerberos = k5only ; then
1024                                 ol_with_kerberos=found
1025                         fi
1026
1027                 elif test $ol_with_kerberos != auto ; then
1028                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1029                 fi
1030
1031         fi
1032 fi
1033
1034 if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
1035         $ol_with_kerberos = auto -o $ol_with_kerberos = k425 \) ; then
1036
1037         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1038
1039         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1040                 if test $krb5_impl = mit; then
1041                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1042                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1043                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1044
1045                 elif test $krb5_impl = heimdal; then
1046                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1047                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1048                                 [-lkrb5 -ldes -lasn1 -lroken -lcom_err])
1049
1050                 else
1051                         have_425=no
1052                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1053                 fi
1054
1055                 if test $have_k425 = yes ; then
1056                         ol_with_kerberos=found
1057                         ol_link_krb4=yes
1058
1059                         AC_DEFINE(HAVE_KRB425, 1,
1060                                 [define if you have Kerberos V with IV support])
1061                         AC_DEFINE(HAVE_KRB4, 1,
1062                                 [define if you have Kerberos IV])
1063
1064                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1065                                 [ol_cv_var_des_debug], [
1066                                 dnl save the flags
1067                                 save_LIBS="$LIBS"
1068                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1069                                 AC_TRY_LINK([
1070 #include <kerberosIV/krb.h>
1071 #include <kerberosIV/des.h>
1072 extern int des_debug;
1073 ],[
1074 des_debug = 1;
1075 ],                              ol_cv_var_des_debug=yes, ol_cv_var_des_debug=no)
1076                                 dnl restore the LIBS
1077                                 LIBS="$save_LIBS"
1078                         ])
1079
1080                         if test $ol_cv_var_des_debug = yes ; then
1081                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1082                                         [define if you have Kerberos des_debug])
1083                         fi
1084
1085                         LIBS="$save_LIBS"
1086                 fi
1087         fi
1088 fi
1089
1090 if test $ol_link_krb5 = yes ; then
1091         ol_with_kerberos=found
1092 fi
1093
1094 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1095         -o $ol_with_kerberos = k4 -o $ol_with_kerberos = kth ; then
1096
1097         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1098
1099         if test $ac_cv_header_krb_h = yes ; then
1100                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1101
1102                 if test $have_k4 = yes ; then
1103                         ol_with_kerberos=found
1104                         ol_link_krb4=yes
1105
1106                         AC_DEFINE(HAVE_KRB4, 1,
1107                                 [define if you have Kerberos IV])
1108
1109                         KRB4_LIBS="-lkrb -ldes"
1110
1111                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1112                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1113                                         [define if you have Kth Kerberos])
1114                         fi
1115                 fi
1116         fi
1117 fi
1118
1119 if test $ol_link_krb4 = yes -a $ol_enable_kpasswd != no ; then
1120         ol_link_kpasswd=yes
1121 fi
1122
1123 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
1124         ol_link_kbind=yes
1125
1126 elif test $ol_enable_kbind = yes ; then
1127         AC_MSG_ERROR([Kerberos IV detection failed])
1128 fi
1129
1130 if test $ol_link_krb4 = yes -o $ol_link_krb5 = yes ; then
1131         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1132
1133 elif test $ol_with_kerberos != auto -a $ol_with_kerberos != no ; then
1134         AC_MSG_ERROR([Kerberos detection failed])
1135 fi
1136
1137 dnl ----------------------------------------------------------------
1138 dnl TLS/SSL
1139 ol_link_tls=no
1140 if test $ol_with_tls != no ; then
1141         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1142         
1143         if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
1144                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1145                         [have_ssleay=yes
1146                         need_rsaref=no],
1147                         [have_ssleay=no],
1148                         [-lcrypto])
1149                         
1150                 if test $have_ssleay = no ; then
1151                         AC_CHECK_LIB(ssl, SSL_library_init,
1152                                 [have_ssleay=yes
1153                                 need_rsaref=no], [have_ssleay=no],
1154                                 [-lcrypto])
1155                 fi
1156
1157                 if test $have_ssleay = no ; then
1158                         AC_CHECK_LIB(ssl, ssl3_accept, 
1159                                 [have_ssleay=yes
1160                                 need_rsaref=yes], [have_ssleay=no],
1161                                 [-lcrypto -lRSAglue -lrsaref])
1162                 fi
1163
1164                 if test $have_ssleay = yes ; then
1165                         ol_with_tls=found
1166                         ol_link_tls=yes
1167
1168                         AC_DEFINE(HAVE_SSLEAY, 1, 
1169                                 [define if you have SSLeay or OpenSSL])
1170
1171                         if test $need_rsaref = yes; then
1172                                 AC_DEFINE(HAVE_RSAREF, 1, 
1173                                         [define if you have RSAref])
1174
1175                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1176                         else
1177                                 TLS_LIBS="-lssl -lcrypto"
1178                         fi
1179                 fi
1180         fi
1181
1182 else
1183         AC_WARN([TLS privacy protection not supported!])
1184 fi
1185
1186 if test $ol_link_tls = yes ; then
1187         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1188
1189 elif test $ol_with_tls = auto ; then
1190         AC_WARN([Could not locate TLS/SSL package])
1191         AC_WARN([TLS privacy protection not supported!])
1192
1193 elif test $ol_with_tls != no ; then
1194         AC_ERROR([Could not locate TLS/SSL package])
1195 fi
1196
1197 dnl ----------------------------------------------------------------
1198 dnl LAN Manger password checking requires DES from OpenSSL
1199 if test $ol_enable_lmpasswd != no; then
1200         if test $ol_link_tls != yes ; then
1201                 AC_ERROR([LAN Manager passwords require OpenSSL])
1202         fi
1203
1204         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1205 fi
1206
1207 dnl ----------------------------------------------------------------
1208 dnl Tests for reentrant functions necessary to build a
1209 dnl thread_safe -lldap.
1210 AC_CHECK_FUNCS(         \
1211         ctime_r                 \
1212         gethostbyname_r gethostbyaddr_r \
1213 )
1214
1215 if test "$ac_cv_func_ctime_r" = no ; then
1216         ol_cv_func_ctime_r_nargs=0
1217 else
1218         OL_FUNC_CTIME_R_NARGS
1219 dnl     OL_FUNC_CTIME_R_TYPE
1220 fi
1221
1222 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1223         OL_FUNC_GETHOSTBYNAME_R_NARGS
1224 else
1225         ol_cv_func_gethostbyname_r_nargs=0
1226 fi
1227  
1228 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1229         OL_FUNC_GETHOSTBYADDR_R_NARGS
1230 else
1231         ol_cv_func_gethostbyaddr_r_nargs=0
1232 fi
1233
1234 if test "$ac_cv_func_ctime_r" = yes \
1235         -a "$ol_cv_func_ctime_r_nargs" -ge 2 \
1236         -a "$ol_cv_func_ctime_r_nargs" -le 3 \
1237         -a "$ac_cv_func_gethostbyname_r" = yes \
1238         -a "$ol_cv_func_gethostbyname_r_nargs" -ge 5 \
1239         -a "$ol_cv_func_gethostbyname_r_nargs" -le 6 \
1240         -a "$ac_cv_func_gethostbyaddr_r" = yes \
1241         -a "$ol_cv_func_gethostbyaddr_r_nargs" -ge 5 \
1242         -a "$ol_cv_func_gethostbyaddr_r_nargs" -le 6 \
1243         ; then
1244  
1245         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT,1)
1246 fi
1247
1248 dnl ----------------------------------------------------------------
1249 dnl Threads?
1250 ol_link_threads=no
1251
1252 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1253         -o $ol_with_threads = nt ; then
1254
1255         OL_NT_THREADS
1256
1257         if test "$ol_cv_nt_threads" = yes ; then
1258         ol_link_threads=nt
1259         ol_with_threads=found
1260         ol_with_yielding_select=yes
1261
1262                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1263                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1264         fi
1265
1266         if test $ol_with_threads = nt ; then
1267                 AC_MSG_ERROR([could not locate NT Threads])
1268         fi
1269 fi
1270
1271 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1272         -o $ol_with_threads = posix ; then
1273
1274         AC_CHECK_HEADERS(pthread.h)
1275
1276         if test $ac_cv_header_pthread_h = yes ; then
1277                 OL_POSIX_THREAD_VERSION
1278
1279                 if test $ol_cv_pthread_version = final ; then
1280                         AC_DEFINE(HAVE_PTHREADS_FINAL,1,
1281                                 [define if pthreads API compatible with final spec])
1282                 elif test $ol_cv_pthread_version = draft4 ; then
1283                         AC_DEFINE(HAVE_PTHREADS_D4,1,
1284                                 [define if pthreads API compatible with draft4 spec])
1285                 else
1286                         AC_MSG_ERROR([unknown pthread version])
1287                 fi
1288
1289                 # consider threads found
1290                 ol_with_threads=found
1291
1292                 OL_HEADER_LINUX_THREADS
1293                 OL_HEADER_GNU_PTH_PTHREAD_H
1294
1295                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1296                         AC_CHECK_HEADERS(sched.h)
1297                 fi
1298
1299                 dnl Now the hard part, how to link?
1300                 dnl
1301                 dnl currently supported checks:
1302                 dnl
1303                 dnl Check for no flags 
1304                 dnl     pthread_create() in $LIBS
1305                 dnl
1306                 dnl Check special pthread (final) flags
1307                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1308                 dnl     pthread_create() with -kthread (FreeBSD)
1309                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1310                 dnl     pthread_create() with -pthreads (?)
1311                 dnl     pthread_create() with -mthreads (AIX)
1312                 dnl     pthread_create() with -thread (?)
1313                 dnl
1314                 dnl Check pthread (final) libraries
1315                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1316                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1317                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1318                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1319                 dnl     pthread_create() in -lpthread (many)
1320                 dnl     pthread_create() in -lc_r (FreeBSD)
1321                 dnl
1322                 dnl Check pthread (draft4) flags (depreciated)
1323                 dnl     pthread_create() with -threads (OSF/1)
1324                 dnl
1325                 dnl Check pthread (draft4) libraries (depreciated)
1326                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1327                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1328                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1329                 dnl     pthread_create() in -lpthreads (many)
1330                 dnl
1331
1332                 dnl pthread_create in $LIBS
1333                 AC_CACHE_CHECK([for pthread_create in default libraries],
1334                         ol_cv_pthread_create,[
1335                 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1336                         [ol_cv_pthread_create=yes],
1337                         [ol_cv_pthread_create=no],
1338                         [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1339                                 [ol_cv_pthread_create=yes],
1340                                 [ol_cv_pthread_create=no])])])
1341
1342                 if test $ol_cv_pthread_create != no ; then
1343                         ol_link_threads=posix
1344                         ol_link_pthreads=""
1345                 fi
1346                 
1347 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1348                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1349                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1350                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1351                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1352                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1353
1354                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1355                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1356                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1357                         [ol_cv_pthread_lpthread_lmach_lexc])
1358 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1359 dnl                     [ol_cv_pthread_lpthread_lexc])
1360
1361                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1362                         [ol_cv_pthread_lib_lpthread_woff])
1363
1364                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1365                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1366
1367                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1368
1369                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1370                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1371                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1372                         [ol_cv_pthread_lpthreads_lmach_lexc])
1373                 OL_PTHREAD_TRY([-lpthreads -lexc],
1374                         [ol_cv_pthread_lpthreads_lexc])
1375
1376                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1377
1378                 if test $ol_link_threads != no ; then
1379                         AC_DEFINE(HAVE_PTHREADS,1,
1380                                 [define if you have POSIX Threads])
1381
1382                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1383
1384                         dnl save flags
1385                         save_CPPFLAGS="$CPPFLAGS"
1386                         save_LIBS="$LIBS"
1387                         LIBS="$LTHREAD_LIBS $LIBS"
1388
1389                         dnl All POSIX Thread (final) implementations should have
1390                         dnl sched_yield instead of pthread yield.
1391                         dnl check for both
1392                         AC_CHECK_FUNCS(sched_yield pthread_yield)
1393
1394                         if test $ac_cv_func_sched_yield = no -a \
1395                                 $ac_cv_func_pthread_yield = no ; then
1396                                 dnl Digital UNIX has sched_yield() in -lrt
1397                                 AC_CHECK_LIB(rt, sched_yield,
1398                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1399                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1400                                                 [Define if you have the sched_yield function.])
1401                                         ac_cv_func_sched_yield=yes],
1402                                         [ac_cv_func_sched_yield=no])
1403                         fi
1404                         if test $ac_cv_func_sched_yield = no -a \
1405                                 $ac_cv_func_pthread_yield = no ; then
1406                                 dnl Solaris has sched_yield() stub in -lposix4
1407                                 dnl but we'll use thr_yield instead.
1408                                 AC_CHECK_FUNCS(thr_yield)
1409                         fi
1410                         if test $ac_cv_func_sched_yield = no -a \
1411                                 $ac_cv_func_pthread_yield = no -a \
1412                                 "$ac_cv_func_thr_yield" = no ; then
1413                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1414                         fi
1415
1416                         dnl Check functions for compatibility
1417                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1418
1419                         dnl Check for pthread_detach with <pthread.h> inclusion
1420                         dnl as it's symbol may have been mangled.
1421                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1422                                 [ol_cv_func_pthread_detach], [
1423                                 dnl save the flags
1424                                 AC_TRY_LINK([
1425 #include <pthread.h>
1426 #ifndef NULL
1427 #define NULL (void*)0
1428 #endif
1429 ],
1430                                         [pthread_detach(NULL);],
1431                                         [ol_cv_func_pthread_detach=yes],
1432                                         [ol_cv_func_pthread_detach=no])
1433                         ])
1434
1435                         if test $ol_cv_func_pthread_detach = no ; then
1436                                 AC_MSG_ERROR([could not locate pthread_detach()])
1437                         fi
1438
1439                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1440                                 [define if you have pthread_detach function])
1441
1442                         dnl Check for setconcurreny functions
1443                         AC_CHECK_FUNCS( \
1444                                 pthread_setconcurrency \
1445                                 pthread_getconcurrency \
1446                                 thr_setconcurrency \
1447                                 thr_getconcurrency \
1448                         )
1449
1450                         OL_SYS_LINUX_THREADS
1451                         OL_LINUX_THREADS
1452
1453                         if test $ol_cv_linux_threads = error; then
1454                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1455                         fi
1456
1457                         AC_CACHE_CHECK([if pthread_create() works],
1458                                 ol_cv_pthread_create_works,[
1459                         AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1460                                 [ol_cv_pthread_create_works=yes],
1461                                 [ol_cv_pthread_create_works=no],
1462                                 [dnl assume yes
1463                                 ol_cv_pthread_create_works=yes])])
1464
1465                         if test $ol_cv_pthread_create_works = no ; then
1466                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1467                         fi
1468
1469                         dnl Check if select causes an yield
1470                         if test $ol_with_yielding_select = auto ; then
1471                                 AC_CACHE_CHECK([if select yields when using pthreads],
1472                                         ol_cv_pthread_select_yields,[
1473                                 AC_TRY_RUN([
1474 #include <sys/types.h>
1475 #include <sys/time.h>
1476 #include <unistd.h>
1477 #include <pthread.h>
1478 #ifndef NULL
1479 #define NULL (void*) 0
1480 #endif
1481
1482 static int fildes[2];
1483
1484 static void *task(p)
1485         void *p;
1486 {
1487         int i;
1488         struct timeval tv;
1489
1490         fd_set rfds;
1491
1492         tv.tv_sec=10;
1493         tv.tv_usec=0;
1494
1495         FD_ZERO(&rfds);
1496         FD_SET(fildes[0], &rfds);
1497
1498         /* we're not interested in any fds */
1499         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1500
1501         if(i < 0) {
1502                 perror("select");
1503                 exit(10);
1504         }
1505
1506         exit(0); /* if we exit here, the select blocked the whole process */
1507 }
1508
1509 int main(argc, argv)
1510         int argc;
1511         char **argv;
1512 {
1513         pthread_t t;
1514
1515         /* create a pipe to select */
1516         if(pipe(&fildes[0])) {
1517                 perror("select");
1518                 exit(1);
1519         }
1520
1521 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1522         (void) pthread_setconcurrency(2);
1523 #else
1524 #ifdef HAVE_THR_SETCONCURRENCY
1525         /* Set Solaris LWP concurrency to 2 */
1526         thr_setconcurrency(2);
1527 #endif
1528 #endif
1529
1530 #if HAVE_PTHREADS_D4
1531         pthread_create(&t, pthread_attr_default, task, NULL);
1532 #else
1533         pthread_create(&t, NULL, task, NULL);
1534 #endif
1535
1536 #if HAVE_SCHED_YIELD
1537         sched_yield();  /* make sure task runs first */
1538 #else
1539 #ifdef HAVE_PTHREAD_YIELD
1540         pthread_yield();        /* make sure task runs first */
1541 #endif
1542 #endif
1543
1544         exit(2);
1545 }],
1546                                 [ol_cv_pthread_select_yields=no],
1547                                 [ol_cv_pthread_select_yields=yes],
1548                                 [ol_cv_pthread_select_yields=cross])])
1549
1550                                 if test $ol_cv_pthread_select_yields = cross ; then
1551                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1552                                 fi
1553
1554                                 if test $ol_cv_pthread_select_yields = yes ; then
1555                                         ol_with_yielding_select=yes
1556                                 fi
1557                         fi
1558
1559                         dnl restore flags
1560                         CPPFLAGS="$save_CPPFLAGS"
1561                         LIBS="$save_LIBS"
1562                 else
1563                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1564                 fi
1565         fi
1566
1567         if test $ol_with_threads = posix ; then
1568                 AC_MSG_ERROR([could not locate POSIX Threads])
1569         fi
1570 fi
1571
1572 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1573         -o $ol_with_threads = mach ; then
1574
1575         dnl check for Mach CThreads
1576         AC_CHECK_HEADERS(mach/cthreads.h cthread.h)
1577         if test $ac_cv_header_mach_cthreads_h = yes ; then
1578                 ol_with_threads=found
1579
1580                 dnl check for cthread support in current $LIBS
1581                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1582
1583                 if test $ol_link_threads = no ; then
1584                         dnl try -all_load
1585                         dnl this test needs work
1586                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1587                                 [ol_cv_cthread_all_load], [
1588                                 dnl save the flags
1589                                 save_LIBS="$LIBS"
1590                                 LIBS="-all_load $LIBS"
1591                                 AC_TRY_LINK([#include <mach/cthreads.h>],[
1592                                         cthread_fork((void *)0, (void *)0);
1593                                         ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no)
1594                                 dnl restore the LIBS
1595                                 LIBS="$save_LIBS"
1596                         ])
1597
1598                         if test $ol_cv_cthread_all_load = yes ; then
1599                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1600                                 ol_link_threads=mach
1601                         fi
1602                 fi
1603
1604     elif test $ac_cv_header_cthreads_h = yes ; then
1605                 dnl Hurd variant of Mach Cthreads
1606                 dnl uses <cthreads.h> and -lthreads
1607
1608                 ol_with_threads=found
1609  
1610                 dnl save the flags
1611                 save_LIBS="$LIBS"
1612                 LIBS="$LIBS -lthreads"
1613                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1614                 LIBS="$save_LIBS"
1615
1616                 if test $ol_link_threads = yes ; then
1617                         LTHREAD_LIBS="-lthreads"
1618                         ol_link_threads=mach
1619                 else
1620                         AC_MSG_ERROR([could not link with Mach CThreads])
1621                 fi
1622
1623         elif test $ol_with_threads = mach ; then
1624                 AC_MSG_ERROR([could not locate Mach CThreads])
1625         fi
1626
1627         if test $ol_link_threads = mach ; then
1628                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1629                         [define if you have Mach Cthreads])
1630         elif test $ol_with_threads = found ; then
1631                 AC_MSG_ERROR([could not link with Mach CThreads])
1632         fi
1633 fi
1634
1635 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1636         -o $ol_with_threads = pth ; then
1637
1638         AC_CHECK_HEADERS(pth.h)
1639
1640         if test $ac_cv_header_pth_h = yes ; then
1641                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1642
1643                 if test $have_pth = yes ; then
1644                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1645                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1646                         ol_link_threads=pth
1647
1648                         if test $ol_with_yielding_select = auto ; then
1649                                 ol_with_yielding_select=yes
1650                         fi
1651                 fi
1652         fi
1653 fi
1654
1655 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1656         -o $ol_with_threads = lwp ; then
1657
1658         dnl check for SunOS5 LWP
1659         AC_CHECK_HEADERS(thread.h synch.h)
1660         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
1661                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1662
1663                 if test $have_thr = yes ; then
1664                         AC_DEFINE(HAVE_THR,1,
1665                                 [if you have Solaris LWP (thr) package])
1666                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1667                         ol_link_threads=thr
1668
1669                         if test $ol_with_yielding_select = auto ; then
1670                                 ol_with_yielding_select=yes
1671                         fi
1672
1673                         dnl Check for setconcurreny functions
1674                         AC_CHECK_FUNCS( \
1675                                 thr_setconcurrency \
1676                                 thr_getconcurrency \
1677                         )
1678                 fi
1679         fi
1680
1681         dnl check for SunOS4 LWP
1682         AC_CHECK_HEADERS(lwp/lwp.h)
1683         if test $ac_cv_header_lwp_lwp_h = yes ; then
1684                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1685
1686                 if test $have_lwp = yes ; then
1687                         AC_DEFINE(HAVE_LWP,1,
1688                                 [if you have SunOS LWP package])
1689                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1690                         ol_link_threads=lwp
1691
1692                         if test $ol_with_yielding_select = auto ; then
1693                                 ol_with_yielding_select=no
1694                         fi
1695                 fi
1696         fi
1697 fi
1698
1699 if test $ol_with_yielding_select = yes ; then
1700         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1701                 [define if select implicitly yields])
1702 fi
1703
1704 if test $ol_with_threads = manual ; then
1705         dnl User thinks he can manually configure threads.
1706         ol_link_threads=yes
1707
1708         AC_MSG_WARN([thread defines and link options must be set manually])
1709
1710         AC_CHECK_HEADERS(pthread.h sched.h)
1711         AC_CHECK_FUNCS(sched_yield pthread_yield)
1712         OL_HEADER_LINUX_THREADS
1713
1714         AC_CHECK_HEADERS(mach/cthreads.h)
1715         AC_CHECK_HEADERS(lwp/lwp.h)
1716         AC_CHECK_HEADERS(thread.h synch.h)
1717 fi
1718
1719 if test $ol_link_threads != no -a $ol_link_threads != nt ; then  
1720         dnl needed to get reentrant/threadsafe versions
1721         dnl
1722         AC_DEFINE(REENTRANT,1)
1723         AC_DEFINE(_REENTRANT,1)
1724         AC_DEFINE(THREAD_SAFE,1)
1725         AC_DEFINE(_THREAD_SAFE,1)
1726         AC_DEFINE(THREADSAFE,1)
1727         AC_DEFINE(_THREADSAFE,1)
1728         AC_DEFINE(_SGI_MP_SOURCE,1)
1729
1730         dnl The errno declaration may dependent upon _REENTRANT.
1731         dnl If it does, we must link with thread support.
1732         AC_CACHE_CHECK([for thread specific errno],
1733                 [ol_cv_errno_thread_specific], [
1734                 AC_TRY_LINK([#include <errno.h>], [errno = 0;],
1735                         [ol_cv_errno_thread_specific=yes],
1736                         [ol_cv_errno_thread_specific=no])
1737         ])
1738
1739         dnl The h_errno declaration may dependent upon _REENTRANT.
1740         dnl If it does, we must link with thread support.
1741         AC_CACHE_CHECK([for thread specific h_errno],
1742                 [ol_cv_h_errno_thread_specific], [
1743                 AC_TRY_LINK([#include <netdb.h>], [h_errno = 0;],
1744                         [ol_cv_h_errno_thread_specific=yes],
1745                         [ol_cv_h_errno_thread_specific=no])
1746         ])
1747
1748         if test $ol_cv_errno_thread_specific != yes \
1749                 -o $ol_cv_h_errno_thread_specific != yes ; then
1750                 LIBS="$LTHREAD_LIBS $LIBS"
1751                 LTHREAD_LIBS=""
1752         fi
1753
1754 dnl When in thread environment, use 
1755 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) \ 
1756 dnl                     || defined( HAVE_FUNC_R )
1757 dnl                     func_r(...);
1758 dnl             #else
1759 dnl             #       if defined( HAVE_THREADS ) 
1760 dnl                             /* lock */
1761 dnl             #       endif
1762 dnl                             func(...);
1763 dnl             #       if defined( HAVE_THREADS ) 
1764 dnl                             /* unlock */
1765 dnl             #       endif
1766 dnl             #endif
1767 dnl
1768 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1769 dnl             _POSIX_REENTRANT_FUNCTIONS
1770 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1771 dnl             _POSIX_THREADSAFE_FUNCTIONS
1772 dnl
1773 dnl             and is currently defined in lthread.h
1774 dnl
1775 dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS
1776 dnl 
1777 dnl libldap/*.c should only include <lthread.h> iff
1778 dnl LDAP_R_COMPILE is defined.  ie:
1779 dnl             #ifdef LDAP_R_COMPILE
1780 dnl             #       include LDAP_R_COMPILE
1781 dnl             #endif
1782 dnl
1783 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1784 dnl specifically for compiling the threadsafe version of
1785 dnl     the ldap library (-lldap_r).
1786 dnl             
1787 dnl     dnl check for reentrant/threadsafe functions
1788 dnl     dnl
1789 dnl     dnl note: these should only be used when linking
1790 dnl     dnl       with $LTHREAD_LIBS
1791 dnl     dnl
1792 dnl     save_CPPFLAGS="$CPPFLAGS"
1793 dnl     save_LIBS="$LIBS"
1794 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1795 dnl     AC_CHECK_FUNCS( \
1796 dnl             gmtime_r \
1797 dnl             gethostbyaddr_r gethostbyname_r \
1798 dnl             feof_unlocked unlocked_feof \
1799 dnl             putc_unlocked unlocked_putc \
1800 dnl             flockfile ftrylockfile \
1801 dnl     )
1802 dnl     CPPFLAGS="$save_CPPFLAGS"
1803 dnl     LIBS="$save_LIBS"
1804 fi  
1805
1806 if test $ol_link_threads = no ; then
1807         if test $ol_with_threads = yes ; then
1808                 AC_MSG_ERROR([no suitable thread support])
1809         fi
1810
1811         if test $ol_with_threads = auto ; then
1812                 AC_MSG_WARN([no suitable thread support, disabling threads])
1813                 ol_with_threads=no
1814         fi
1815
1816         AC_DEFINE(NO_THREADS,1,
1817                 [define if you have (or want) no threads])
1818         LTHREAD_LIBS=""
1819 fi
1820
1821 if test $ol_link_threads != no ; then
1822         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
1823 fi
1824
1825 dnl ----------------------------------------------------------------
1826 ol_link_ldbm=no 
1827
1828 if test $ol_with_ldbm_api = auto \
1829         -o $ol_with_ldbm_api = berkeley \
1830         -o $ol_with_ldbm_api = bcompat ; then
1831
1832         if test $ol_with_ldbm_api = bcompat; then \
1833                 OL_BERKELEY_COMPAT_DB
1834         else
1835                 OL_BERKELEY_DB
1836         fi
1837
1838         if test $ol_cv_berkeley_db != no ; then
1839                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1840                         [define this if Berkeley DB is available])
1841
1842                 ol_link_ldbm=berkeley
1843                 ol_with_ldbm_api=berkeley
1844
1845                 if test $ol_with_ldbm_type = hash ; then
1846                         AC_DEFINE(LDBM_USE_DBHASH,1,
1847                                 [define this to use DBHASH w/ LDBM backend])
1848                 else
1849                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1850                                 [define this to use DBBTREE w/ LDBM backend])
1851                 fi
1852
1853                 dnl $ol_cv_lib_db should be yes or -ldb
1854                 dnl (it could be no, but that would be an error
1855                 if test $ol_cv_lib_db != yes ; then
1856                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1857                 fi
1858         fi
1859 fi
1860
1861 if test $ol_enable_bdb = yes -a $ol_link_ldbm != berkeley ; then
1862         AC_MSG_ERROR(BerkeleyDB not availabl)
1863 elif test $ol_enable_bdb != no -a $ol_link_ldbm != no ; then
1864         ol_enable_bdb=yes
1865 fi
1866
1867 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1868         AC_MSG_WARN(Could not find LDBM with BTREE support)
1869         ol_with_ldbm_api=none
1870 fi
1871
1872 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1873         OL_MDBM
1874
1875         if test $ol_cv_mdbm = yes ; then
1876                 ol_link_ldbm=mdbm
1877                 ol_with_ldbm_api=mdbm
1878                 if test $ol_cv_lib_mdbm != yes ; then
1879                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1880                 fi
1881         fi
1882 fi
1883
1884 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
1885         OL_GDBM
1886
1887         if test $ol_cv_gdbm = yes ; then
1888                 ol_link_ldbm=gdbm
1889                 ol_with_ldbm_api=gdbm
1890
1891                 if test $ol_cv_lib_gdbm != yes ; then
1892                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
1893                 fi
1894         fi
1895 fi
1896
1897 if test $ol_with_ldbm_api = ndbm ; then
1898         OL_NDBM
1899
1900         if test $ol_cv_ndbm = yes ; then
1901                 ol_link_ldbm=ndbm
1902                 ol_with_ldbm_api=ndbm
1903
1904                 if test $ol_cv_lib_ndbm != yes ; then
1905                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
1906                 fi
1907         fi
1908 fi
1909
1910 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
1911         AC_MSG_WARN(could not find suitable LDBM backend)
1912         if test $ol_enable_ldbm = yes ; then
1913                 AC_MSG_ERROR(select appropriate LDBM options or disable)
1914         fi
1915
1916         AC_MSG_WARN(disabling LDBM)
1917         ol_enable_ldbm=no
1918 fi
1919
1920 dnl ----------------------------------------------------------------
1921 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
1922         BUILD_LIBS_DYNAMIC=shared
1923         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
1924 else
1925         BUILD_LIBS_DYNAMIC=static
1926 fi
1927
1928 dnl ----------------------------------------------------------------
1929 if test $ol_enable_wrappers != no ; then
1930         AC_CHECK_HEADERS(tcpd.h)
1931
1932         if test $ac_cv_header_tcpd_h != yes ; then
1933                 have_wrappers=no
1934         else
1935                 AC_TRY_COMPILE([
1936 int allow_severity = 0;
1937 int deny_severity  = 0;
1938                 ],[hosts_access()],[have_wrappers=yes],[have_wrappers=no])
1939         fi
1940
1941         if test $have_wrappers = yes ; then
1942                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1943                 WRAP_LIBS="-lwrap"
1944
1945                 dnl We add another check for -lnsl since some libwrap's
1946                 dnl need it, but it isn't always included from above
1947                 AC_CHECK_LIB(nsl, main)
1948         else
1949                 AC_MSG_WARN(could not find -lwrap)
1950                 if test $ol_enable_wrappers = yes ; then
1951                         AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
1952                 fi
1953
1954                 AC_MSG_WARN(disabling wrappers support)
1955                 ol_enable_wrappers=no
1956                 WRAP_LIBS=""
1957         fi
1958 fi
1959
1960 dnl ----------------------------------------------------------------
1961 if test $ol_enable_syslog != no ; then
1962         AC_CHECK_FUNC(openlog)
1963         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
1964                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1965         fi
1966         ol_enable_syslog=$ac_cv_func_openlog
1967 fi
1968
1969 dnl ----------------------------------------------------------------
1970 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
1971 dnl if test $ol_enable_dmalloc != no ; then
1972 dnl     AC_CHECK_HEADERS(dmalloc.h)
1973 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
1974 dnl fi
1975
1976 dnl ----------------------------------------------------------------
1977 dnl SQL
1978 ol_link_sql=no
1979 if test $ol_enable_sql != no ; then
1980         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
1981         if test $have_iodbc = yes ; then
1982                 ol_link_sql="-liodbc"
1983         else
1984                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
1985                 if test $have_odbc = yes ; then
1986                         ol_link_sql="-lodbc"
1987                 fi
1988         fi
1989
1990         if test $ol_link_sql != no ; then
1991                 SLAPD_SQL_LIBS="$ol_link_sql"
1992
1993         elif test $ol_enable_sql != auto ; then
1994                 AC_MSG_ERROR([could not locate suitable ODBC library])
1995         fi
1996 fi
1997
1998 dnl ----------------------------------------------------------------
1999 dnl TCL
2000 if test $ol_enable_tcl != no ; then
2001         AC_CHECK_HEADERS(tcl.h)
2002
2003         if test $ac_cv_header_tcl_h != yes ; then
2004                 have_tcl=no
2005         else
2006                 for lib in tcl tcl7.6 tcl8.0 tcl8.2 ; do
2007                         AC_CHECK_LIB($lib,main,
2008                           [have_tcl=yes
2009                            if test x"$ol_with_tcl_module" = "xstatic" ; then
2010                                SLAPD_LIBS="$SLAPD_LIBS -l${lib}"
2011                            else
2012                                MOD_TCL_LIB="-l${lib}"
2013                            fi;break],[have_tcl=no])
2014                 done
2015         fi
2016
2017         if test $have_tcl != yes ; then
2018                 AC_MSG_WARN([could not find -ltcl])
2019                 if test $ol_enable_tcl = yes ; then
2020                         AC_MSG_ERROR([could not find tcl, select appropriate options or disable])
2021                 fi
2022
2023                 ol_enable_tcl=no
2024         fi
2025 fi
2026
2027 dnl ----------------------------------------------------------------
2028 dnl ud needs termcap (should insert check here)
2029 ol_link_termcap=no
2030 AC_CHECK_HEADERS(termcap.h ncurses.h)
2031
2032 if test $ol_link_termcap = no ; then
2033         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
2034         if test $have_termcap = yes ; then
2035                 AC_DEFINE(HAVE_TERMCAP, 1, [define if you have -ltermcap])
2036                 ol_link_termcap=yes
2037                 TERMCAP_LIBS=-ltermcap
2038         fi
2039 fi
2040
2041 if test $ol_link_termcap = no ; then
2042         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
2043         if test $have_ncurses = yes ; then
2044                 AC_DEFINE(HAVE_NCURSES, 1, [define if you have -lncurses])
2045                 ol_link_termcap=yes
2046                 TERMCAP_LIBS=-lncurses
2047         fi
2048 fi
2049
2050 if test $ol_link_termcap = no ; then
2051         AC_DEFINE(NO_TERMCAP,1, [define if you have no termcap support])
2052         TERMCAP_LIBS=
2053 fi
2054
2055 dnl ----------------------------------------------------------------
2056 dnl
2057 dnl Check for Cyrus SASL
2058 dnl
2059 ol_link_sasl=no
2060 ol_link_spasswd=no
2061 if test $ol_with_cyrus_sasl != no ; then
2062         AC_CHECK_HEADERS(sasl.h)
2063
2064         if test $ac_cv_header_sasl_h = yes ; then
2065                 AC_CHECK_LIB(sasl, sasl_client_init,
2066                         [have_cyrus_sasl=yes], [have_cyrus_sasl=no])
2067
2068                 if test $have_cyrus_sasl != no ; then
2069                         SASL_LIBS="-lsasl"
2070                         AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2071                         ol_link_sasl=yes
2072                 fi
2073         fi
2074
2075         if test $ol_link_sasl = no ; then
2076                 if test $ol_with_cyrus_sasl != auto ; then
2077                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2078                 else
2079                         AC_MSG_WARN([Could not locate Cyrus SASL])
2080                         AC_MSG_WARN([SASL authentication not supported!])
2081                         if test $ol_link_tls = no ; then
2082                                 AC_MSG_WARN([Strong authentication not supported!])
2083                         fi
2084                 fi
2085
2086         elif test $ol_enable_spasswd != no ; then
2087                 ol_link_spasswd=yes
2088         fi
2089
2090 else
2091         AC_MSG_WARN([SASL authentication not supported!])
2092         if test $ol_link_tls = no ; then
2093                 AC_MSG_WARN([Strong authentication not supported!])
2094         fi
2095 fi
2096
2097 dnl ----------------------------------------------------------------
2098 dnl Check for entropy sources
2099 if test $cross_compiling != yes -a $ac_cv_mingw32 != yes ; then
2100         dev=no
2101         if test -r /dev/urandom ; then
2102                 dev="/dev/urandom";
2103         elif test -r /idev/urandom ; then
2104                 dev="/idev/urandom";
2105         elif test -r /dev/srandom ; then
2106                 dev="/dev/srandom";
2107         elif test -r /dev/random ; then
2108                 dev="/dev/random";
2109         elif test -r /idev/random ; then
2110                 dev="/idev/random";
2111         fi
2112
2113         if test $dev != no ; then
2114                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2115         fi
2116 fi
2117
2118 dnl ----------------------------------------------------------------
2119 dnl
2120 dnl Check for fetch URL support
2121 dnl             should be extended to support other fetch URL APIs
2122 dnl
2123 ol_link_fetch=no
2124 if test $ol_with_fetch != no ; then
2125         OL_LIB_FETCH
2126
2127         if test $ol_cv_lib_fetch != no ; then
2128                 LDIF_LIBS="$LDIF_LIBS $ol_link_fetch"
2129                 ol_link_fetch=freebsd
2130
2131         elif test $ol_with_fetch != auto ; then
2132                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2133         fi 
2134 fi
2135
2136 dnl ----------------------------------------------------------------
2137 dnl
2138 dnl Check for GNU readline
2139 dnl
2140 ol_link_readline=no
2141 if test $ol_with_readline != no ; then
2142         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
2143
2144         if test $ac_cv_header_readline_readline_h = yes ; then
2145                 save_LIBS="$LIBS"
2146                 LIBS="$TERMCAP_LIBS $LIBS"
2147                 AC_CHECK_LIB(readline, readline, 
2148                         [have_readline=yes], [have_readline=no])
2149                 LIBS="$save_LIBS"
2150                         
2151                 if test $have_readline = yes ; then
2152                         ol_with_readline=found
2153                         ol_link_readline=yes
2154
2155                         READLINE_LIBS="-lreadline"
2156                 fi
2157         fi
2158 fi
2159
2160 if test $ol_link_readline = yes ; then
2161         AC_DEFINE(HAVE_READLINE, 1, [define if you have -lreadline])
2162 fi
2163
2164
2165 dnl ----------------------------------------------------------------
2166 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2167 if test $ol_enable_crypt != no ; then
2168         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2169                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2170                         have_crypt=yes], [have_crypt=no])])
2171
2172         if test $have_crypt = yes ; then
2173                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2174         else
2175                 AC_MSG_WARN(could not find crypt)
2176                 if test $ol_enable_crypt = yes ; then
2177                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
2178                 fi
2179
2180                 AC_MSG_WARN(disabling crypt support)
2181                 ol_enable_crypt=no
2182         fi
2183 fi
2184
2185 dnl ----------------------------------------------------------------
2186 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2187 if test $ol_enable_proctitle != no ; then
2188         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2189                 AC_CHECK_LIB(util, setproctitle,
2190                         [have_setproctitle=yes
2191                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2192                         [have_setproctitle=no
2193                         LIBOBJS="$LIBOBJS setproctitle.o"
2194                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2195
2196         if test $have_setproctitle = yes ; then
2197                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2198                         [define if setproctitle(3) is available])
2199         fi
2200 fi
2201
2202 dnl ----------------------------------------------------------------
2203 dnl Check for SLPv2 Compliant API Library
2204 if test $ol_enable_slp != no ; then
2205         AC_CHECK_HEADERS( slp.h )
2206
2207         if test $ac_cv_header_slp_h = yes ; then
2208                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2209                 if test $have_slp = yes ; then
2210                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2211                         SLAPD_SLP_LIBS=-lslp
2212                 fi
2213
2214         elif test $ol_enable_slp = yes ; then
2215                 AC_MSG_ERROR([SLP not found])
2216         fi
2217 fi
2218
2219 dnl ----------------------------------------------------------------
2220 dnl Checks for typedefs, structures, and compiler characteristics.
2221 AC_TYPE_MODE_T
2222 AC_TYPE_OFF_T
2223 AC_TYPE_PID_T
2224 AM_TYPE_PTRDIFF_T
2225 AC_TYPE_SIGNAL
2226 AC_TYPE_SIZE_T
2227
2228 AC_CHECK_TYPE(ssize_t, [signed int])
2229 AC_CHECK_TYPE(caddr_t,  [char *])
2230
2231 OL_TYPE_SOCKLEN_T
2232 AC_STRUCT_ST_BLKSIZE
2233 AC_HEADER_TIME
2234 AC_STRUCT_TM
2235 AC_TYPE_UID_T
2236 OL_TYPE_SIG_ATOMIC_T
2237
2238 dnl AC_TYPE_GETGROUPS
2239
2240 OL_STRUCT_PASSWD_PW_GECOS
2241 OL_STRUCT_PASSWD_PW_PASSWD
2242
2243 OL_C_UPPER_LOWER
2244 AC_C_CONST
2245 OL_C_VOLATILE
2246
2247 if test $cross_compiling = yes ; then
2248         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2249 else
2250         AC_C_BIGENDIAN
2251 fi
2252
2253 AC_COMPILE_CHECK_SIZEOF(short) 
2254 AC_COMPILE_CHECK_SIZEOF(int) 
2255 AC_COMPILE_CHECK_SIZEOF(long)
2256
2257 if test "$ac_cv_sizeof_int" -lt 4 ; then
2258         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2259
2260         AC_DEFINE(LBER_INT_T,long)
2261 else
2262         AC_DEFINE(LBER_INT_T,int)
2263 fi
2264
2265 AC_DEFINE(LBER_LEN_T,long)
2266 AC_DEFINE(LBER_SOCKET_T,int)
2267 AC_DEFINE(LBER_TAG_T,long)
2268
2269 dnl ----------------------------------------------------------------
2270 dnl Checks for library functions.
2271 AC_FUNC_MEMCMP
2272 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2273 AC_FUNC_STRFTIME
2274 dnl AM_FUNC_STRTOD
2275
2276 OL_FUNC_INET_ATON
2277
2278 dnl Check for NT specific routines
2279 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2280
2281 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2282         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2283 ])
2284
2285 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2286         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2287 ])
2288
2289 AC_FUNC_VPRINTF
2290
2291 if test $ac_cv_func_vprintf = yes ; then
2292         dnl check for vsnprintf
2293         AC_CHECK_FUNCS(vsnprintf vsprintf)
2294 fi
2295
2296 AC_CHECK_FUNCS(         \
2297         bcopy                   \
2298         closesocket             \
2299         chroot                  \
2300         endgrent                \
2301         endpwent                \
2302         fcntl                   \
2303         flock                   \
2304         getdtablesize   \
2305         getgrgid                \
2306         gethostname             \
2307         getpass                 \
2308         getpassphrase   \
2309         getpwuid                \
2310         getpwnam                \
2311         getspnam                \
2312         gettimeofday    \
2313         initgroups              \
2314         lockf                   \
2315         memcpy                  \
2316         memmove                 \
2317         pipe                    \
2318         read                    \
2319         recv                    \
2320         recvfrom                \
2321         setpwfile               \
2322         setgid                  \
2323         setegid                 \
2324         setsid                  \
2325         setuid                  \
2326         seteuid                 \
2327         sigaction               \
2328         signal                  \
2329         sigset                  \
2330         strdup                  \
2331         strerror                \
2332         strpbrk                 \
2333         strrchr                 \
2334         strsep                  \
2335         strstr                  \
2336         strtol                  \
2337         strtoul                 \
2338         strspn                  \
2339         sysconf                 \
2340         usleep                  \
2341         waitpid                 \
2342         wait4                   \
2343         write                   \
2344         send                    \
2345         sendto                  \
2346 )
2347
2348 dnl We actually may need to replace more than this.
2349 AC_REPLACE_FUNCS(getopt)
2350
2351 if test "$ac_cv_func_getopt" != yes; then
2352     LIBSRCS="$LIBSRCS getopt.c"
2353 fi
2354
2355 dnl ----------------------------------------------------------------
2356 # Check Configuration
2357 OL_SYS_ERRLIST
2358
2359 dnl ----------------------------------------------------------------
2360 dnl Sort out defines
2361
2362 if test "$ol_enable_debug" != no ; then
2363         AC_DEFINE(LDAP_DEBUG,1,
2364                 [define this to add debugging code])
2365 fi
2366 if test "$ol_enable_syslog" = yes ; then
2367         AC_DEFINE(LDAP_SYSLOG,1,
2368                 [define this to add syslog code])
2369 fi
2370 if test "$ol_enable_cache" = no ; then
2371         AC_DEFINE(LDAP_NOCACHE,1,
2372                 [define this to remove -lldap cache support])
2373 fi
2374 if test "$ol_link_kbind" != no ; then
2375         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2376 fi
2377 if test "$ol_enable_proctitle" != no ; then
2378         AC_DEFINE(LDAP_PROCTITLE,1,
2379                 [define this for LDAP process title support])
2380 fi
2381 if test "$ol_enable_referrals" != no ; then
2382         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2383 fi
2384 if test "$ol_enable_local" != no; then
2385         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2386 fi
2387 if test "$ol_link_ipv6" != no; then
2388         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2389 fi
2390 if test "$ol_enable_cleartext" != no ; then
2391         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2392 fi
2393 if test "$ol_enable_crypt" != no ; then
2394         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2395 fi
2396 if test "$ol_link_kpasswd" != no ; then
2397         AC_DEFINE(SLAPD_KPASSWD,1,[define to support Kerberos passwords])
2398 fi
2399 if test "$ol_link_spasswd" != no ; then
2400         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2401 fi
2402 dnl if test "$ol_enable_multimaster" != no ; then
2403 dnl     AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2404 dnl fi
2405 if test "$ol_enable_phonetic" != no ; then
2406         AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic])
2407 fi
2408 if test "$ol_enable_rlookups" != no ; then
2409         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2410 fi
2411 if test "$ol_enable_aci" != no ; then
2412         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2413 fi
2414
2415 if test "$ol_link_modules" != no ; then
2416         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2417         BUILD_SLAPD=yes
2418         SLAPD_MODULES_LDFLAGS="-dlopen self"
2419 fi
2420
2421 if test "$ol_enable_bdb" != no ; then
2422         AC_DEFINE(SLAPD_BDB,1,[define to support BDB backend])
2423         BUILD_SLAPD=yes
2424         BUILD_BDB=yes
2425         if test "$ol_with_bdb_module" != static ; then
2426                 AC_DEFINE(SLAPD_BDB_DYNAMIC,1,
2427                         [define to support dynamic BDB backend])
2428                 BUILD_BDB=mod
2429                 BUILD_BDB_DYNAMIC=shared
2430                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-bdb/back_bdb.la"
2431         fi
2432 fi
2433
2434 if test "$ol_link_dnssrv" != no ; then
2435         AC_DEFINE(SLAPD_DNSSRV,1,[define to support DNS SRV backend])
2436         BUILD_SLAPD=yes
2437         BUILD_DNSSRV=yes
2438         if test "$ol_with_dnssrv_module" != static ; then
2439                 AC_DEFINE(SLAPD_DNSSRV_DYNAMIC,1,
2440                         [define to support dynamic DNS SRV backend])
2441                 BUILD_DNSSRV=mod
2442                 BUILD_DNSSRV_DYNAMIC=shared
2443                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-dnssrv/back_dnssrv.la"
2444         fi
2445 fi
2446
2447 if test "$ol_enable_ldap" != no ; then
2448         AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
2449         BUILD_SLAPD=yes
2450         BUILD_LDAP=yes
2451         if test "$ol_with_ldap_module" != static ; then
2452                 AC_DEFINE(SLAPD_LDAP_DYNAMIC,1,
2453                         [define to support dynamic LDAP backend])
2454                 BUILD_LDAP=mod
2455                 BUILD_LDAP_DYNAMIC=shared
2456                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldap/back_ldap.la"
2457         fi
2458 fi
2459
2460 if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
2461         AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
2462         BUILD_SLAPD=yes
2463         BUILD_LDBM=yes
2464         LDBM_LIB="-lldbm"
2465         if test "$ol_with_ldbm_module" != static ; then
2466                 AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
2467                         [define to support dynamic LDBM backend])
2468                 BUILD_LDBM=mod
2469                 BUILD_LDBM_DYNAMIC=shared
2470                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldbm/back_ldbm.la"
2471         fi
2472 fi
2473
2474 if test "$ol_enable_meta" != no ; then
2475         if test "$ol_enable_ldap" = no ; then
2476                 AC_MSG_ERROR([need --enable-ldap to use --enable-meta])
2477         fi
2478         if test "$ol_enable_rewrite" = no ; then
2479                 AC_MSG_ERROR([need --enable-rewrite to use --enable-meta])
2480         fi
2481         AC_DEFINE(SLAPD_META,1,[define to support LDAP Metadirectory backend])
2482         BUILD_SLAPD=yes
2483         BUILD_META=yes
2484         if test "$ol_with_meta_module" != static ; then
2485                 AC_DEFINE(SLAPD_META_DYNAMIC,1,
2486                         [define to support dynamic LDAP Metadirectory backend])
2487                 BUILD_META=mod
2488                 BUILD_META_DYNAMIC=shared
2489                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-meta/back_meta.la"
2490         fi
2491 fi
2492
2493 if test "$ol_enable_monitor" != no ; then
2494         AC_DEFINE(SLAPD_MONITOR,1,[define to support cn=Monitor backend])
2495         BUILD_SLAPD=yes
2496         BUILD_MONITOR=yes
2497         if test "$ol_with_monitor_module" != static ; then
2498                 AC_DEFINE(SLAPD_MONITOR_DYNAMIC,1,
2499                         [define to support dynamic cn=Monitor backend])
2500                 BUILD_MONITOR=mod
2501                 BUILD_MONITOR_DYNAMIC=shared
2502                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-monitor/back_monitor.la"
2503         fi
2504 fi
2505
2506 if test "$ol_enable_passwd" != no ; then
2507         AC_DEFINE(SLAPD_PASSWD,1,[define to support PASSWD backend])
2508         BUILD_SLAPD=yes
2509         BUILD_PASSWD=yes
2510         if test "$ol_with_passwd_module" != static ; then
2511                 AC_DEFINE(SLAPD_PASSWD_DYNAMIC,1,
2512                         [define to support dynamic PASSWD backend])
2513                 BUILD_PASSWD=mod
2514                 BUILD_PASSWD_DYNAMIC=shared
2515                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-passwd/back_passwd.la"
2516         fi
2517 fi
2518
2519 if test "$ol_link_perl" != no ; then
2520         AC_DEFINE(SLAPD_PERL,1,[define to support PERL backend])
2521         BUILD_SLAPD=yes
2522         BUILD_PERL=yes
2523         if test "$ol_with_perl_module" != static ; then
2524                 AC_DEFINE(SLAPD_PERL_DYNAMIC,1,
2525                         [define to support dynamic PERL backend])
2526                 BUILD_PERL=mod
2527                 BUILD_PERL_DYNAMIC=shared
2528                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-perl/back_perl.la"
2529         fi
2530 fi
2531
2532 if test "$ol_enable_shell" != no ; then
2533         AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
2534         BUILD_SLAPD=yes
2535         BUILD_SHELL=yes
2536         if test "$ol_with_shell_module" != static ; then
2537                 AC_DEFINE(SLAPD_SHELL_DYNAMIC,1,
2538                         [define to support dynamic SHELL backend])
2539                 BUILD_SHELL=mod
2540                 BUILD_SHELL_DYNAMIC=shared
2541                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-shell/back_shell.la"
2542         fi
2543 fi
2544
2545 if test "$ol_enable_tcl" != no ; then
2546         AC_DEFINE(SLAPD_TCL,1,[define to support TCL backend])
2547         BUILD_SLAPD=yes
2548         BUILD_TCL=yes
2549         if test "$ol_with_tcl_module" != static; then
2550                 AC_DEFINE(SLAPD_TCL_DYNAMIC,1,
2551                         [define to support dynamic TCL backend])
2552                 BUILD_TCL=mod
2553                 BUILD_TCL_DYNAMIC=shared
2554                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-tcl/back_tcl.la"
2555         fi
2556 fi
2557
2558 if test "$ol_link_sql" != no ; then
2559         AC_DEFINE(SLAPD_SQL,1,[define to support SQL backend])
2560         BUILD_SLAPD=yes
2561         BUILD_SQL=yes
2562         if test "$ol_with_sql_module" != static; then
2563                 AC_DEFINE(SLAPD_SQL_DYNAMIC,1,
2564                         [define to support dynamic SQL backend])
2565                 BUILD_SQL=mod
2566                 BUILD_SQL_DYNAMIC=shared
2567                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-sql/back_sql.la"
2568         fi
2569 fi
2570
2571 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2572         $BUILD_SLAPD = yes ; then
2573         BUILD_SLURPD=yes
2574 fi
2575
2576 if test "$ol_enable_rewrite" != no ; then
2577         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2578         BUILD_REWRITE=yes
2579         SLAPD_LIBS="$SLAPD_LIBS -lrewrite"
2580 fi
2581
2582 dnl ----------------------------------------------------------------
2583
2584 dnl
2585 dnl For Windows build, we don't want to include -dlopen flags.
2586 dnl They hurt more than they help.
2587 dnl
2588
2589 if test "$ac_cv_mingw32" = yes ; then
2590     PLAT=NT
2591     SLAPD_MODULES_LDFLAGS=
2592     SLAPD_MODULES_LIST=
2593 else
2594     PLAT=UNIX
2595 fi
2596
2597 AC_SUBST(LIBSRCS)
2598 AC_SUBST(PLAT)
2599 AC_SUBST(BUILD_LIBS_DYNAMIC)
2600
2601 AC_SUBST(BUILD_SLAPD)
2602   AC_SUBST(BUILD_BDB)
2603   AC_SUBST(BUILD_DNSSRV)
2604   AC_SUBST(BUILD_LDAP)
2605   AC_SUBST(BUILD_LDBM)
2606   AC_SUBST(BUILD_META)
2607   AC_SUBST(BUILD_MONITOR)
2608   AC_SUBST(BUILD_PASSWD)
2609   AC_SUBST(BUILD_PERL)
2610   AC_SUBST(BUILD_SHELL)
2611   AC_SUBST(BUILD_SQL)
2612   AC_SUBST(BUILD_TCL)
2613   AC_SUBST(BUILD_BDB_DYNAMIC)
2614   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
2615   AC_SUBST(BUILD_LDAP_DYNAMIC)
2616   AC_SUBST(BUILD_LDBM_DYNAMIC)
2617   AC_SUBST(BUILD_META_DYNAMIC)
2618   AC_SUBST(BUILD_MONITOR_DYNAMIC)
2619   AC_SUBST(BUILD_PASSWD_DYNAMIC)
2620   AC_SUBST(BUILD_PERL_DYNAMIC)
2621   AC_SUBST(BUILD_SHELL_DYNAMIC)
2622   AC_SUBST(BUILD_SQL_DYNAMIC)
2623   AC_SUBST(BUILD_TCL_DYNAMIC)
2624 AC_SUBST(BUILD_SLURPD)
2625
2626 AC_SUBST(LDBM_LIB)
2627
2628 AC_SUBST(LDAP_LIBS)
2629 AC_SUBST(LDIF_LIBS)
2630 AC_SUBST(SLAPD_LIBS)
2631 AC_SUBST(SLURPD_LIBS)
2632 AC_SUBST(LDBM_LIBS)
2633 AC_SUBST(LTHREAD_LIBS)
2634 AC_SUBST(LUTIL_LIBS)
2635 AC_SUBST(WRAP_LIBS)
2636 AC_SUBST(MOD_TCL_LIB)
2637
2638 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2639 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2640 AC_SUBST(SLAPD_MODULES_LIST)
2641
2642 AC_SUBST(PERL_CPPFLAGS)
2643 AC_SUBST(SLAPD_PERL_LDFLAGS)
2644 AC_SUBST(MOD_PERL_LDFLAGS)
2645
2646 AC_SUBST(KRB4_LIBS)
2647 AC_SUBST(KRB5_LIBS)
2648 AC_SUBST(READLINE_LIBS)
2649 AC_SUBST(SASL_LIBS)
2650 AC_SUBST(TERMCAP_LIBS)
2651 AC_SUBST(TLS_LIBS)
2652 AC_SUBST(MODULES_LIBS)
2653 AC_SUBST(AUTH_LIBS)
2654
2655 AC_SUBST(SLAPD_SLP_LIBS)
2656
2657 AC_SUBST(SLAPD_SQL_LDFLAGS)
2658 AC_SUBST(SLAPD_SQL_LIBS)
2659 AC_SUBST(SLAPD_SQL_INCLUDES)
2660
2661 dnl ----------------------------------------------------------------
2662 dnl final output
2663 dnl
2664
2665 AC_OUTPUT( \
2666 Makefile:build/top.mk:Makefile.in:build/dir.mk \
2667 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
2668 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
2669 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
2670 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
2671 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
2672 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
2673 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
2674 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
2675 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
2676 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
2677 clients/maildap/Makefile:build/top.mk:clients/maildap/Makefile.in:build/rules.mk \
2678 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
2679 include/Makefile:build/top.mk:include/Makefile.in \
2680 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
2681 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk    \
2682 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2683 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2684 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
2685 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk  \
2686 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk  \
2687 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
2688 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
2689 libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk    \
2690 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
2691 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
2692 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
2693 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
2694 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
2695 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
2696 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
2697 servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk \
2698 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
2699 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
2700 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
2701 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
2702 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
2703 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
2704 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
2705 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
2706 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
2707 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
2708 ,[
2709 date > stamp-h
2710 echo Please \"make depend\" to build dependencies
2711 ])