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