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