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