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