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