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