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