]> git.sur5r.net Git - openldap/blob - configure.in
Sync with HEAD
[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 ssleay 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
655 SLAPD_SLP_LIBS=
656 SLAPD_GMP_LIBS=
657
658 dnl ================================================================
659 dnl Checks for programs
660
661 AC_DEFINE(HAVE_MKVERSION, 1, [define this if you have mkversion])
662
663 dnl ----------------------------------------------------------------
664 dnl
665 dnl Determine which C translator to use
666 dnl
667
668 dnl AIX Thread requires we use cc_r or xlc_r.
669 dnl But only do this IF AIX and CC is not set
670 dnl and threads are auto|yes|posix.
671 dnl
672 dnl If we find cc_r|xlc_r, force pthreads and assume
673 dnl             pthread_create is in $LIBS (ie: don't bring in
674 dnl             any additional thread libraries)
675 dnl If we do not find cc_r|xlc_r, disable threads
676
677 ol_aix_threads=no
678 case "$target" in
679 *-*-aix*) dnl all AIX is not a good idea.
680         if test -z "$CC" ; then
681                 case "$ol_with_threads" in
682                 auto | yes |  posix) ol_aix_threads=yes ;;
683                 esac
684         fi
685 ;;
686 esac
687
688 if test $ol_aix_threads = yes ; then
689         if test -z "${CC}" ; then
690                 AC_CHECK_PROGS(CC,cc_r xlc_r cc)
691
692                 if test "$CC" = cc ; then
693                         dnl no CC! don't allow --with-threads
694                         if test $ol_with_threads != auto ; then
695                                 AC_MSG_ERROR([--with-threads requires cc_r (or other suitable compiler) on AIX])
696                         else
697                                 AC_MSG_WARN([disabling threads, no cc_r on AIX])
698                         fi
699                         ol_with_threads=no
700                 fi
701         fi
702
703         case ${CC} in cc_r | xlc_r)
704                 ol_with_threads=posix
705                 ol_cv_pthread_create=yes
706                 ;;
707         esac
708 fi
709
710 if test -z "${CC}"; then
711         AC_CHECK_PROGS(CC,cc gcc,missing)
712
713         if test "${CC}" = "missing" ; then
714                 AC_MSG_ERROR([Unable to locate cc(1) or suitable replacement.  Check PATH or set CC.])
715         fi
716 fi
717
718 if test -z "${AR}"; then
719         AC_CHECK_PROGS(AR,ar gar,missing)
720
721         if test "${AR}" = "missing" ; then
722                 AC_MSG_ERROR([Unable to locate ar(1) or suitable replacement.  Check PATH or set AR.])
723         fi
724 fi
725
726 AC_LIBTOOL_WIN32_DLL
727 AC_LIBTOOL_DLOPEN
728 AC_PROG_LIBTOOL
729
730 dnl ----------------------------------------------------------------
731 dnl Perl
732 ol_link_perl=no
733 if test $ol_enable_perl != no ; then
734         AC_PATH_PROG(PERLBIN, perl, /usr/bin/perl)
735
736         if test "no$PERLBIN" = "no" ; then
737                 if test $ol_enable_perl = yes ; then
738                         AC_MSG_ERROR([could not locate perl])
739                 fi
740
741         else
742                 PERL_CPPFLAGS="`$PERLBIN -MExtUtils::Embed -e ccopts`"
743                 PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e 's/ -lc / /' -e 's/ -lc$//'`"
744
745                 if test x"$ol_enable_perl" = "xyes" ; then
746                         SLAPD_PERL_LDFLAGS="$PERL_LDFLAGS"
747                 else
748                         MOD_PERL_LDFLAGS="$PERL_LDFLAGS"
749                 fi
750                 dnl should check perl version
751                 ol_link_perl=yes
752         fi
753 fi
754
755 AC_PROG_CPP
756
757 dnl ----------------------------------------------------------------
758 dnl Checks for Windows NT
759 case $host_os in
760   *mingw32* ) ac_cv_mingw32=yes ;;
761   *cygwin* ) ac_cv_cygwin=yes ;;
762 esac
763
764 dnl ----------------------------------------------------------------
765 dnl Checks for file extensions
766 AC_EXEEXT
767 AC_OBJEXT
768 AC_DEFINE_UNQUOTED(EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
769
770 dnl ----------------------------------------------------------------
771 dnl BeOS requires -lbe -lroot -lnet
772 AC_CHECK_LIB(be, be_app, [LIBS="$LIBS -lbe -lroot -lnet"], :, [-lroot -lnet])
773
774 dnl ----------------------------------------------------------------
775 dnl OpenLDAP requires STDC features
776 AC_PROG_CC
777 if test "X${ac_cv_prog_cc_stdc}" = "Xno" ; then
778         AC_MSG_ERROR([OpenLDAP requires compiler to support STDC constructs.])
779 fi
780
781 dnl ----------------------------------------------------------------
782 dnl Check cc depend flags
783 OL_MKDEPEND
784 if test "${ol_cv_mkdep}" = no ; then
785         # this will soon become an error
786         AC_MSG_WARN([do not know how to generate dependencies])
787 fi
788
789 dnl ----------------------------------------------------------------
790 dnl Check for AIX security library
791 AC_CHECK_LIB(s, afopen, [
792         AUTH_LIBS=-ls
793         AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
794 ])
795
796 dnl ----------------------------------------------------------------
797 dnl Check for IBM OS/390
798 case "$target" in
799 *-ibm-openedition)
800         ac_cv_func_getopt=no
801         AC_DEFINE(BOTH_STRINGS_H,1,[define to use both <string.h> and <strings.h>])
802         ;;
803 esac
804
805 dnl ----------------------------------------------------------------
806 dnl Check for module support
807 ol_link_modules=no
808 WITH_MODULES_ENABLED=no
809 if test $ol_enable_modules != no ; then
810         AC_CHECK_HEADERS(ltdl.h)
811
812         if test $ac_cv_header_ltdl_h = no ; then
813                 AC_MSG_ERROR([could not locate libtool ltdl.h])
814         fi
815
816         AC_CHECK_LIB(ltdl, lt_dlinit, [
817                 MODULES_LIBS=-lltdl
818                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
819         ])
820
821         if test "$ac_cv_lib_ltdl_lt_dlinit" = no ; then
822                 AC_MSG_ERROR([could not locate libtool -lltdl])
823         fi
824         ol_link_modules=yes
825         WITH_MODULES_ENABLED=yes
826
827 else
828         for i in $Backends; do
829                 eval "ol_tmp=\$ol_enable_$i"
830                 if test $ol_tmp = mod ; then
831                         AC_MSG_WARN([building static $i backend])
832                         eval "ol_enable_$i=yes"
833                 fi
834         done
835         for i in $Overlays; do
836                 eval "ol_tmp=\$ol_enable_$i"
837                 if test $ol_tmp = mod ; then
838                         AC_MSG_WARN([building static $i overlay])
839                         eval "ol_enable_$i=yes"
840                 fi
841         done
842 fi
843
844 dnl ----------------------------------------------------------------
845 dnl Checks for header files.
846 OL_HEADER_STDC
847
848 if test $ol_cv_header_stdc != yes; then
849         AC_MSG_WARN([could not locate Standard C compliant headers])
850 fi
851
852 AC_HEADER_DIRENT
853 AC_HEADER_SYS_WAIT
854 AC_HEADER_TIOCGWINSZ
855
856 AC_CHECK_HEADERS(               \
857         arpa/inet.h             \
858         arpa/nameser.h          \
859         assert.h                \
860         bits/types.h            \
861         conio.h                 \
862         crypt.h                 \
863         direct.h                \
864         errno.h                 \
865         fcntl.h                 \
866         filio.h                 \
867         getopt.h                \
868         grp.h                   \
869         io.h                    \
870         libutil.h               \
871         limits.h                \
872         locale.h                \
873         netinet/tcp.h           \
874         malloc.h                \
875         memory.h                \
876         psap.h                  \
877         pwd.h                   \
878         process.h               \
879         sgtty.h                 \
880         shadow.h                \
881         stddef.h                \
882         string.h                \
883         strings.h               \
884         sysexits.h              \
885         sys/file.h              \
886         sys/filio.h             \
887         sys/errno.h             \
888         sys/ioctl.h             \
889         sys/param.h             \
890         sys/resource.h          \
891         sys/select.h            \
892         sys/socket.h            \
893         sys/stat.h              \
894         sys/syslog.h            \
895         sys/time.h              \
896         sys/types.h             \
897         sys/uio.h               \
898         syslog.h                \
899         termios.h               \
900         unistd.h                \
901         utime.h                 \
902         winsock.h               \
903         winsock2.h              \
904 )
905
906 AC_CHECK_HEADERS( resolv.h, [], [],
907 [$ac_includes_default]
908 #include <netinet/in.h>
909 )
910
911 AC_CHECK_HEADERS(sys/ucred.h, [], [],
912 [$ac_includes_default
913 #ifdef HAVE_SYS_PARAM_H
914 #include <sys/param.h>
915 #endif
916 ])
917
918 dnl ----------------------------------------------------------------
919 dnl Checks for libraries
920
921 AC_CHECK_FUNCS( sigaction sigset )
922
923 dnl HP-UX requires -lV3
924 dnl this is not needed on newer versions of HP-UX
925 if test $ac_cv_func_sigaction = no && test $ac_cv_func_sigaction = no ; then
926         AC_CHECK_LIB(V3, sigset)
927 fi
928
929 dnl The following is INTENTIONALLY scripted out because shell does not
930 dnl support variable names with the '@' character, which is what
931 dnl autoconf would try to generate if one merely used AC_SEARCH_LIBS
932 dnl
933 dnl Skip Winsock tests on Cygwin
934 if test "$ac_cv_cygwin" != yes && test "$ac_cv_header_winsock_h" = yes; then
935 AC_CACHE_CHECK([for winsock], [ol_cv_winsock],
936 save_LIBS="$LIBS"
937 for curlib in ws2_32 wsock32; do
938         LIBS="$LIBS -l$curlib"
939         AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <winsock.h>
940                         ]], [[
941                         socket(0,0,0);
942                         select(0,NULL,NULL,NULL,NULL);
943                         closesocket(0);
944                         gethostname(NULL,0);
945                         ]])],[ol_cv_winsock=yes],[ol_cv_winsock=no])
946
947         if test $ol_cv_winsock = yes; then
948                 AC_DEFINE(HAVE_WINSOCK, 1, [define if you have winsock])
949                 ac_cv_func_socket=yes
950                 ac_cv_func_select=yes
951                 ac_cv_func_closesocket=yes
952                 ac_cv_func_gethostname=yes
953                 if test $curlib = ws2_32; then
954                         ol_cv_winsock=winsock2
955                         AC_DEFINE(HAVE_WINSOCK2, 1,
956                                   [define if you have winsock2])
957                 fi
958                 break
959         fi
960         LIBS="$save_LIBS"
961 done)
962 fi
963
964 dnl Find socket()
965 dnl Likely combinations:
966 dnl             -lsocket [ -lnsl_s | -lnsl ]
967 dnl             -linet
968
969 AC_CHECK_FUNC(socket, :, [      
970 dnl hopefully we won't include too many libraries
971         AC_CHECK_LIB(socket, main)
972         AC_CHECK_LIB(net, main)
973         AC_CHECK_LIB(nsl_s, main)
974         AC_CHECK_LIB(nsl, main)
975         AC_CHECK_LIB(inet, socket)
976         AC_CHECK_LIB(gen, main)
977 ])
978
979 dnl require select
980 AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
981
982 if test "${ac_cv_header_winsock_h}" != yes; then
983         dnl Select arg types
984         dnl (if this detection becomes permenent, it and the select() detection
985         dnl should be done before the yielding select test) 
986         AC_FUNC_SELECT_ARGTYPES
987 fi
988
989 dnl check to see if system call automatically restart
990 dnl AC_SYS_RESTARTABLE_SYSCALLS
991
992 dnl ----------------------------------------------------------------
993 AC_CHECK_FUNCS( poll )
994 AC_CHECK_HEADERS( poll.h )
995
996 dnl ----------------------------------------------------------------
997 AC_CHECK_HEADERS( sys/epoll.h )
998 if test "${ac_cv_header_sys_epoll_h}" = yes; then
999 AC_MSG_CHECKING(for epoll system call)
1000 AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char *argv)
1001 {
1002         int epfd = epoll_create(256);
1003         exit (epfd == -1 ? 1 : 0);
1004 }]])],[AC_MSG_RESULT(yes)
1005 AC_DEFINE(HAVE_EPOLL,1, [define if your system supports epoll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
1006 fi
1007
1008 dnl ----------------------------------------------------------------
1009 # strerror checks
1010 OL_STRERROR
1011
1012 dnl ----------------------------------------------------------------
1013 dnl require POSIX regex
1014 AC_CHECK_HEADERS( regex.h )
1015 if test "$ac_cv_header_regex_h" != yes ; then
1016         AC_MSG_ERROR([POSIX regex.h required.])
1017 fi
1018 AC_SEARCH_LIBS(regfree, [regex gnuregex],
1019         :, AC_MSG_ERROR([POSIX regex required.]))
1020
1021 OL_POSIX_REGEX
1022 if test "$ol_cv_c_posix_regex" = no ; then
1023         AC_MSG_ERROR([broken POSIX regex!])
1024 fi
1025
1026 dnl ----------------------------------------------------------------
1027 dnl UUID Support
1028
1029 have_uuid=no
1030 AC_CHECK_HEADERS(sys/uuid.h)
1031 if test $ac_cv_header_sys_uuid_h = yes ; then
1032         save_LIBS="$LIBS"
1033         AC_SEARCH_LIBS(uuid_to_str, uuid, [have_uuid=yes], :)
1034         LIBS="$save_LIBS"
1035
1036         if test have_uuid = yes ; then
1037                 AC_DEFINE(HAVE_UUID_TO_STR,1,
1038                         [define if you have uuid_to_str()])
1039
1040                 test "$ac_cv_search_uuid_to_str" = "none required" || \
1041                         SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_to_str"
1042         fi
1043 fi
1044
1045 dnl For windows, check for the need of RPCRT for UUID function support
1046 if test $have_uuid = no ; then
1047         AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
1048         save_LIBS="$LIBS"
1049         LIBS="$LIBS -lrpcrt4"
1050         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1051                 int __stdcall UuidCreate(void *);
1052                 int __stdcall UuidToStringA(void *,void **);
1053                 ]], [[
1054                 UuidCreate(0);
1055                 UuidToStringA(0,0);
1056                 ]])],[need_rpcrt=yes],[need_rpcrt=no])
1057         if test $need_rpcrt = yes; then
1058                 SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
1059         fi
1060         LIBS="$save_LIBS"
1061         AC_MSG_RESULT($need_rpcrt)
1062 fi
1063
1064 dnl ----------------------------------------------------------------
1065 dnl Check for resolver routines
1066 OL_RESOLVER_LINK
1067
1068 ol_link_dnssrv=no
1069 if test "$ol_cv_lib_resolver" != no ; then
1070         AC_DEFINE(HAVE_RES_QUERY,1,
1071                 [define if you have res_query()])
1072
1073         if test "$ol_enable_dnssrv" != no ; then
1074                 ol_link_dnssrv=yes
1075         fi
1076
1077         if test "$ol_cv_lib_resolver" != yes ; then
1078                 LIBS="$ol_cv_lib_resolver $LIBS"
1079         fi
1080 fi
1081
1082 if test "$ol_enable_dnssrv" = yes || test "$ol_enable_dnssrv" = mod ; then
1083         if test "$ol_link_dnssrv" = no ; then
1084                 AC_MSG_ERROR([DNSSRV requires res_query()])
1085         fi
1086 else
1087         ol_enable_dnssrv=no
1088 fi
1089
1090 AC_CHECK_FUNCS( hstrerror )
1091
1092 dnl ----------------------------------------------------------------
1093 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1094 dnl PF_LOCAL may use getaddrinfo in available
1095 AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1096
1097 ol_link_ipv6=no
1098 if test $ac_cv_func_getaddrinfo = no || test $ac_cv_func_inet_ntop = no ; then
1099         if test $ol_enable_ipv6 = yes ; then
1100                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1101         fi
1102 elif test $ol_enable_ipv6 != no ; then
1103         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1104                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1105 #                       include <netinet/in.h>
1106 #                       ifdef INET6_ADDRSTRLEN
1107                                 __has_inet6_addrstrlen__;
1108 #                       endif
1109                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1110
1111
1112         AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1113                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1114 #include <sys/types.h>
1115 #include <sys/socket.h>
1116 ]], [[
1117                         struct sockaddr_storage ss;
1118 ]])],[ol_cv_struct_sockaddr_storage=yes],[ol_cv_struct_sockaddr_storage=no])])
1119
1120         if test $ol_cv_inet6_addrstrlen = yes &&
1121            test $ol_cv_struct_sockaddr_storage = yes ; then
1122                 ol_link_ipv6=yes
1123         elif test $ol_enable_ipv6 = yes &&
1124              test $ol_cv_inet6_addrstrlen = no ; then
1125                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1126         elif test $ol_enable_ipv6 = yes &&
1127              test $ol_cv_struct_sockaddr_storage = no ; then
1128                 AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1129         fi
1130 fi
1131
1132 if test $ol_enable_local != no ; then
1133         AC_CHECK_HEADERS( sys/un.h )
1134
1135         if test $ol_enable_local = auto ; then
1136                 ol_enable_local=$ac_cv_header_sys_un_h
1137         elif test $ac_cv_header_sys_un_h = no ; then
1138                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1139         fi
1140 fi
1141
1142 dnl ----------------------------------------------------------------
1143 dnl Kerberos
1144 ol_link_kbind=no
1145 ol_link_krb5=no
1146 ol_link_krb4=no
1147
1148 case $ol_with_kerberos in yes | auto | k5 | k5only | k425)
1149
1150         AC_CHECK_HEADERS(krb5.h)
1151
1152         if test $ac_cv_header_krb5_h = yes ; then
1153                 dnl lazy check for Heimdal Kerberos
1154                 AC_CHECK_HEADERS(heim_err.h)
1155                 if test $ac_cv_header_heim_err_h = yes ; then
1156                         krb5_impl=heimdal
1157                 else
1158                         krb5_impl=mit
1159                 fi
1160
1161                 if test $krb5_impl = mit; then
1162                         AC_CHECK_LIB(k5crypto, main,
1163                                 [krb5crypto=k5crypto],
1164                                 [krb5crypto=crypto])
1165
1166                         AC_CHECK_LIB(krb5, main,
1167                                 [have_krb5=yes
1168                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
1169                                 [have_krb5=no],
1170                                 [-l$krb5crypto -lcom_err])
1171
1172                 elif test $krb5_impl = heimdal; then
1173                         AC_CHECK_LIB(des, main,
1174                                 [krb5crypto=des],
1175                                 [krb5crypto=crypto])
1176
1177                         AC_CHECK_LIB(krb5, main,
1178                                 [have_krb5=yes
1179                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err"],
1180                                 [have_krb5=no],
1181                                 [-l$krb5crypto -lasn1 -lroken -lcom_err])
1182
1183                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
1184                                 [define if you have HEIMDAL Kerberos])
1185
1186                 else
1187                         have_krb5=no
1188                         AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
1189                 fi
1190
1191                 if test $have_krb5 = yes ; then
1192                         ol_link_krb5=yes
1193
1194                         AC_DEFINE(HAVE_KRB5, 1,
1195                                 [define if you have Kerberos V])
1196
1197                         if test $ol_with_kerberos = k5only ; then
1198                                 ol_with_kerberos=found
1199                         fi
1200
1201                 elif test $ol_with_kerberos != auto ; then
1202                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1203                 fi
1204
1205         fi
1206         ;;
1207 esac
1208
1209 if test $ol_link_krb5 = yes &&
1210    { test $ol_with_kerberos = yes ||
1211      test $ol_with_kerberos = auto ||
1212      test $ol_with_kerberos = k425; }; then
1213
1214         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1215
1216         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1217                 if test $krb5_impl = mit; then
1218                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1219                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1220                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1221
1222                 elif test $krb5_impl = heimdal; then
1223                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1224                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1225                                 [-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err])
1226
1227                 else
1228                         have_425=no
1229                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1230                 fi
1231
1232                 if test $have_k425 = yes ; then
1233                         ol_with_kerberos=found
1234                         ol_link_krb4=yes
1235
1236                         AC_DEFINE(HAVE_KRB425, 1,
1237                                 [define if you have Kerberos V with IV support])
1238                         AC_DEFINE(HAVE_KRB4, 1,
1239                                 [define if you have Kerberos IV])
1240
1241                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1242                                 [ol_cv_var_des_debug], [
1243                                 dnl save the flags
1244                                 save_LIBS="$LIBS"
1245                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1246                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1247 #include <kerberosIV/krb.h>
1248 #include <kerberosIV/des.h>
1249 extern int des_debug;
1250 ]], [[
1251 des_debug = 1;
1252 ]])],[ol_cv_var_des_debug=yes],[ol_cv_var_des_debug=no])
1253                                 dnl restore the LIBS
1254                                 LIBS="$save_LIBS"
1255                         ])
1256
1257                         if test $ol_cv_var_des_debug = yes ; then
1258                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1259                                         [define if you have Kerberos des_debug])
1260                         fi
1261
1262                         LIBS="$save_LIBS"
1263                 fi
1264         fi
1265 fi
1266
1267 if test $ol_link_krb5 = yes ; then
1268         ol_with_kerberos=found
1269 fi
1270
1271 case $ol_with_kerberos in yes | auto | k4 | kth)
1272
1273         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1274
1275         if test $ac_cv_header_krb_h = yes ; then
1276                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1277
1278                 if test $have_k4 = yes ; then
1279                         ol_with_kerberos=found
1280                         ol_link_krb4=yes
1281
1282                         AC_DEFINE(HAVE_KRB4, 1,
1283                                 [define if you have Kerberos IV])
1284
1285                         KRB4_LIBS="-lkrb -ldes"
1286
1287                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1288                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1289                                         [define if you have Kth Kerberos])
1290                         fi
1291                 fi
1292         fi
1293         ;;
1294 esac
1295
1296 if test $ol_link_krb4 = yes && test $ol_enable_kbind != no ; then
1297         ol_link_kbind=yes
1298
1299 elif test $ol_enable_kbind = yes ; then
1300         AC_MSG_ERROR([Kerberos IV detection failed])
1301 fi
1302
1303 if test $ol_link_krb4 = yes || test $ol_link_krb5 = yes ; then
1304         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1305
1306 elif test $ol_with_kerberos != auto && test $ol_with_kerberos != no ; then
1307         AC_MSG_ERROR([Kerberos detection failed])
1308 fi
1309
1310 dnl ----------------------------------------------------------------
1311 dnl TLS/SSL
1312         
1313 ol_link_tls=no
1314 if test $ol_with_tls != no ; then
1315         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1316
1317         if test $ac_cv_header_openssl_ssl_h = yes ||
1318            test $ac_cv_header_ssl_h = yes ; then
1319                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1320                         [have_ssleay=yes
1321                         need_rsaref=no],
1322                         [have_ssleay=no],
1323                         [-lcrypto])
1324                         
1325                 if test $have_ssleay = no ; then
1326                         AC_CHECK_LIB(ssl, SSL_library_init,
1327                                 [have_ssleay=yes
1328                                 need_rsaref=no], [have_ssleay=no],
1329                                 [-lcrypto])
1330                 fi
1331
1332                 if test $have_ssleay = no ; then
1333                         AC_CHECK_LIB(ssl, ssl3_accept, 
1334                                 [have_ssleay=yes
1335                                 need_rsaref=yes], [have_ssleay=no],
1336                                 [-lcrypto -lRSAglue -lrsaref])
1337                 fi
1338
1339                 if test $have_ssleay = yes ; then
1340                         ol_with_tls=found
1341                         ol_link_tls=yes
1342
1343                         AC_DEFINE(HAVE_SSLEAY, 1, 
1344                                 [define if you have SSLeay or OpenSSL])
1345
1346                         if test $need_rsaref = yes; then
1347                                 AC_DEFINE(HAVE_RSAREF, 1, 
1348                                         [define if you have RSAref])
1349
1350                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1351                         else
1352                                 TLS_LIBS="-lssl -lcrypto"
1353                         fi
1354                 fi
1355                 OL_SSL_COMPAT
1356                 if test $ol_cv_ssl_crl_compat = no ; then
1357                         ol_link_ssl=no
1358                 else 
1359                         AC_DEFINE(HAVE_OPENSSL_CRL, 1, 
1360                                 [define if you have OpenSSL with CRL checking capability])
1361                 fi
1362         fi
1363
1364 else
1365         AC_MSG_WARN([TLS data protection not supported!])
1366 fi
1367
1368 WITH_TLS=no
1369 if test $ol_link_tls = yes ; then
1370         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1371         WITH_TLS=yes
1372
1373 elif test $ol_with_tls = auto ; then
1374         AC_MSG_WARN([Could not locate TLS/SSL package])
1375         AC_MSG_WARN([TLS data protection not supported!])
1376
1377 elif test $ol_with_tls != no ; then
1378         AC_MSG_ERROR([Could not locate TLS/SSL package])
1379 fi
1380
1381 dnl ----------------------------------------------------------------
1382 dnl LAN Manger password checking requires DES from OpenSSL
1383 if test $ol_enable_lmpasswd != no; then
1384         if test $ol_link_tls != yes ; then
1385                 AC_MSG_ERROR([LAN Manager passwords require OpenSSL])
1386         fi
1387
1388         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1389 fi
1390
1391 dnl ----------------------------------------------------------------
1392 dnl Threads?
1393 ol_link_threads=no
1394
1395 case $ol_with_threads in auto | yes | nt)
1396
1397         OL_NT_THREADS
1398
1399         if test "$ol_cv_nt_threads" = yes ; then
1400                 ol_link_threads=nt
1401                 ol_with_threads=found
1402                 ol_with_yielding_select=yes
1403
1404                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1405                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1406         fi
1407
1408         if test $ol_with_threads = nt ; then
1409                 AC_MSG_ERROR([could not locate NT Threads])
1410         fi
1411         ;;
1412 esac
1413
1414 case $ol_with_threads in auto | yes | posix)
1415
1416         AC_CHECK_HEADERS(pthread.h)
1417
1418         if test $ac_cv_header_pthread_h = yes ; then
1419                 OL_POSIX_THREAD_VERSION
1420
1421                 if test $ol_cv_pthread_version != 0 ; then
1422                         AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1423                                 [define to pthreads API spec revision])
1424                 else
1425                         AC_MSG_ERROR([unknown pthread version])
1426                 fi
1427
1428                 # consider threads found
1429                 ol_with_threads=found
1430
1431                 OL_HEADER_LINUX_THREADS
1432                 OL_HEADER_GNU_PTH_PTHREAD_H
1433
1434                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1435                         AC_CHECK_HEADERS(sched.h)
1436                 fi
1437
1438                 dnl Now the hard part, how to link?
1439                 dnl
1440                 dnl currently supported checks:
1441                 dnl
1442                 dnl Check for no flags 
1443                 dnl     pthread_create() in $LIBS
1444                 dnl
1445                 dnl Check special pthread (final) flags
1446                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1447                 dnl     pthread_create() with -kthread (FreeBSD)
1448                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1449                 dnl     pthread_create() with -pthreads (?)
1450                 dnl     pthread_create() with -mthreads (AIX)
1451                 dnl     pthread_create() with -thread (?)
1452                 dnl
1453                 dnl Check pthread (final) libraries
1454                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1455                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1456                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1457                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1458                 dnl     pthread_create() in -lpthread (many)
1459                 dnl     pthread_create() in -lc_r (FreeBSD)
1460                 dnl
1461                 dnl Check pthread (draft4) flags (depreciated)
1462                 dnl     pthread_create() with -threads (OSF/1)
1463                 dnl
1464                 dnl Check pthread (draft4) libraries (depreciated)
1465                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1466                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1467                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1468                 dnl     pthread_create() in -lpthreads (many)
1469                 dnl
1470
1471                 dnl pthread_create in $LIBS
1472                 AC_CACHE_CHECK([for pthread_create in default libraries],
1473                         ol_cv_pthread_create,[
1474                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1475                                 [ol_cv_pthread_create=yes],
1476                                 [ol_cv_pthread_create=no],
1477                                 [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1478                                         [ol_cv_pthread_create=yes],
1479                                         [ol_cv_pthread_create=no])])])
1480
1481                 if test $ol_cv_pthread_create != no ; then
1482                         ol_link_threads=posix
1483                         ol_link_pthreads=""
1484                 fi
1485                 
1486 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1487                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1488                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1489                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1490                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1491                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1492
1493                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1494                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1495                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1496                         [ol_cv_pthread_lpthread_lmach_lexc])
1497 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1498 dnl                     [ol_cv_pthread_lpthread_lexc])
1499
1500                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1501                         [ol_cv_pthread_lib_lpthread_woff])
1502
1503                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1504                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1505
1506                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1507
1508                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1509                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1510                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1511                         [ol_cv_pthread_lpthreads_lmach_lexc])
1512                 OL_PTHREAD_TRY([-lpthreads -lexc],
1513                         [ol_cv_pthread_lpthreads_lexc])
1514
1515                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1516
1517                 if test $ol_link_threads != no ; then
1518                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1519
1520                         dnl save flags
1521                         save_CPPFLAGS="$CPPFLAGS"
1522                         save_LIBS="$LIBS"
1523                         LIBS="$LTHREAD_LIBS $LIBS"
1524
1525                         dnl All POSIX Thread (final) implementations should have
1526                         dnl sched_yield instead of pthread yield.
1527                         dnl check for both, and thr_yield for Solaris
1528                         AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1529
1530                         if test $ac_cv_func_sched_yield = no &&
1531                            test $ac_cv_func_pthread_yield = no &&
1532                            test $ac_cv_func_thr_yield = no ; then
1533                                 dnl Digital UNIX has sched_yield() in -lrt
1534                                 AC_CHECK_LIB(rt, sched_yield,
1535                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1536                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1537                                                 [Define if you have the sched_yield function.])
1538                                         ac_cv_func_sched_yield=yes],
1539                                         [ac_cv_func_sched_yield=no])
1540                         fi
1541                         if test $ac_cv_func_sched_yield = no &&
1542                            test $ac_cv_func_pthread_yield = no &&
1543                            test "$ac_cv_func_thr_yield" = no ; then
1544                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1545                         fi
1546
1547                         dnl Check functions for compatibility
1548                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1549
1550                         dnl Check for pthread_detach with <pthread.h> inclusion
1551                         dnl as it's symbol may have been mangled.
1552                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1553                                 [ol_cv_func_pthread_detach], [
1554                                 dnl save the flags
1555                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1556 #include <pthread.h>
1557 #ifndef NULL
1558 #define NULL (void*)0
1559 #endif
1560 ]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no])
1561                         ])
1562
1563                         if test $ol_cv_func_pthread_detach = no ; then
1564                                 AC_MSG_ERROR([could not locate pthread_detach()])
1565                         fi
1566
1567                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1568                                 [define if you have pthread_detach function])
1569
1570                         dnl Check for setconcurreny functions
1571                         AC_CHECK_FUNCS( \
1572                                 pthread_setconcurrency \
1573                                 pthread_getconcurrency \
1574                                 thr_setconcurrency \
1575                                 thr_getconcurrency \
1576                         )
1577
1578                         OL_SYS_LINUX_THREADS
1579                         OL_LINUX_THREADS
1580
1581                         if test $ol_cv_linux_threads = error; then
1582                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1583                         fi
1584
1585                         AC_CACHE_CHECK([if pthread_create() works],
1586                                 ol_cv_pthread_create_works,[
1587                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1588                                 [ol_cv_pthread_create_works=yes],
1589                                 [ol_cv_pthread_create_works=no],
1590                                 [dnl assume yes
1591                                 ol_cv_pthread_create_works=yes])])
1592
1593                         if test $ol_cv_pthread_create_works = no ; then
1594                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1595                         fi
1596
1597                         dnl Check if select causes an yield
1598                         if test $ol_with_yielding_select = auto ; then
1599                                 AC_CACHE_CHECK([if select yields when using pthreads],
1600                                         ol_cv_pthread_select_yields,[
1601                                 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1602 #include <sys/types.h>
1603 #include <sys/time.h>
1604 #include <unistd.h>
1605 #include <pthread.h>
1606 #ifndef NULL
1607 #define NULL (void*) 0
1608 #endif
1609
1610 static int fildes[2];
1611
1612 static void *task(p)
1613         void *p;
1614 {
1615         int i;
1616         struct timeval tv;
1617
1618         fd_set rfds;
1619
1620         tv.tv_sec=10;
1621         tv.tv_usec=0;
1622
1623         FD_ZERO(&rfds);
1624         FD_SET(fildes[0], &rfds);
1625
1626         /* we're not interested in any fds */
1627         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1628
1629         if(i < 0) {
1630                 perror("select");
1631                 exit(10);
1632         }
1633
1634         exit(0); /* if we exit here, the select blocked the whole process */
1635 }
1636
1637 int main(argc, argv)
1638         int argc;
1639         char **argv;
1640 {
1641         pthread_t t;
1642
1643         /* create a pipe to select */
1644         if(pipe(&fildes[0])) {
1645                 perror("select");
1646                 exit(1);
1647         }
1648
1649 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1650         (void) pthread_setconcurrency(2);
1651 #else
1652 #ifdef HAVE_THR_SETCONCURRENCY
1653         /* Set Solaris LWP concurrency to 2 */
1654         thr_setconcurrency(2);
1655 #endif
1656 #endif
1657
1658 #if HAVE_PTHREADS < 6
1659         pthread_create(&t, pthread_attr_default, task, NULL);
1660 #else
1661         pthread_create(&t, NULL, task, NULL);
1662 #endif
1663
1664         /* make sure task runs first */
1665 #if HAVE_THR_YIELD
1666         thr_yield();
1667 #elif defined( HAVE_SCHED_YIELD )
1668         sched_yield();
1669 #elif defined( HAVE_PTHREAD_YIELD )
1670         pthread_yield();
1671 #endif
1672
1673         exit(2);
1674 }]])],[ol_cv_pthread_select_yields=no],[ol_cv_pthread_select_yields=yes],[ol_cv_pthread_select_yields=cross])])
1675
1676                                 if test $ol_cv_pthread_select_yields = cross ; then
1677                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1678                                 fi
1679
1680                                 if test $ol_cv_pthread_select_yields = yes ; then
1681                                         ol_with_yielding_select=yes
1682                                 fi
1683                         fi
1684
1685                         dnl restore flags
1686                         CPPFLAGS="$save_CPPFLAGS"
1687                         LIBS="$save_LIBS"
1688                 else
1689                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1690                 fi
1691         fi
1692
1693         if test $ol_with_threads = posix ; then
1694                 AC_MSG_ERROR([could not locate POSIX Threads])
1695         fi
1696         ;;
1697 esac
1698
1699 case $ol_with_threads in auto | yes | mach)
1700
1701         dnl check for Mach CThreads
1702         AC_CHECK_HEADERS(mach/cthreads.h cthreads.h)
1703         if test $ac_cv_header_mach_cthreads_h = yes ; then
1704                 ol_with_threads=found
1705
1706                 dnl check for cthreads support in current $LIBS
1707                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1708
1709                 if test $ol_link_threads = no ; then
1710                         dnl try -all_load
1711                         dnl this test needs work
1712                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1713                                 [ol_cv_cthread_all_load], [
1714                                 dnl save the flags
1715                                 save_LIBS="$LIBS"
1716                                 LIBS="-all_load $LIBS"
1717                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mach/cthreads.h>]], [[
1718                                         cthread_fork((void *)0, (void *)0);
1719                                         ]])],[ol_cv_cthread_all_load=yes],[ol_cv_cthread_all_load=no])
1720                                 dnl restore the LIBS
1721                                 LIBS="$save_LIBS"
1722                         ])
1723
1724                         if test $ol_cv_cthread_all_load = yes ; then
1725                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1726                                 ol_link_threads=mach
1727                                 ol_with_threads=found
1728                         fi
1729                 fi
1730
1731         elif test $ac_cv_header_cthreads_h = yes ; then
1732                 dnl Hurd variant of Mach Cthreads
1733                 dnl uses <cthreads.h> and -lthreads
1734
1735                 ol_with_threads=found
1736  
1737                 dnl save the flags
1738                 save_LIBS="$LIBS"
1739                 LIBS="$LIBS -lthreads"
1740                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1741                 LIBS="$save_LIBS"
1742
1743                 if test $ol_link_threads = yes ; then
1744                         LTHREAD_LIBS="-lthreads"
1745                         ol_link_threads=mach
1746                         ol_with_threads=found
1747                 else
1748                         AC_MSG_ERROR([could not link with Mach CThreads])
1749                 fi
1750
1751         elif test $ol_with_threads = mach ; then
1752                 AC_MSG_ERROR([could not locate Mach CThreads])
1753         fi
1754
1755         if test $ol_link_threads = mach ; then
1756                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1757                         [define if you have Mach Cthreads])
1758         elif test $ol_with_threads = found ; then
1759                 AC_MSG_ERROR([could not link with Mach CThreads])
1760         fi
1761         ;;
1762 esac
1763
1764 case $ol_with_threads in auto | yes | pth)
1765
1766         AC_CHECK_HEADERS(pth.h)
1767
1768         if test $ac_cv_header_pth_h = yes ; then
1769                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1770
1771                 if test $have_pth = yes ; then
1772                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1773                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1774                         ol_link_threads=pth
1775                         ol_with_threads=found
1776
1777                         if test $ol_with_yielding_select = auto ; then
1778                                 ol_with_yielding_select=yes
1779                         fi
1780                 fi
1781         fi
1782         ;;
1783 esac
1784
1785 case $ol_with_threads in auto | yes | lwp)
1786
1787         dnl check for SunOS5 LWP
1788         AC_CHECK_HEADERS(thread.h synch.h)
1789         if test $ac_cv_header_thread_h = yes &&
1790            test $ac_cv_header_synch_h = yes ; then
1791                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1792
1793                 if test $have_thr = yes ; then
1794                         AC_DEFINE(HAVE_THR,1,
1795                                 [if you have Solaris LWP (thr) package])
1796                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1797                         ol_link_threads=thr
1798
1799                         if test $ol_with_yielding_select = auto ; then
1800                                 ol_with_yielding_select=yes
1801                         fi
1802
1803                         dnl Check for setconcurreny functions
1804                         AC_CHECK_FUNCS( \
1805                                 thr_setconcurrency \
1806                                 thr_getconcurrency \
1807                         )
1808                 fi
1809         fi
1810
1811         dnl check for SunOS4 LWP
1812         AC_CHECK_HEADERS(lwp/lwp.h)
1813         if test $ac_cv_header_lwp_lwp_h = yes ; then
1814                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1815
1816                 if test $have_lwp = yes ; then
1817                         AC_DEFINE(HAVE_LWP,1,
1818                                 [if you have SunOS LWP package])
1819                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1820                         ol_link_threads=lwp
1821
1822                         if test $ol_with_yielding_select = auto ; then
1823                                 ol_with_yielding_select=no
1824                         fi
1825                 fi
1826         fi
1827         ;;
1828 esac
1829
1830 if test $ol_with_yielding_select = yes ; then
1831         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1832                 [define if select implicitly yields])
1833 fi
1834
1835 if test $ol_with_threads = manual ; then
1836         dnl User thinks he can manually configure threads.
1837         ol_link_threads=yes
1838
1839         AC_MSG_WARN([thread defines and link options must be set manually])
1840
1841         AC_CHECK_HEADERS(pthread.h sched.h)
1842         AC_CHECK_FUNCS(sched_yield pthread_yield)
1843         OL_HEADER_LINUX_THREADS
1844
1845         AC_CHECK_HEADERS(mach/cthreads.h)
1846         AC_CHECK_HEADERS(lwp/lwp.h)
1847         AC_CHECK_HEADERS(thread.h synch.h)
1848 fi
1849
1850 if test $ol_link_threads != no && test $ol_link_threads != nt ; then
1851         dnl needed to get reentrant/threadsafe versions
1852         dnl
1853         AC_DEFINE(REENTRANT,1)
1854         AC_DEFINE(_REENTRANT,1)
1855         AC_DEFINE(THREAD_SAFE,1)
1856         AC_DEFINE(_THREAD_SAFE,1)
1857         AC_DEFINE(THREADSAFE,1)
1858         AC_DEFINE(_THREADSAFE,1)
1859         AC_DEFINE(_SGI_MP_SOURCE,1)
1860
1861         dnl The errno declaration may dependent upon _REENTRANT.
1862         dnl If it does, we must link with thread support.
1863         AC_CACHE_CHECK([for thread specific errno],
1864                 [ol_cv_errno_thread_specific], [
1865                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[errno = 0;]])],[ol_cv_errno_thread_specific=yes],[ol_cv_errno_thread_specific=no])
1866         ])
1867
1868         dnl The h_errno declaration may dependent upon _REENTRANT.
1869         dnl If it does, we must link with thread support.
1870         AC_CACHE_CHECK([for thread specific h_errno],
1871                 [ol_cv_h_errno_thread_specific], [
1872                 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])
1873         ])
1874
1875         if test $ol_cv_errno_thread_specific != yes ||
1876            test $ol_cv_h_errno_thread_specific != yes ; then
1877                 LIBS="$LTHREAD_LIBS $LIBS"
1878                 LTHREAD_LIBS=""
1879         fi
1880
1881 dnl When in thread environment, use 
1882 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1883 dnl                     func_r(...);
1884 dnl             #else
1885 dnl             #       if defined( HAVE_THREADS ) 
1886 dnl                             /* lock */
1887 dnl             #       endif
1888 dnl                             func(...);
1889 dnl             #       if defined( HAVE_THREADS ) 
1890 dnl                             /* unlock */
1891 dnl             #       endif
1892 dnl             #endif
1893 dnl
1894 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1895 dnl             _POSIX_REENTRANT_FUNCTIONS
1896 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1897 dnl             _POSIX_THREADSAFE_FUNCTIONS
1898 dnl
1899 dnl             and is currently defined in <ldap_pvt_thread.h>
1900 dnl
1901 dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
1902 dnl 
1903 dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1904 dnl LDAP_R_COMPILE is defined.  ie:
1905 dnl             #ifdef LDAP_R_COMPILE
1906 dnl             #       include <ldap_pvt_thread.h>
1907 dnl             #endif
1908 dnl
1909 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1910 dnl specifically for compiling the threadsafe version of
1911 dnl     the ldap library (-lldap_r).
1912 dnl             
1913 dnl     dnl check for reentrant/threadsafe functions
1914 dnl     dnl
1915 dnl     dnl note: these should only be used when linking
1916 dnl     dnl             with $LTHREAD_LIBS
1917 dnl     dnl
1918 dnl     save_CPPFLAGS="$CPPFLAGS"
1919 dnl     save_LIBS="$LIBS"
1920 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1921 dnl     AC_CHECK_FUNCS( \
1922 dnl             gmtime_r \
1923 dnl             gethostbyaddr_r gethostbyname_r \
1924 dnl             feof_unlocked unlocked_feof \
1925 dnl             putc_unlocked unlocked_putc \
1926 dnl             flockfile ftrylockfile \
1927 dnl     )
1928 dnl     CPPFLAGS="$save_CPPFLAGS"
1929 dnl     LIBS="$save_LIBS"
1930 fi  
1931
1932 if test $ol_link_threads = no ; then
1933         if test $ol_with_threads = yes ; then
1934                 AC_MSG_ERROR([no suitable thread support])
1935         fi
1936
1937         if test $ol_with_threads = auto ; then
1938                 AC_MSG_WARN([no suitable thread support, disabling threads])
1939                 ol_with_threads=no
1940         fi
1941
1942         AC_DEFINE(NO_THREADS,1,
1943                 [define if you have (or want) no threads])
1944         LTHREAD_LIBS=""
1945 fi
1946
1947 if test $ol_link_threads != no ; then
1948         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1,
1949                 [define to 1 if library is thread safe])
1950 fi
1951
1952 dnl ----------------------------------------------------------------
1953 dnl Tests for reentrant functions necessary to build -lldap_r
1954 AC_CHECK_FUNCS(         \
1955         ctime_r                 \
1956         gethostbyname_r gethostbyaddr_r \
1957 )
1958
1959 if test "$ac_cv_func_ctime_r" = no ; then
1960         ol_cv_func_ctime_r_nargs=0
1961 else
1962         OL_FUNC_CTIME_R_NARGS
1963 dnl     OL_FUNC_CTIME_R_TYPE
1964 fi
1965
1966 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1967         OL_FUNC_GETHOSTBYNAME_R_NARGS
1968 else
1969         ol_cv_func_gethostbyname_r_nargs=0
1970 fi
1971  
1972 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1973         OL_FUNC_GETHOSTBYADDR_R_NARGS
1974 else
1975         ol_cv_func_gethostbyaddr_r_nargs=0
1976 fi
1977
1978 dnl ----------------------------------------------------------------
1979 ol_link_ldbm=no 
1980
1981 case $ol_enable_ldbm_api in auto | berkeley | bcompat)
1982
1983         if test $ol_enable_ldbm_api = bcompat; then \
1984                 OL_BERKELEY_COMPAT_DB
1985         else
1986                 OL_BERKELEY_DB
1987         fi
1988
1989         if test $ol_cv_berkeley_db != no ; then
1990                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1991                         [define this if Berkeley DB is available])
1992
1993                 ol_link_ldbm=berkeley
1994                 ol_enable_ldbm_api=berkeley
1995
1996                 if test $ol_enable_ldbm_type = hash ; then
1997                         AC_DEFINE(LDBM_USE_DBHASH,1,
1998                                 [define this to use DBHASH w/ LDBM backend])
1999                 else
2000                         AC_DEFINE(LDBM_USE_DBBTREE,1,
2001                                 [define this to use DBBTREE w/ LDBM backend])
2002                 fi
2003
2004                 dnl $ol_cv_lib_db should be yes or -ldb
2005                 dnl (it could be no, but that would be an error
2006                 if test $ol_cv_lib_db != yes ; then
2007                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
2008                 fi
2009         fi
2010         ;;
2011 esac
2012
2013 if test $ol_enable_bdb/$ol_enable_hdb != no/no; then
2014         if test $ol_link_ldbm != berkeley ; then
2015                 AC_MSG_ERROR(BDB/HDB: BerkeleyDB not available)
2016         else
2017                 OL_BDB_COMPAT
2018
2019                 if test $ol_cv_bdb_compat != yes ; then
2020                         AC_MSG_ERROR([BDB/HDB: BerkeleyDB version incompatible])
2021                 fi
2022         fi
2023 fi
2024
2025 if test $ol_link_ldbm = no && test $ol_enable_ldbm_type = btree ; then
2026         AC_MSG_WARN([Could not find LDBM with BTREE support])
2027         ol_enable_ldbm_api=none
2028 fi
2029
2030 if test $ol_enable_ldbm_api = auto || test $ol_enable_ldbm_api = mdbm ; then
2031         OL_MDBM
2032
2033         if test $ol_cv_mdbm = yes ; then
2034                 ol_link_ldbm=mdbm
2035                 ol_enable_ldbm_api=mdbm
2036                 if test $ol_cv_lib_mdbm != yes ; then
2037                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
2038                 fi
2039         fi
2040 fi
2041
2042 if test $ol_enable_ldbm_api = auto || test $ol_enable_ldbm_api = gdbm ; then
2043         OL_GDBM
2044
2045         if test $ol_cv_gdbm = yes ; then
2046                 ol_link_ldbm=gdbm
2047                 ol_enable_ldbm_api=gdbm
2048
2049                 if test $ol_cv_lib_gdbm != yes ; then
2050                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
2051                 fi
2052         fi
2053 fi
2054
2055 if test $ol_enable_ldbm_api = ndbm ; then
2056         OL_NDBM
2057
2058         if test $ol_cv_ndbm = yes ; then
2059                 ol_link_ldbm=ndbm
2060                 ol_enable_ldbm_api=ndbm
2061
2062                 if test $ol_cv_lib_ndbm != yes ; then
2063                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
2064                 fi
2065         fi
2066 fi
2067
2068 if test $ol_link_ldbm = no && test $ol_enable_ldbm != no ; then
2069         AC_MSG_ERROR([could not find suitable LDBM backend])
2070 fi
2071
2072 if test $ol_enable_bdb = yes ||
2073    test $ol_enable_hdb = yes ||
2074    test $ol_enable_ldbm = yes ; then
2075         SLAPD_LIBS="$SLAPD_LIBS \$(LDBM_LIBS)"
2076 fi
2077
2078 dnl ----------------------------------------------------------------
2079
2080 if test $ol_enable_dynamic = yes && test $enable_shared = yes ; then
2081         BUILD_LIBS_DYNAMIC=shared
2082         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
2083         LTSTATIC=""
2084 else
2085         BUILD_LIBS_DYNAMIC=static
2086         LTSTATIC="-static"
2087 fi
2088 AC_SUBST(LTSTATIC)dnl
2089
2090 dnl ----------------------------------------------------------------
2091 if test $ol_enable_wrappers != no ; then
2092         AC_CHECK_HEADERS(tcpd.h,[
2093                 AC_MSG_CHECKING([for TCP wrappers library])
2094                 save_LIBS="$LIBS"
2095                 LIBS="$LIBS -lwrap"
2096                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2097 #include <tcpd.h>
2098 int allow_severity = 0;
2099 int deny_severity  = 0;
2100
2101 struct request_info *req;
2102                 ]], [[
2103 hosts_access(req)
2104                 ]])],[AC_MSG_RESULT([-lwrap])
2105                 have_wrappers=yes
2106                 LIBS="$save_LIBS"],[
2107                 dnl try with -lnsl
2108                 LIBS="$LIBS -lnsl"
2109                 AC_TRY_LINK([
2110 #include <tcpd.h>
2111 int allow_severity = 0;
2112 int deny_severity  = 0;
2113
2114 struct request_info *req;
2115                 ],[
2116 hosts_access(req)
2117                 ],[AC_MSG_RESULT([-lwrap -lnsl])
2118                 have_wrappers=yes
2119                 LIBS="$save_LIBS -lnsl"],[
2120                 AC_MSG_RESULT(no)
2121                 have_wrappers=no
2122                 LIBS=$save_LIBS])])],[have_wrappers=no])
2123
2124         if test $have_wrappers = yes ; then
2125                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
2126                 WRAP_LIBS="-lwrap"
2127         elif test $ol_enable_wrappers = yes ; then
2128                 AC_MSG_ERROR([could not find TCP wrappers, select apppropriate options or disable])
2129         else
2130                 AC_MSG_WARN([could not find TCP wrappers, support disabled])
2131                 WRAP_LIBS=""
2132         fi
2133 fi
2134
2135 dnl ----------------------------------------------------------------
2136 if test $ol_enable_syslog != no ; then
2137         AC_CHECK_FUNC(openlog)
2138         if test $ac_cv_func_openlog = no && test $ol_enable_syslog = yes; then
2139                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
2140         fi
2141         ol_enable_syslog=$ac_cv_func_openlog
2142 fi
2143
2144 dnl ----------------------------------------------------------------
2145 dnl SQL
2146 ol_link_sql=no
2147 if test $ol_enable_sql != no ; then
2148         AC_CHECK_HEADERS(sql.h sqlext.h,[],[
2149                 AC_MSG_ERROR([could not locate SQL headers])
2150         ])
2151
2152         sql_LIBS="$LIBS"
2153         LIBS="$LTHREAD_LIBS"
2154
2155         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
2156         if test $have_iodbc = yes ; then
2157                 ol_link_sql="-liodbc"
2158         else
2159                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
2160                 if test $have_odbc = yes ; then
2161                         ol_link_sql="-lodbc"
2162                 fi
2163         fi
2164
2165         LIBS="$sql_LIBS"
2166
2167         if test $ol_link_sql != no ; then
2168                 SLAPD_SQL_LIBS="$ol_link_sql"
2169
2170         elif test $ol_enable_sql != auto ; then
2171                 AC_MSG_ERROR([could not locate suitable ODBC library])
2172         fi
2173 fi
2174
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 SSLeay or 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         lockf                   \
2544         memcpy                  \
2545         memmove                 \
2546         mkstemp                 \
2547         mktemp                  \
2548         pipe                    \
2549         read                    \
2550         recv                    \
2551         recvfrom                \
2552         setpwfile               \
2553         setgid                  \
2554         setegid                 \
2555         setsid                  \
2556         setuid                  \
2557         seteuid                 \
2558         signal                  \
2559         strdup                  \
2560         strpbrk                 \
2561         strrchr                 \
2562         strsep                  \
2563         strstr                  \
2564         strtol                  \
2565         strtoul                 \
2566         strtoq                  \
2567         strtouq                 \
2568         strtoll                 \
2569         strspn                  \
2570         sysconf                 \
2571         usleep                  \
2572         waitpid                 \
2573         wait4                   \
2574         write                   \
2575         send                    \
2576         sendmsg                 \
2577         sendto                  \
2578 )
2579
2580 dnl We actually may need to replace more than this.
2581 AC_REPLACE_FUNCS(getopt getpeereid)
2582
2583 if test "$ac_cv_func_getopt" != yes; then
2584         LIBSRCS="$LIBSRCS getopt.c"
2585 fi
2586 if test "$ac_cv_func_getpeereid" != yes; then
2587         AC_CHECK_MEMBERS([struct msghdr.msg_accrightslen],,,
2588                 [$ac_includes_default
2589 #ifdef HAVE_SYS_SOCKET_H
2590 #include <sys/socket.h>
2591 #endif])
2592         if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
2593                 AC_CHECK_MEMBERS([struct msghdr.msg_control],,,
2594                         [$ac_includes_default
2595 #ifdef HAVE_SYS_SOCKET_H
2596 #include <sys/socket.h>
2597 #endif])
2598         fi
2599         LIBSRCS="$LIBSRCS getpeereid.c"
2600 fi
2601 if test "$ac_cv_func_snprintf" != yes ||
2602    test "$ac_cv_func_vsnprintf" != yes; then
2603         if test "$ac_cv_func_snprintf" != yes; then
2604                 AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2605         fi
2606         if test "$ac_cv_func_vsnprintf" != yes; then
2607                 AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2608         fi
2609 fi
2610
2611 dnl ----------------------------------------------------------------
2612 dnl Sort out defines
2613
2614 if test "$ol_enable_slapi" != no ; then
2615         dnl This check is done also if --enable-modules is used;
2616         dnl it is duplicated here, 'cause it'd be cached anyway
2617         AC_CHECK_HEADERS(ltdl.h)
2618
2619         if test $ac_cv_header_ltdl_h != yes ; then
2620                 AC_MSG_ERROR([could not locate <ltdl.h>])
2621         fi
2622         AC_CHECK_LIB(ltdl, lt_dlinit, [
2623                 SLAPI_LIBS=-lltdl
2624                 LIBSLAPI=libslapi.a
2625                 LIBSLAPITOOLS=../libslapi.a
2626                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2627         ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2628
2629         AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2630 fi
2631
2632 if test "$ol_enable_debug" != no ; then
2633         AC_DEFINE(LDAP_DEBUG,1,
2634                 [define this to add debugging code])
2635 fi
2636 if test "$ol_enable_syslog" = yes ; then
2637         AC_DEFINE(LDAP_SYSLOG,1,
2638                 [define this to add syslog code])
2639 fi
2640 if test "$ol_link_kbind" != no ; then
2641         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION,
2642                 [define to LDAP VENDOR VERSION])
2643 fi
2644 if test "$ol_enable_proctitle" != no ; then
2645         AC_DEFINE(LDAP_PROCTITLE,1,
2646                 [define this for LDAP process title support])
2647 fi
2648 if test "$ol_enable_referrals" != no ; then
2649         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION,
2650                 [define to LDAP VENDOR VERSION])
2651 fi
2652 if test "$ol_enable_local" != no; then
2653         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2654 fi
2655 if test "$ol_link_ipv6" != no; then
2656         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2657 fi
2658 if test "$ol_enable_cleartext" != no ; then
2659         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2660 fi
2661 if test "$ol_enable_crypt" != no ; then
2662         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2663 fi
2664 if test "$ol_link_spasswd" != no ; then
2665         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2666 fi
2667 if test "$ol_enable_multimaster" != no ; then
2668         AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2669 fi
2670 if test "$ol_enable_rlookups" != no ; then
2671         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2672 fi
2673 if test "$ol_enable_aci" != no ; then
2674         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2675         WITH_ACI_ENABLED=yes
2676 else
2677         WITH_ACI_ENABLED=no
2678 fi
2679
2680 if test "$ol_link_modules" != no ; then
2681         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2682         BUILD_SLAPD=yes
2683         SLAPD_MODULES_LDFLAGS="-dlopen self"
2684 fi
2685
2686 AC_DEFINE(SLAPD_MOD_STATIC,1,[statically linked module])
2687 AC_DEFINE(SLAPD_MOD_DYNAMIC,2,[dynamically linked module])
2688
2689 if test "$ol_enable_bdb" != no ; then
2690         BUILD_SLAPD=yes
2691         BUILD_BDB=$ol_enable_bdb
2692         if test "$ol_enable_bdb" = mod ; then
2693                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-bdb"
2694                 MFLAG=SLAPD_MOD_DYNAMIC
2695         else
2696                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-bdb"
2697                 MFLAG=SLAPD_MOD_STATIC
2698         fi
2699         AC_DEFINE_UNQUOTED(SLAPD_BDB,$MFLAG,[define to support BDB backend])
2700 fi
2701
2702 if test "$ol_enable_dnssrv" != no ; then
2703         BUILD_SLAPD=yes
2704         BUILD_DNSSRV=$ol_enable_dnssrv
2705         if test "$ol_enable_dnssrv" = mod ; then
2706                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2707                 MFLAG=SLAPD_MOD_DYNAMIC
2708         else
2709                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2710                 MFLAG=SLAPD_MOD_STATIC
2711         fi
2712         AC_DEFINE_UNQUOTED(SLAPD_DNSSRV,$MFLAG,[define to support DNS SRV backend])
2713 fi
2714
2715 if test "$ol_enable_hdb" != no ; then
2716         BUILD_SLAPD=yes
2717         BUILD_HDB=$ol_enable_hdb
2718         if test "$ol_enable_hdb" = mod ; then
2719                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
2720                 MFLAG=SLAPD_MOD_DYNAMIC
2721         else
2722                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
2723                 MFLAG=SLAPD_MOD_STATIC
2724         fi
2725         AC_DEFINE_UNQUOTED(SLAPD_HDB,$MFLAG,[define to support HDB backend])
2726 fi
2727
2728 if test "$ol_enable_ldap" != no ; then
2729         BUILD_SLAPD=yes
2730         BUILD_LDAP=$ol_enable_ldap
2731         if test "$ol_enable_ldap" = mod ; then
2732                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2733                 MFLAG=SLAPD_MOD_DYNAMIC
2734         else
2735                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2736                 MFLAG=SLAPD_MOD_STATIC
2737         fi
2738         AC_DEFINE_UNQUOTED(SLAPD_LDAP,$MFLAG,[define to support LDAP backend])
2739 fi
2740
2741 if test "$ol_link_ldbm" != no && test $ol_enable_ldbm != no; then
2742         BUILD_SLAPD=yes
2743         BUILD_LDBM=$ol_enable_ldbm
2744         if test "$ol_enable_ldbm" = mod ; then
2745                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldbm"
2746                 MFLAG=SLAPD_MOD_DYNAMIC
2747         else
2748                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldbm"
2749                 MFLAG=SLAPD_MOD_STATIC
2750         fi
2751         AC_DEFINE_UNQUOTED(SLAPD_LDBM,$MFLAG,[define to support LDBM backend])
2752 fi
2753
2754 if test "$ol_enable_meta" != no ; then
2755         BUILD_SLAPD=yes
2756         BUILD_META=$ol_enable_meta
2757         BUILD_REWRITE=yes
2758         if test "$ol_enable_meta" = mod ; then
2759                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2760                 MFLAG=SLAPD_MOD_DYNAMIC
2761         else
2762                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2763                 MFLAG=SLAPD_MOD_STATIC
2764         fi
2765         AC_DEFINE_UNQUOTED(SLAPD_META,$MFLAG,[define to support LDAP Metadirectory backend])
2766 fi
2767
2768 if test "$ol_enable_monitor" != no ; then
2769         BUILD_SLAPD=yes
2770         BUILD_MONITOR=$ol_enable_monitor
2771         if test "$ol_enable_monitor" = mod ; then
2772                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-monitor"
2773                 MFLAG=SLAPD_MOD_DYNAMIC
2774         else
2775                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-monitor"
2776                 MFLAG=SLAPD_MOD_STATIC
2777         fi
2778         AC_DEFINE_UNQUOTED(SLAPD_MONITOR,$MFLAG,[define to support cn=Monitor backend])
2779 fi
2780
2781 if test "$ol_enable_null" != no ; then
2782         BUILD_SLAPD=yes
2783         BUILD_NULL=$ol_enable_null
2784         if test "$ol_enable_null" = mod ; then
2785                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2786                 MFLAG=SLAPD_MOD_DYNAMIC
2787         else
2788                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2789                 MFLAG=SLAPD_MOD_STATIC
2790         fi
2791         AC_DEFINE_UNQUOTED(SLAPD_NULL,$MFLAG,[define to support NULL backend])
2792 fi
2793
2794 if test "$ol_enable_passwd" != no ; then
2795         BUILD_SLAPD=yes
2796         BUILD_PASSWD=$ol_enable_passwd
2797         if test "$ol_enable_passwd" = mod ; then
2798                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2799                 MFLAG=SLAPD_MOD_DYNAMIC
2800         else
2801                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2802                 MFLAG=SLAPD_MOD_STATIC
2803         fi
2804         AC_DEFINE_UNQUOTED(SLAPD_PASSWD,$MFLAG,[define to support PASSWD backend])
2805 fi
2806
2807 if test "$ol_link_perl" != no ; then
2808         BUILD_SLAPD=yes
2809         BUILD_PERL=$ol_enable_perl
2810         if test "$ol_enable_perl" = mod ; then
2811                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2812                 MFLAG=SLAPD_MOD_DYNAMIC
2813         else
2814                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2815                 MFLAG=SLAPD_MOD_STATIC
2816         fi
2817         AC_DEFINE_UNQUOTED(SLAPD_PERL,$MFLAG,[define to support PERL backend])
2818 fi
2819
2820 if test "$ol_enable_relay" != no ; then
2821         BUILD_SLAPD=yes
2822         BUILD_RELAY=$ol_enable_relay
2823         if test "$ol_enable_relay" = mod ; then
2824                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-relay"
2825                 MFLAG=SLAPD_MOD_DYNAMIC
2826         else
2827                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-relay"
2828                 MFLAG=SLAPD_MOD_STATIC
2829         fi
2830         AC_DEFINE_UNQUOTED(SLAPD_RELAY,$MFLAG,[define to support relay backend])
2831 fi
2832
2833 if test "$ol_enable_shell" != no ; then
2834         if test "$ol_link_threads" != no ; then
2835                 AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
2836         fi
2837         BUILD_SLAPD=yes
2838         BUILD_SHELL=$ol_enable_shell
2839         if test "$ol_enable_shell" = mod ; then
2840                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-shell"
2841                 MFLAG=SLAPD_MOD_DYNAMIC
2842         else
2843                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-shell"
2844                 MFLAG=SLAPD_MOD_STATIC
2845         fi
2846         AC_DEFINE_UNQUOTED(SLAPD_SHELL,$MFLAG,[define to support SHELL backend])
2847 fi
2848
2849 if test "$ol_link_sql" != no ; then
2850         BUILD_SLAPD=yes
2851         BUILD_SQL=$ol_enable_sql
2852         if test "$ol_enable_sql" = mod; then
2853                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2854                 MFLAG=SLAPD_MOD_DYNAMIC
2855         else
2856                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2857                 MFLAG=SLAPD_MOD_STATIC
2858         fi
2859         AC_DEFINE_UNQUOTED(SLAPD_SQL,$MFLAG,[define to support SQL backend])
2860 fi
2861
2862 if test "$ol_enable_accesslog" != no ; then
2863         BUILD_ACCESSLOG=$ol_enable_accesslog
2864         if test "$ol_enable_accesslog" = mod ; then
2865                 MFLAG=SLAPD_MOD_DYNAMIC
2866                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS accesslog.la"
2867         else
2868                 MFLAG=SLAPD_MOD_STATIC
2869                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS accesslog.o"
2870         fi
2871         AC_DEFINE_UNQUOTED(SLAPD_OVER_ACCESSLOG,$MFLAG,[define for In-Directory Access Logging overlay])
2872 fi
2873
2874 if test "$ol_enable_denyop" != no ; then
2875         BUILD_DENYOP=$ol_enable_denyop
2876         if test "$ol_enable_denyop" = mod ; then
2877                 MFLAG=SLAPD_MOD_DYNAMIC
2878                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS denyop.la"
2879         else
2880                 MFLAG=SLAPD_MOD_STATIC
2881                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS denyop.o"
2882         fi
2883         AC_DEFINE_UNQUOTED(SLAPD_OVER_DENYOP,$MFLAG,[define for Dynamic Group overlay])
2884 fi
2885
2886 if test "$ol_enable_dyngroup" != no ; then
2887         BUILD_DYNGROUP=$ol_enable_dyngroup
2888         if test "$ol_enable_dyngroup" = mod ; then
2889                 MFLAG=SLAPD_MOD_DYNAMIC
2890                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dyngroup.la"
2891         else
2892                 MFLAG=SLAPD_MOD_STATIC
2893                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dyngroup.o"
2894         fi
2895         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNGROUP,$MFLAG,[define for Dynamic Group overlay])
2896 fi
2897
2898 if test "$ol_enable_dynlist" != no ; then
2899         BUILD_DYNLIST=$ol_enable_dynlist
2900         if test "$ol_enable_dynlist" = mod ; then
2901                 MFLAG=SLAPD_MOD_DYNAMIC
2902                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dynlist.la"
2903         else
2904                 MFLAG=SLAPD_MOD_STATIC
2905                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dynlist.o"
2906         fi
2907         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay])
2908 fi
2909
2910 if test "$ol_enable_lastmod" != no ; then
2911         BUILD_LASTMOD=$ol_enable_lastmod
2912         if test "$ol_enable_lastmod" = mod ; then
2913                 MFLAG=SLAPD_MOD_DYNAMIC
2914                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS lastmod.la"
2915         else
2916                 MFLAG=SLAPD_MOD_STATIC
2917                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS lastmod.o"
2918         fi
2919         AC_DEFINE_UNQUOTED(SLAPD_OVER_LASTMOD,$MFLAG,[define for Last Modification overlay])
2920 fi
2921
2922 if test "$ol_enable_ppolicy" != no ; then
2923         BUILD_PPOLICY=$ol_enable_ppolicy
2924         if test "$ol_enable_ppolicy" = mod ; then
2925                 MFLAG=SLAPD_MOD_DYNAMIC
2926                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS ppolicy.la"
2927         else
2928                 MFLAG=SLAPD_MOD_STATIC
2929                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS ppolicy.o"
2930         fi
2931         AC_DEFINE_UNQUOTED(SLAPD_OVER_PPOLICY,$MFLAG,[define for Password Policy overlay])
2932 fi
2933
2934 if test "$ol_enable_proxycache" != no ; then
2935         BUILD_PROXYCACHE=$ol_enable_proxycache
2936         if test "$ol_enable_proxycache" = mod ; then
2937                 MFLAG=SLAPD_MOD_DYNAMIC
2938                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS pcache.la"
2939         else
2940                 MFLAG=SLAPD_MOD_STATIC
2941                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS pcache.o"
2942         fi
2943         AC_DEFINE_UNQUOTED(SLAPD_OVER_PROXYCACHE,$MFLAG,[define for Proxy Cache overlay])
2944 fi
2945
2946 if test "$ol_enable_refint" != no ; then
2947         BUILD_REFINT=$ol_enable_refint
2948         if test "$ol_enable_refint" = mod ; then
2949                 MFLAG=SLAPD_MOD_DYNAMIC
2950                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS refint.la"
2951         else
2952                 MFLAG=SLAPD_MOD_STATIC
2953                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS refint.o"
2954         fi
2955         AC_DEFINE_UNQUOTED(SLAPD_OVER_REFINT,$MFLAG,[define for Referential Integrity overlay])
2956 fi
2957
2958 if test "$ol_enable_retcode" != no ; then
2959         BUILD_RETCODE=$ol_enable_retcode
2960         if test "$ol_enable_retcode" = mod ; then
2961                 MFLAG=SLAPD_MOD_DYNAMIC
2962                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS retcode.la"
2963         else
2964                 MFLAG=SLAPD_MOD_STATIC
2965                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS retcode.o"
2966         fi
2967         AC_DEFINE_UNQUOTED(SLAPD_OVER_RETCODE,$MFLAG,[define for Referential Integrity overlay])
2968 fi
2969
2970 if test "$ol_enable_rwm" != no ; then
2971         BUILD_REWRITE=yes
2972         BUILD_RWM=$ol_enable_rwm
2973         if test "$ol_enable_rwm" = mod ; then
2974                 MFLAG=SLAPD_MOD_DYNAMIC
2975                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS rwm.la"
2976         else
2977                 MFLAG=SLAPD_MOD_STATIC
2978                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS rwm_x.o"
2979         fi
2980         AC_DEFINE_UNQUOTED(SLAPD_OVER_RWM,$MFLAG,[define for Rewrite/Remap overlay])
2981 fi
2982
2983 if test "$ol_enable_syncprov" != no ; then
2984         BUILD_SYNCPROV=$ol_enable_syncprov
2985         if test "$ol_enable_syncprov" = mod ; then
2986                 MFLAG=SLAPD_MOD_DYNAMIC
2987                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS syncprov.la"
2988         else
2989                 MFLAG=SLAPD_MOD_STATIC
2990                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS syncprov.o"
2991         fi
2992         AC_DEFINE_UNQUOTED(SLAPD_OVER_SYNCPROV,$MFLAG,[define for Syncrepl Provider overlay])
2993 fi
2994
2995 if test "$ol_enable_translucent" != no ; then
2996         BUILD_TRANSLUCENT=$ol_enable_translucent
2997         if test "$ol_enable_translucent" = mod ; then
2998                 MFLAG=SLAPD_MOD_DYNAMIC
2999                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS translucent.la"
3000         else
3001                 MFLAG=SLAPD_MOD_STATIC
3002                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS translucent.o"
3003         fi
3004         AC_DEFINE_UNQUOTED(SLAPD_OVER_TRANSLUCENT,$MFLAG,[define for Translucent Proxy overlay])
3005 fi
3006
3007 if test "$ol_enable_unique" != no ; then
3008         BUILD_UNIQUE=$ol_enable_unique
3009         if test "$ol_enable_unique" = mod ; then
3010                 MFLAG=SLAPD_MOD_DYNAMIC
3011                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS unique.la"
3012         else
3013                 MFLAG=SLAPD_MOD_STATIC
3014                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS unique.o"
3015         fi
3016         AC_DEFINE_UNQUOTED(SLAPD_OVER_UNIQUE,$MFLAG,[define for Attribute Uniqueness overlay])
3017 fi
3018
3019 if test "$ol_enable_valsort" != no ; then
3020         BUILD_VALSORT=$ol_enable_valsort
3021         if test "$ol_enable_valsort" = mod ; then
3022                 MFLAG=SLAPD_MOD_DYNAMIC
3023                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS valsort.la"
3024         else
3025                 MFLAG=SLAPD_MOD_STATIC
3026                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS valsort.o"
3027         fi
3028         AC_DEFINE_UNQUOTED(SLAPD_OVER_VALSORT,$MFLAG,[define for Value Sorting overlay])
3029 fi
3030
3031 if test "$ol_enable_slurpd" != no &&
3032    test "$ol_link_threads" != no &&
3033    test $BUILD_SLAPD = yes ; then
3034         BUILD_SLURPD=yes
3035 fi
3036
3037 if test "$ol_enable_rewrite" != no ; then
3038         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
3039         BUILD_REWRITE=yes
3040 fi
3041
3042 if test "$ol_enable_slapi" != no ; then
3043         AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
3044         BUILD_SLAPI=yes
3045         SLAPD_SLAPI_DEPEND=libslapi.a
3046 fi
3047
3048 dnl ----------------------------------------------------------------
3049
3050 dnl
3051 dnl For Windows build, we don't want to include -dlopen flags.
3052 dnl They hurt more than they help.
3053 dnl
3054
3055 if test "$ac_cv_mingw32" = yes ; then
3056         PLAT=NT
3057         SLAPD_MODULES_LDFLAGS=
3058 else
3059         PLAT=UNIX
3060 fi
3061
3062 AC_SUBST(LIBSRCS)
3063 AC_SUBST(PLAT)
3064 AC_SUBST(WITH_SASL)
3065 AC_SUBST(WITH_TLS)
3066 AC_SUBST(WITH_MODULES_ENABLED)
3067 AC_SUBST(WITH_ACI_ENABLED)
3068 AC_SUBST(BUILD_LIBS_DYNAMIC)
3069
3070 AC_SUBST(BUILD_SLAPD)
3071 dnl slapi
3072   AC_SUBST(BUILD_SLAPI)
3073   AC_SUBST(SLAPD_SLAPI_DEPEND)
3074 dnl backends
3075   AC_SUBST(BUILD_BDB)
3076   AC_SUBST(BUILD_DNSSRV)
3077   AC_SUBST(BUILD_HDB)
3078   AC_SUBST(BUILD_LDAP)
3079   AC_SUBST(BUILD_LDBM)
3080   AC_SUBST(BUILD_META)
3081   AC_SUBST(BUILD_MONITOR)
3082   AC_SUBST(BUILD_NULL)
3083   AC_SUBST(BUILD_PASSWD)
3084   AC_SUBST(BUILD_RELAY)
3085   AC_SUBST(BUILD_PERL)
3086   AC_SUBST(BUILD_SHELL)
3087   AC_SUBST(BUILD_SQL)
3088 dnl overlays
3089   AC_SUBST(BUILD_ACCESSLOG)
3090   AC_SUBST(BUILD_DENYOP)
3091   AC_SUBST(BUILD_DYNGROUP)
3092   AC_SUBST(BUILD_DYNLIST)
3093   AC_SUBST(BUILD_LASTMOD)
3094   AC_SUBST(BUILD_PPOLICY)
3095   AC_SUBST(BUILD_PROXYCACHE)
3096   AC_SUBST(BUILD_REFINT)
3097   AC_SUBST(BUILD_RETCODE)
3098   AC_SUBST(BUILD_RWM)
3099   AC_SUBST(BUILD_SYNCPROV)
3100   AC_SUBST(BUILD_TRANSLUCENT)
3101   AC_SUBST(BUILD_UNIQUE)
3102   AC_SUBST(BUILD_VALSORT)
3103 AC_SUBST(BUILD_SLURPD)
3104
3105 AC_SUBST(LDAP_LIBS)
3106 AC_SUBST(SLAPD_LIBS)
3107 AC_SUBST(SLURPD_LIBS)
3108 AC_SUBST(LDBM_LIBS)
3109 AC_SUBST(LTHREAD_LIBS)
3110 AC_SUBST(LUTIL_LIBS)
3111 AC_SUBST(WRAP_LIBS)
3112
3113 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
3114 AC_SUBST(SLAPD_MODULES_LDFLAGS)
3115
3116 AC_SUBST(SLAPD_NO_STATIC)
3117 AC_SUBST(SLAPD_STATIC_BACKENDS)
3118 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
3119 AC_SUBST(SLAPD_STATIC_OVERLAYS)
3120 AC_SUBST(SLAPD_DYNAMIC_OVERLAYS)
3121
3122 AC_SUBST(PERL_CPPFLAGS)
3123 AC_SUBST(SLAPD_PERL_LDFLAGS)
3124 AC_SUBST(MOD_PERL_LDFLAGS)
3125
3126 AC_SUBST(KRB4_LIBS)
3127 AC_SUBST(KRB5_LIBS)
3128 AC_SUBST(SASL_LIBS)
3129 AC_SUBST(TLS_LIBS)
3130 AC_SUBST(MODULES_LIBS)
3131 AC_SUBST(SLAPI_LIBS)
3132 AC_SUBST(LIBSLAPI)
3133 AC_SUBST(LIBSLAPITOOLS)
3134 AC_SUBST(AUTH_LIBS)
3135
3136 AC_SUBST(SLAPD_SLP_LIBS)
3137 AC_SUBST(SLAPD_GMP_LIBS)
3138
3139 AC_SUBST(SLAPD_SQL_LDFLAGS)
3140 AC_SUBST(SLAPD_SQL_LIBS)
3141 AC_SUBST(SLAPD_SQL_INCLUDES)
3142
3143 dnl ----------------------------------------------------------------
3144 dnl final help output
3145 AC_ARG_WITH(xxinstall,[
3146 See INSTALL file for further details.])
3147
3148 dnl ----------------------------------------------------------------
3149 dnl final output
3150 dnl
3151
3152 AC_CONFIG_FILES([Makefile:build/top.mk:Makefile.in:build/dir.mk]
3153 [doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk]
3154 [doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk]
3155 [doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk]
3156 [doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk]
3157 [doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk]
3158 [doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk]
3159 [clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk]
3160 [clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk]
3161 [include/Makefile:build/top.mk:include/Makefile.in]
3162 [libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk]
3163 [libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk]
3164 [libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk]
3165 [libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk]
3166 [libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk]
3167 [libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk]
3168 [libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk]
3169 [servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk]
3170 [servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk]
3171 [servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk]
3172 [servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk]
3173 [servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk]
3174 [servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk]
3175 [servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk]
3176 [servers/slapd/back-ldif/Makefile:build/top.mk:servers/slapd/back-ldif/Makefile.in:build/mod.mk]
3177 [servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk]
3178 [servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk]
3179 [servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk]
3180 [servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk]
3181 [servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk]
3182 [servers/slapd/back-relay/Makefile:build/top.mk:servers/slapd/back-relay/Makefile.in:build/mod.mk]
3183 [servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk]
3184 [servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk]
3185 [servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk]
3186 [servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk]
3187 [servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk]
3188 [servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk]
3189 [tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk]
3190 [tests/run]
3191 [tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk])
3192
3193 AC_CONFIG_COMMANDS([default],[[
3194 chmod +x tests/run
3195 date > stamp-h
3196 BACKENDSC="servers/slapd/backends.c"
3197 echo "Making $BACKENDSC"
3198 rm -f $BACKENDSC
3199 cat > $BACKENDSC << ENDX
3200 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3201  *
3202  * Copyright 1998-2005 The OpenLDAP Foundation.
3203  * All rights reserved.
3204  *
3205  * Redistribution and use in source and binary forms, with or without
3206  * modification, are permitted only as authorized by the OpenLDAP
3207  * Public License.
3208  *
3209  * A copy of this license is available in the file LICENSE in the
3210  * top-level directory of the distribution or, alternatively, at
3211  * <http://www.OpenLDAP.org/license.html>.
3212  */
3213 /* This file is automatically generated by configure; please do not edit. */
3214
3215 #include "portable.h"
3216 #include "slap.h"
3217
3218 ENDX
3219 if test "${STATIC_BACKENDS}"; then
3220         for b in config ${STATIC_BACKENDS}; do
3221                 bb=`echo "${b}" | sed -e 's/back-//'`
3222                 cat >> $BACKENDSC << ENDX
3223 extern BI_init ${bb}_back_initialize;
3224 ENDX
3225         done
3226
3227         cat >> $BACKENDSC << ENDX
3228
3229 BackendInfo slap_binfo[] = {
3230 ENDX
3231
3232         for b in config ${STATIC_BACKENDS}; do
3233                 bb=`echo "${b}" | sed -e 's/back-//'`
3234                 echo "    Add ${bb} ..."
3235                 cat >> $BACKENDSC << ENDX
3236         { "${bb}", ${bb}_back_initialize },
3237 ENDX
3238         done
3239
3240         cat >> $BACKENDSC << ENDX
3241         { NULL, NULL },
3242 };
3243
3244 /* end of generated file */
3245 ENDX
3246 fi
3247
3248 echo Please run \"make depend\" to build dependencies
3249 ]],[[STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS"]])
3250 AC_OUTPUT