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