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