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