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