]> git.sur5r.net Git - openldap/blob - configure.in
Fix 9bafb16e1bfabf7fc2c4f5ee3a75d35c91354c02 - autoca support
[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 specificallly 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 permenent, 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/devpoll.h )
1000 dnl "/dev/poll" needs <sys/poll.h> as well...
1001 if test "${ac_cv_header_sys_devpoll_h}" = yes \
1002                 -a "${ac_cv_header_poll_h}" = yes ; \
1003 then
1004         AC_MSG_CHECKING(for /dev/poll)
1005         AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
1006 {
1007         int devpollfd = open("/dev/poll", /* O_RDWR */ 2);
1008         exit (devpollfd == -1 ? 1 : 0);
1009 }]])],[AC_MSG_RESULT(yes)
1010         AC_DEFINE(HAVE_DEVPOLL,1, [define if your system supports /dev/poll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
1011 fi
1012
1013 dnl ----------------------------------------------------------------
1014 OL_STRERROR
1015
1016 dnl ----------------------------------------------------------------
1017 dnl require POSIX regex
1018 AC_CHECK_HEADERS( regex.h, [], [],
1019 [$ac_includes_default
1020 #ifdef HAVE_SYS_TYPES_H
1021 #include <sys/types.h>
1022 #endif
1023 ])
1024
1025 if test "$ac_cv_header_regex_h" != yes ; then
1026         AC_MSG_ERROR([POSIX regex.h required.])
1027 fi
1028 AC_SEARCH_LIBS(regfree, [regex gnuregex],
1029         :, AC_MSG_ERROR([POSIX regex required.]))
1030
1031 OL_POSIX_REGEX
1032 if test "$ol_cv_c_posix_regex" = no ; then
1033         AC_MSG_ERROR([broken POSIX regex!])
1034 fi
1035
1036 dnl ----------------------------------------------------------------
1037 dnl UUID Support
1038
1039 have_uuid=no
1040 AC_CHECK_HEADERS(sys/uuid.h)
1041 dnl The HAVE_UUID_TO_STR code path also needs uuid_create
1042 if test $ac_cv_header_sys_uuid_h = yes ; then
1043         save_LIBS="$LIBS"
1044         AC_SEARCH_LIBS([uuid_to_str], [uuid], [have_uuid=yes], :)
1045         AC_SEARCH_LIBS([uuid_create], [uuid], :, [have_uuid=no])
1046         LIBS="$save_LIBS"
1047
1048         if test $have_uuid = yes ; then
1049                 AC_DEFINE(HAVE_UUID_TO_STR,1,
1050                         [define if you have uuid_to_str()])
1051
1052                 test "$ac_cv_search_uuid_to_str" = "none required" || \
1053                         SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_to_str"
1054         fi
1055 fi
1056
1057 dnl Look for uuid_generate
1058 dnl The HAVE_UUID_GENERATE code path also needs uuid_unparse_lower
1059 if test $have_uuid = no ; then
1060         AC_CHECK_HEADERS(uuid/uuid.h)
1061         if test $ac_cv_header_uuid_uuid_h = yes ; then
1062                 save_LIBS="$LIBS"
1063                 AC_SEARCH_LIBS([uuid_generate], [uuid], [have_uuid=yes], :)
1064                 AC_SEARCH_LIBS([uuid_unparse_lower], [uuid], :, [have_uuid=no])
1065                 LIBS="$save_LIBS"
1066
1067                 if test $have_uuid = yes ; then
1068                         AC_DEFINE(HAVE_UUID_GENERATE,1,
1069                                 [define if you have uuid_generate()])
1070
1071                         test "$ac_cv_search_uuid_generate" = "none required" || \
1072                                 SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_generate"
1073                 fi
1074         fi
1075 fi
1076
1077 dnl For windows, check for the need of RPCRT for UUID function support
1078 if test $have_uuid = no ; then
1079         AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
1080         save_LIBS="$LIBS"
1081         LIBS="$LIBS -lrpcrt4"
1082         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1083                 int __stdcall UuidCreate(void *);
1084                 int __stdcall UuidToStringA(void *,void **);
1085                 ]], [[
1086                 UuidCreate(0);
1087                 UuidToStringA(0,0);
1088                 ]])],[need_rpcrt=yes],[need_rpcrt=no])
1089         if test $need_rpcrt = yes; then
1090                 SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
1091         fi
1092         LIBS="$save_LIBS"
1093         AC_MSG_RESULT($need_rpcrt)
1094 fi
1095
1096 dnl ----------------------------------------------------------------
1097 dnl Check for resolver routines
1098 OL_RESOLVER_LINK
1099
1100 ol_link_dnssrv=no
1101 if test "$ol_cv_lib_resolver" != no ; then
1102         AC_DEFINE(HAVE_RES_QUERY,1,
1103                 [define if you have res_query()])
1104
1105         if test "$ol_enable_dnssrv" != no ; then
1106                 ol_link_dnssrv=yes
1107         fi
1108
1109         if test "$ol_cv_lib_resolver" != yes ; then
1110                 LIBS="$ol_cv_lib_resolver $LIBS"
1111         fi
1112 fi
1113
1114 if test "$ol_enable_dnssrv" = yes || test "$ol_enable_dnssrv" = mod ; then
1115         if test "$ol_link_dnssrv" = no ; then
1116                 AC_MSG_ERROR([DNSSRV requires res_query()])
1117         fi
1118 else
1119         ol_enable_dnssrv=no
1120 fi
1121
1122 AC_CHECK_FUNCS( hstrerror )
1123
1124 dnl ----------------------------------------------------------------
1125 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1126 dnl PF_LOCAL may use getaddrinfo in available
1127 AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1128
1129 ol_link_ipv6=no
1130 if test $ac_cv_func_getaddrinfo = no || test $ac_cv_func_inet_ntop = no ; then
1131         if test $ol_enable_ipv6 = yes ; then
1132                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1133         fi
1134 elif test $ol_enable_ipv6 != no ; then
1135         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1136                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1137 #                       include <netinet/in.h>
1138 #                       ifdef INET6_ADDRSTRLEN
1139                                 __has_inet6_addrstrlen__;
1140 #                       endif
1141                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1142
1143
1144         AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1145                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1146 #include <sys/types.h>
1147 #include <sys/socket.h>
1148 ]], [[
1149                         struct sockaddr_storage ss;
1150 ]])],[ol_cv_struct_sockaddr_storage=yes],[ol_cv_struct_sockaddr_storage=no])])
1151
1152         if test $ol_cv_inet6_addrstrlen = yes &&
1153            test $ol_cv_struct_sockaddr_storage = yes ; then
1154                 ol_link_ipv6=yes
1155         elif test $ol_enable_ipv6 = yes &&
1156              test $ol_cv_inet6_addrstrlen = no ; then
1157                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1158         elif test $ol_enable_ipv6 = yes &&
1159              test $ol_cv_struct_sockaddr_storage = no ; then
1160                 AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1161         fi
1162 fi
1163
1164 if test $ol_enable_local != no ; then
1165         AC_CHECK_HEADERS( sys/un.h )
1166
1167         if test $ol_enable_local = auto ; then
1168                 ol_enable_local=$ac_cv_header_sys_un_h
1169         elif test $ac_cv_header_sys_un_h = no ; then
1170                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1171         fi
1172 fi
1173
1174 dnl ----------------------------------------------------------------
1175 dnl TLS/SSL
1176         
1177 if test $ol_with_tls = yes ; then
1178         ol_with_tls=auto
1179 fi
1180
1181 ol_link_tls=no
1182 if test $ol_with_tls = openssl || test $ol_with_tls = auto ; then
1183         AC_CHECK_HEADERS(openssl/ssl.h)
1184
1185         if test $ac_cv_header_openssl_ssl_h = yes ; then
1186                 AC_CHECK_LIB(ssl, SSL_CTX_set_msg_callback,
1187                         [have_openssl=yes
1188                         need_rsaref=no], [have_openssl=no],
1189                         [-lcrypto])
1190
1191                 if test $have_openssl = no ; then
1192                         AC_CHECK_LIB(ssl, ssl3_accept, 
1193                                 [have_openssl=yes
1194                                 need_rsaref=yes], [have_openssl=no],
1195                                 [-lcrypto -lRSAglue -lrsaref])
1196                 fi
1197
1198                 if test $have_openssl = yes ; then
1199                         ol_with_tls=openssl
1200                         ol_link_tls=yes
1201
1202                         AC_DEFINE(HAVE_OPENSSL, 1, 
1203                                 [define if you have OpenSSL])
1204
1205                         if test $need_rsaref = yes; then
1206                                 AC_DEFINE(HAVE_RSAREF, 1, 
1207                                         [define if OpenSSL needs RSAref])
1208
1209                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1210                         else
1211                                 TLS_LIBS="-lssl -lcrypto"
1212                         fi
1213
1214                         OL_SSL_COMPAT
1215                         if test $ol_cv_ssl_crl_compat = yes ; then
1216                                 AC_DEFINE(HAVE_OPENSSL_CRL, 1, 
1217                                         [define if you have OpenSSL with CRL checking capability])
1218                         fi
1219                 fi
1220         fi
1221 fi
1222
1223 if test $ol_link_tls = no ; then
1224         if test $ol_with_tls = gnutls || test $ol_with_tls = auto ; then
1225                 AC_CHECK_HEADERS(gnutls/gnutls.h)
1226
1227                 if test $ac_cv_header_gnutls_gnutls_h = yes ; then
1228                         AC_PREPROC_IFELSE(
1229                                 [[#include <gnutls/gnutls.h>]
1230 [#if GNUTLS_VERSION_NUMBER < 0x020c00]
1231 [#error "GnuTLS 2.12.0 or newer required"]
1232 [#endif]],
1233                                         , [AC_MSG_FAILURE([GnuTLS is too old])])
1234
1235                         AC_CHECK_LIB(gnutls, gnutls_init,
1236                                 [have_gnutls=yes], [have_gnutls=no])
1237
1238                         if test $have_gnutls = yes ; then
1239                                 ol_with_tls=gnutls
1240                                 ol_link_tls=yes
1241
1242                                 TLS_LIBS="-lgnutls"
1243
1244                                 AC_DEFINE(HAVE_GNUTLS, 1, 
1245                                         [define if you have GNUtls])
1246                         fi
1247                 fi
1248         fi
1249 fi
1250
1251 dnl NOTE: caller must specify -I/path/to/nspr4 and -I/path/to/nss3
1252 dnl and -L/path/to/nspr4 libs and -L/path/to/nss3 libs if those libs
1253 dnl are not in the default system location
1254 if test $ol_link_tls = no ; then
1255         if test $ol_with_tls = moznss || test $ol_with_tls = auto ; then
1256                 have_moznss=no
1257                 AC_CHECK_HEADERS([nssutil.h])
1258                 if test "$ac_cv_header_nssutil_h" = yes ; then
1259                         AC_CHECK_LIB([nss3], [NSS_Initialize],
1260                                                  [ have_moznss=yes ], [ have_moznss=no ])
1261                 fi
1262
1263                 if test "$have_moznss" = yes ; then
1264                         ol_with_tls=moznss
1265                         ol_link_tls=yes
1266                         AC_DEFINE(HAVE_MOZNSS, 1, 
1267                                           [define if you have MozNSS])
1268                         TLS_LIBS="-lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4"
1269                 else
1270                         if test $ol_with_tls = moznss ; then
1271                         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)])
1272                         fi
1273                 fi
1274         fi
1275 fi
1276
1277 WITH_TLS=no
1278 if test $ol_link_tls = yes ; then
1279         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1280         WITH_TLS=yes
1281 elif test $ol_with_tls = auto ; then
1282         AC_MSG_WARN([Could not locate TLS/SSL package])
1283         AC_MSG_WARN([TLS data protection not supported!])
1284 elif test $ol_with_tls != no ; then
1285         AC_MSG_ERROR([Could not locate TLS/SSL package])
1286 else
1287         AC_MSG_WARN([TLS data protection not supported!])
1288 fi
1289
1290 dnl ----------------------------------------------------------------
1291 dnl LAN Manger password checking requires DES from OpenSSL
1292 if test $ol_enable_lmpasswd != no; then
1293         if test $ol_link_tls != yes ; then
1294                 AC_MSG_ERROR([LAN Manager passwords require OpenSSL])
1295         fi
1296
1297         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1298 fi
1299
1300 dnl ----------------------------------------------------------------
1301 dnl Threads?
1302 ol_link_threads=no
1303
1304 case $ol_with_threads in auto | yes | nt)
1305
1306         OL_NT_THREADS
1307
1308         if test "$ol_cv_nt_threads" = yes ; then
1309                 ol_link_threads=nt
1310                 ol_with_threads=found
1311                 ol_with_yielding_select=yes
1312
1313                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1314                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1315         fi
1316
1317         if test $ol_with_threads = nt ; then
1318                 AC_MSG_ERROR([could not locate NT Threads])
1319         fi
1320         ;;
1321 esac
1322
1323 case $ol_with_threads in auto | yes | posix)
1324
1325         AC_CHECK_HEADERS(pthread.h)
1326
1327         if test $ac_cv_header_pthread_h = yes ; then
1328                 OL_POSIX_THREAD_VERSION
1329
1330                 if test $ol_cv_pthread_version != 0 ; then
1331                         AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1332                                 [define to pthreads API spec revision])
1333                 else
1334                         AC_MSG_ERROR([unknown pthread version])
1335                 fi
1336
1337                 # consider threads found
1338                 ol_with_threads=found
1339
1340                 OL_HEADER_LINUX_THREADS
1341                 OL_HEADER_GNU_PTH_PTHREAD_H
1342
1343                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1344                         AC_CHECK_HEADERS(sched.h)
1345                 fi
1346
1347                 dnl Now the hard part, how to link?
1348                 dnl
1349                 dnl currently supported checks:
1350                 dnl
1351                 dnl Check for no flags 
1352                 dnl     pthread_create() in $LIBS
1353                 dnl
1354                 dnl Check special pthread (final) flags
1355                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1356                 dnl     pthread_create() with -kthread (FreeBSD)
1357                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1358                 dnl     pthread_create() with -pthreads (?)
1359                 dnl     pthread_create() with -mthreads (AIX)
1360                 dnl     pthread_create() with -thread (?)
1361                 dnl
1362                 dnl Check pthread (final) libraries
1363                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1364                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1365                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1366                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1367                 dnl     pthread_create() in -lpthread (many)
1368                 dnl     pthread_create() in -lc_r (FreeBSD)
1369                 dnl
1370                 dnl Check pthread (draft4) flags (depreciated)
1371                 dnl     pthread_create() with -threads (OSF/1)
1372                 dnl
1373                 dnl Check pthread (draft4) libraries (depreciated)
1374                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1375                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1376                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1377                 dnl     pthread_create() in -lpthreads (many)
1378                 dnl
1379
1380                 dnl pthread_create in $LIBS
1381                 AC_CACHE_CHECK([for pthread_create in default libraries],
1382                         ol_cv_pthread_create,[
1383                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1384                                 [ol_cv_pthread_create=yes],
1385                                 [ol_cv_pthread_create=no],
1386                                 [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1387                                         [ol_cv_pthread_create=yes],
1388                                         [ol_cv_pthread_create=no])])])
1389
1390                 if test $ol_cv_pthread_create != no ; then
1391                         ol_link_threads=posix
1392                         ol_link_pthreads=""
1393                 fi
1394                 
1395 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1396                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1397                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1398                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1399                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1400                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1401
1402                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1403                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1404                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1405                         [ol_cv_pthread_lpthread_lmach_lexc])
1406 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1407 dnl                     [ol_cv_pthread_lpthread_lexc])
1408
1409                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1410                         [ol_cv_pthread_lib_lpthread_woff])
1411
1412                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1413                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1414
1415                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1416
1417                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1418                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1419                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1420                         [ol_cv_pthread_lpthreads_lmach_lexc])
1421                 OL_PTHREAD_TRY([-lpthreads -lexc],
1422                         [ol_cv_pthread_lpthreads_lexc])
1423
1424                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1425
1426                 if test $ol_link_threads != no ; then
1427                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1428
1429                         dnl save flags
1430                         save_CPPFLAGS="$CPPFLAGS"
1431                         save_LIBS="$LIBS"
1432                         LIBS="$LTHREAD_LIBS $LIBS"
1433
1434                         dnl All POSIX Thread (final) implementations should have
1435                         dnl sched_yield instead of pthread yield.
1436                         dnl check for both, and thr_yield for Solaris
1437                         AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1438
1439                         if test $ac_cv_func_sched_yield = no &&
1440                            test $ac_cv_func_pthread_yield = no &&
1441                            test $ac_cv_func_thr_yield = no ; then
1442                                 dnl Digital UNIX has sched_yield() in -lrt
1443                                 AC_CHECK_LIB(rt, sched_yield,
1444                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1445                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1446                                                 [Define if you have the sched_yield function.])
1447                                         ac_cv_func_sched_yield=yes],
1448                                         [ac_cv_func_sched_yield=no])
1449                         fi
1450                         if test $ac_cv_func_sched_yield = no &&
1451                            test $ac_cv_func_pthread_yield = no &&
1452                            test "$ac_cv_func_thr_yield" = no ; then
1453                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1454                         fi
1455
1456                         dnl Check functions for compatibility
1457                         AC_CHECK_FUNCS(pthread_kill)
1458
1459                         dnl Check for pthread_rwlock_destroy with <pthread.h>
1460                         dnl as pthread_rwlock_t may not be defined.
1461                         AC_CACHE_CHECK([for pthread_rwlock_destroy with <pthread.h>],
1462                                 [ol_cv_func_pthread_rwlock_destroy], [
1463                                 dnl save the flags
1464                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1465 #include <pthread.h>
1466 pthread_rwlock_t rwlock;
1467 ]], [[pthread_rwlock_destroy(&rwlock);]])],[ol_cv_func_pthread_rwlock_destroy=yes],[ol_cv_func_pthread_rwlock_destroy=no])
1468                         ])
1469                         if test $ol_cv_func_pthread_rwlock_destroy = yes ; then
1470                                 AC_DEFINE(HAVE_PTHREAD_RWLOCK_DESTROY,1,
1471                                         [define if you have pthread_rwlock_destroy function])
1472                         fi
1473
1474                         dnl Check for pthread_detach with <pthread.h> inclusion
1475                         dnl as it's symbol may have been mangled.
1476                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1477                                 [ol_cv_func_pthread_detach], [
1478                                 dnl save the flags
1479                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1480 #include <pthread.h>
1481 #ifndef NULL
1482 #define NULL (void*)0
1483 #endif
1484 ]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no])
1485                         ])
1486
1487                         if test $ol_cv_func_pthread_detach = no ; then
1488                                 AC_MSG_ERROR([could not locate pthread_detach()])
1489                         fi
1490
1491                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1492                                 [define if you have pthread_detach function])
1493
1494                         dnl Check for setconcurreny functions
1495                         AC_CHECK_FUNCS( \
1496                                 pthread_setconcurrency \
1497                                 pthread_getconcurrency \
1498                                 thr_setconcurrency \
1499                                 thr_getconcurrency \
1500                         )
1501
1502                         OL_SYS_LINUX_THREADS
1503                         OL_LINUX_THREADS
1504
1505                         if test $ol_cv_linux_threads = error; then
1506                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1507                         fi
1508
1509                         AC_CACHE_CHECK([if pthread_create() works],
1510                                 ol_cv_pthread_create_works,[
1511                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1512                                 [ol_cv_pthread_create_works=yes],
1513                                 [ol_cv_pthread_create_works=no],
1514                                 [dnl assume yes
1515                                 ol_cv_pthread_create_works=yes])])
1516
1517                         if test $ol_cv_pthread_create_works = no ; then
1518                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1519                         fi
1520
1521                         ol_replace_broken_yield=no
1522 dnl                     case "$target" in
1523 dnl                     *-*-linux*) 
1524 dnl                             AC_CHECK_FUNCS(nanosleep)
1525 dnl                             ol_replace_broken_yield=yes
1526 dnl                     ;;
1527 dnl                     esac
1528
1529                         if test $ol_replace_broken_yield = yes ; then
1530                                 AC_DEFINE([REPLACE_BROKEN_YIELD],1,
1531                                         [define if sched_yield yields the entire process])
1532                         fi
1533
1534                         dnl Check if select causes an yield
1535                         if test $ol_with_yielding_select = auto ; then
1536                                 AC_CACHE_CHECK([if select yields when using pthreads],
1537                                         ol_cv_pthread_select_yields,[
1538                                 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1539 #include <sys/types.h>
1540 #include <sys/time.h>
1541 #include <unistd.h>
1542 #include <pthread.h>
1543 #ifndef NULL
1544 #define NULL (void*) 0
1545 #endif
1546
1547 static int fildes[2];
1548
1549 static void *task(p)
1550         void *p;
1551 {
1552         int i;
1553         struct timeval tv;
1554
1555         fd_set rfds;
1556
1557         tv.tv_sec=10;
1558         tv.tv_usec=0;
1559
1560         FD_ZERO(&rfds);
1561         FD_SET(fildes[0], &rfds);
1562
1563         /* we're not interested in any fds */
1564         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1565
1566         if(i < 0) {
1567                 perror("select");
1568                 exit(10);
1569         }
1570
1571         exit(0); /* if we exit here, the select blocked the whole process */
1572 }
1573
1574 int main(argc, argv)
1575         int argc;
1576         char **argv;
1577 {
1578         pthread_t t;
1579
1580         /* create a pipe to select */
1581         if(pipe(&fildes[0])) {
1582                 perror("select");
1583                 exit(1);
1584         }
1585
1586 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1587         (void) pthread_setconcurrency(2);
1588 #else
1589 #ifdef HAVE_THR_SETCONCURRENCY
1590         /* Set Solaris LWP concurrency to 2 */
1591         thr_setconcurrency(2);
1592 #endif
1593 #endif
1594
1595 #if HAVE_PTHREADS < 6
1596         pthread_create(&t, pthread_attr_default, task, NULL);
1597 #else
1598         pthread_create(&t, NULL, task, NULL);
1599 #endif
1600
1601         /* make sure task runs first */
1602 #ifdef HAVE_THR_YIELD
1603         thr_yield();
1604 #elif defined( HAVE_SCHED_YIELD )
1605         sched_yield();
1606 #elif defined( HAVE_PTHREAD_YIELD )
1607         pthread_yield();
1608 #endif
1609
1610         exit(2);
1611 }]])],[ol_cv_pthread_select_yields=no],[ol_cv_pthread_select_yields=yes],[ol_cv_pthread_select_yields=cross])])
1612
1613                                 if test $ol_cv_pthread_select_yields = cross ; then
1614                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1615                                 fi
1616
1617                                 if test $ol_cv_pthread_select_yields = yes ; then
1618                                         ol_with_yielding_select=yes
1619                                 fi
1620                         fi
1621
1622                         dnl restore flags
1623                         CPPFLAGS="$save_CPPFLAGS"
1624                         LIBS="$save_LIBS"
1625                 else
1626                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1627                 fi
1628         fi
1629
1630         if test $ol_with_threads = posix ; then
1631                 AC_MSG_ERROR([could not locate POSIX Threads])
1632         fi
1633         ;;
1634 esac
1635
1636 case $ol_with_threads in auto | yes | mach)
1637
1638         dnl check for Mach CThreads
1639         AC_CHECK_HEADERS(mach/cthreads.h cthreads.h)
1640         if test $ac_cv_header_mach_cthreads_h = yes ; then
1641                 ol_with_threads=found
1642
1643                 dnl check for cthreads support in current $LIBS
1644                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1645
1646                 if test $ol_link_threads = no ; then
1647                         dnl try -all_load
1648                         dnl this test needs work
1649                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1650                                 [ol_cv_cthread_all_load], [
1651                                 dnl save the flags
1652                                 save_LIBS="$LIBS"
1653                                 LIBS="-all_load $LIBS"
1654                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mach/cthreads.h>]], [[
1655                                         cthread_fork((void *)0, (void *)0);
1656                                         ]])],[ol_cv_cthread_all_load=yes],[ol_cv_cthread_all_load=no])
1657                                 dnl restore the LIBS
1658                                 LIBS="$save_LIBS"
1659                         ])
1660
1661                         if test $ol_cv_cthread_all_load = yes ; then
1662                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1663                                 ol_link_threads=mach
1664                                 ol_with_threads=found
1665                         fi
1666                 fi
1667
1668         elif test $ac_cv_header_cthreads_h = yes ; then
1669                 dnl Hurd variant of Mach Cthreads
1670                 dnl uses <cthreads.h> and -lthreads
1671
1672                 ol_with_threads=found
1673  
1674                 dnl save the flags
1675                 save_LIBS="$LIBS"
1676                 LIBS="$LIBS -lthreads"
1677                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1678                 LIBS="$save_LIBS"
1679
1680                 if test $ol_link_threads = yes ; then
1681                         LTHREAD_LIBS="-lthreads"
1682                         ol_link_threads=mach
1683                         ol_with_threads=found
1684                 else
1685                         AC_MSG_ERROR([could not link with Mach CThreads])
1686                 fi
1687
1688         elif test $ol_with_threads = mach ; then
1689                 AC_MSG_ERROR([could not locate Mach CThreads])
1690         fi
1691
1692         if test $ol_link_threads = mach ; then
1693                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1694                         [define if you have Mach Cthreads])
1695         elif test $ol_with_threads = found ; then
1696                 AC_MSG_ERROR([could not link with Mach CThreads])
1697         fi
1698         ;;
1699 esac
1700
1701 case $ol_with_threads in auto | yes | pth)
1702
1703         AC_CHECK_HEADERS(pth.h)
1704
1705         if test $ac_cv_header_pth_h = yes ; then
1706                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1707
1708                 if test $have_pth = yes ; then
1709                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1710                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1711                         ol_link_threads=pth
1712                         ol_with_threads=found
1713
1714                         if test $ol_with_yielding_select = auto ; then
1715                                 ol_with_yielding_select=yes
1716                         fi
1717                 fi
1718         fi
1719         ;;
1720 esac
1721
1722 case $ol_with_threads in auto | yes | lwp)
1723
1724         dnl check for SunOS5 LWP
1725         AC_CHECK_HEADERS(thread.h synch.h)
1726         if test $ac_cv_header_thread_h = yes &&
1727            test $ac_cv_header_synch_h = yes ; then
1728                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1729
1730                 if test $have_thr = yes ; then
1731                         AC_DEFINE(HAVE_THR,1,
1732                                 [if you have Solaris LWP (thr) package])
1733                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1734                         ol_link_threads=thr
1735
1736                         if test $ol_with_yielding_select = auto ; then
1737                                 ol_with_yielding_select=yes
1738                         fi
1739
1740                         dnl Check for setconcurreny functions
1741                         AC_CHECK_FUNCS( \
1742                                 thr_setconcurrency \
1743                                 thr_getconcurrency \
1744                         )
1745                 fi
1746         fi
1747         ;;
1748 esac
1749
1750 if test $ol_with_yielding_select = yes ; then
1751         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1752                 [define if select implicitly yields])
1753 fi
1754
1755 if test $ol_with_threads = manual ; then
1756         dnl User thinks he can manually configure threads.
1757         ol_link_threads=yes
1758
1759         AC_MSG_WARN([thread defines and link options must be set manually])
1760
1761         AC_CHECK_HEADERS(pthread.h sched.h)
1762         AC_CHECK_FUNCS(sched_yield pthread_yield)
1763         OL_HEADER_LINUX_THREADS
1764
1765         AC_CHECK_HEADERS(mach/cthreads.h)
1766         AC_CHECK_HEADERS(thread.h synch.h)
1767 fi
1768
1769 if test $ol_link_threads != no && test $ol_link_threads != nt ; then
1770         dnl needed to get reentrant/threadsafe versions
1771         dnl
1772         AC_DEFINE(REENTRANT,1)
1773         AC_DEFINE(_REENTRANT,1)
1774         AC_DEFINE(THREAD_SAFE,1)
1775         AC_DEFINE(_THREAD_SAFE,1)
1776         AC_DEFINE(THREADSAFE,1)
1777         AC_DEFINE(_THREADSAFE,1)
1778         AC_DEFINE(_SGI_MP_SOURCE,1)
1779
1780         dnl The errno declaration may dependent upon _REENTRANT.
1781         dnl If it does, we must link with thread support.
1782         AC_CACHE_CHECK([for thread specific errno],
1783                 [ol_cv_errno_thread_specific], [
1784                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[errno = 0;]])],[ol_cv_errno_thread_specific=yes],[ol_cv_errno_thread_specific=no])
1785         ])
1786
1787         dnl The h_errno declaration may dependent upon _REENTRANT.
1788         dnl If it does, we must link with thread support.
1789         AC_CACHE_CHECK([for thread specific h_errno],
1790                 [ol_cv_h_errno_thread_specific], [
1791                 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])
1792         ])
1793
1794         if test $ol_cv_errno_thread_specific != yes ||
1795            test $ol_cv_h_errno_thread_specific != yes ; then
1796                 LIBS="$LTHREAD_LIBS $LIBS"
1797                 LTHREAD_LIBS=""
1798         fi
1799
1800 dnl When in thread environment, use 
1801 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1802 dnl                     func_r(...);
1803 dnl             #else
1804 dnl             #       if defined( HAVE_THREADS ) 
1805 dnl                             /* lock */
1806 dnl             #       endif
1807 dnl                             func(...);
1808 dnl             #       if defined( HAVE_THREADS ) 
1809 dnl                             /* unlock */
1810 dnl             #       endif
1811 dnl             #endif
1812 dnl
1813 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1814 dnl             _POSIX_REENTRANT_FUNCTIONS
1815 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1816 dnl             _POSIX_THREADSAFE_FUNCTIONS
1817 dnl
1818 dnl             and is currently defined in <ldap_pvt_thread.h>
1819 dnl
1820 dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
1821 dnl 
1822 dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1823 dnl LDAP_R_COMPILE is defined.  ie:
1824 dnl             #ifdef LDAP_R_COMPILE
1825 dnl             #       include <ldap_pvt_thread.h>
1826 dnl             #endif
1827 dnl
1828 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1829 dnl specifically for compiling the threadsafe version of
1830 dnl     the ldap library (-lldap_r).
1831 dnl             
1832 dnl     dnl check for reentrant/threadsafe functions
1833 dnl     dnl
1834 dnl     dnl note: these should only be used when linking
1835 dnl     dnl             with $LTHREAD_LIBS
1836 dnl     dnl
1837 dnl     save_CPPFLAGS="$CPPFLAGS"
1838 dnl     save_LIBS="$LIBS"
1839 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1840 dnl     AC_CHECK_FUNCS( \
1841 dnl             gmtime_r \
1842 dnl             gethostbyaddr_r gethostbyname_r \
1843 dnl             feof_unlocked unlocked_feof \
1844 dnl             putc_unlocked unlocked_putc \
1845 dnl             flockfile ftrylockfile \
1846 dnl     )
1847 dnl     CPPFLAGS="$save_CPPFLAGS"
1848 dnl     LIBS="$save_LIBS"
1849 fi  
1850
1851 if test $ol_link_threads = no ; then
1852         if test $ol_with_threads = yes ; then
1853                 AC_MSG_ERROR([no suitable thread support])
1854         fi
1855
1856         if test $ol_with_threads = auto ; then
1857                 AC_MSG_WARN([no suitable thread support, disabling threads])
1858                 ol_with_threads=no
1859         fi
1860
1861         AC_DEFINE(NO_THREADS,1,
1862                 [define if you have (or want) no threads])
1863         LTHREAD_LIBS=""
1864         BUILD_THREAD=no
1865 else
1866         BUILD_THREAD=yes
1867 fi
1868
1869 if test $ol_link_threads != no ; then
1870         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1,
1871                 [define to 1 if library is thread safe])
1872 fi
1873
1874 dnl ----------------------------------------------------------------
1875 dnl Tests for reentrant functions necessary to build -lldap_r
1876 AC_CHECK_FUNCS(         \
1877         ctime_r                 \
1878         gmtime_r localtime_r \
1879         gethostbyname_r gethostbyaddr_r \
1880 )
1881
1882 if test "$ac_cv_func_ctime_r" = no ; then
1883         ol_cv_func_ctime_r_nargs=0
1884 else
1885         OL_FUNC_CTIME_R_NARGS
1886 dnl     OL_FUNC_CTIME_R_TYPE
1887 fi
1888
1889 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1890         OL_FUNC_GETHOSTBYNAME_R_NARGS
1891 else
1892         ol_cv_func_gethostbyname_r_nargs=0
1893 fi
1894  
1895 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1896         OL_FUNC_GETHOSTBYADDR_R_NARGS
1897 else
1898         ol_cv_func_gethostbyaddr_r_nargs=0
1899 fi
1900
1901 dnl ----------------------------------------------------------------
1902 ol_link_bdb=no 
1903
1904 if test $ol_enable_bdb/$ol_enable_hdb != no/no; then
1905         OL_BERKELEY_DB
1906
1907         if test $ol_cv_berkeley_db = no ; then
1908                 AC_MSG_ERROR(BDB/HDB: BerkeleyDB not available)
1909         fi
1910
1911         AC_DEFINE(HAVE_BERKELEY_DB,1,
1912                 [define this if Berkeley DB is available])
1913
1914         dnl $ol_cv_lib_db should be yes or -ldb
1915         dnl (it could be no, but that would be an error
1916         if test $ol_cv_lib_db != yes ; then
1917                 BDB_LIBS="$BDB_LIBS $ol_cv_lib_db"
1918         fi
1919
1920         SLAPD_LIBS="$SLAPD_LIBS \$(BDB_LIBS)"
1921
1922         ol_link_bdb=yes 
1923 fi
1924
1925 dnl ----------------------------------------------------------------
1926
1927 if test $ol_enable_dynamic = yes && test $enable_shared = yes ; then
1928         BUILD_LIBS_DYNAMIC=shared
1929         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
1930         LTSTATIC=""
1931 else
1932         BUILD_LIBS_DYNAMIC=static
1933         LTSTATIC="-static"
1934 fi
1935 AC_SUBST(LTSTATIC)dnl
1936
1937 dnl ----------------------------------------------------------------
1938 if test $ol_enable_wrappers != no ; then
1939         AC_CHECK_HEADERS(tcpd.h,[
1940                 AC_MSG_CHECKING([for TCP wrappers library])
1941                 save_LIBS="$LIBS"
1942                 LIBS="$LIBS -lwrap"
1943                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1944 #include <tcpd.h>
1945 int allow_severity = 0;
1946 int deny_severity  = 0;
1947
1948 struct request_info *req;
1949                 ]], [[
1950 hosts_access(req)
1951                 ]])],[AC_MSG_RESULT([-lwrap])
1952                 have_wrappers=yes
1953                 LIBS="$save_LIBS"],[
1954                 dnl try with -lnsl
1955                 LIBS="$LIBS -lnsl"
1956                 AC_TRY_LINK([
1957 #include <tcpd.h>
1958 int allow_severity = 0;
1959 int deny_severity  = 0;
1960
1961 struct request_info *req;
1962                 ],[
1963 hosts_access(req)
1964                 ],[AC_MSG_RESULT([-lwrap -lnsl])
1965                 have_wrappers=yes
1966                 LIBS="$save_LIBS -lnsl"],[
1967                 AC_MSG_RESULT(no)
1968                 have_wrappers=no
1969                 LIBS=$save_LIBS])])],[have_wrappers=no])
1970
1971         if test $have_wrappers = yes ; then
1972                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1973                 WRAP_LIBS="-lwrap"
1974         elif test $ol_enable_wrappers = yes ; then
1975                 AC_MSG_ERROR([could not find TCP wrappers, select apppropriate options or disable])
1976         else
1977                 AC_MSG_WARN([could not find TCP wrappers, support disabled])
1978                 WRAP_LIBS=""
1979         fi
1980 fi
1981
1982 dnl ----------------------------------------------------------------
1983 if test $ol_enable_syslog != no ; then
1984         AC_CHECK_FUNC(openlog)
1985         if test $ac_cv_func_openlog = no && test $ol_enable_syslog = yes; then
1986                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1987         fi
1988         ol_enable_syslog=$ac_cv_func_openlog
1989 fi
1990
1991 dnl ----------------------------------------------------------------
1992 dnl SQL
1993 ol_link_sql=no
1994 if test $ol_enable_sql != no ; then
1995         AC_CHECK_HEADERS(sql.h sqlext.h,[],[
1996                 AC_MSG_ERROR([could not locate SQL headers])
1997         ])
1998
1999         sql_LIBS="$LIBS"
2000         LIBS="$LTHREAD_LIBS $LIBS"
2001
2002         if test $ol_with_odbc = auto ; then
2003                 ol_with_odbc="iodbc unixodbc odbc32"
2004         fi
2005
2006         for odbc in $ol_with_odbc ; do
2007                 if test $ol_link_sql = no ; then
2008                         case $odbc in
2009                         iodbc)
2010                                 AC_CHECK_LIB(iodbc, SQLDriverConnect, [have_iodbc=yes], [have_iodbc=no])
2011                                 if test $have_iodbc = yes ; then
2012                                         ol_link_sql="-liodbc"
2013                                 fi
2014                                 ;;
2015
2016                         unixodbc)
2017                                 AC_CHECK_LIB(odbc, SQLDriverConnect, [have_odbc=yes], [have_odbc=no])
2018                                 if test $have_odbc = yes ; then
2019                                         ol_link_sql="-lodbc"
2020                                 fi
2021                                 ;;
2022
2023                         odbc32)
2024                                 AC_CHECK_LIB(odbc32, SQLDriverConnect, [have_odbc32=yes], [have_odbc32=no])
2025                                 
2026                                 dnl The windows API uses __stdcall which cannot be detected by AC_CHECK_LIB
2027                                 if test $have_odbc32 = no ; then
2028                                         AC_MSG_CHECKING([for SQLDriverConnect in -lodbc32 with windows.h])
2029                                         save_LIBS="$LIBS"
2030                                         LIBS="$LIBS -lodbc32"
2031                                         AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <windows.h>
2032                                         #include <sqlext.h>
2033                                                 ]], [[
2034                                                 SQLDriverConnect(NULL,NULL,NULL,0,NULL,0,NULL,0);
2035                                                 ]])],[have_odbc32=yes], [have_odbc32=no])
2036                                         LIBS="$save_LIBS"
2037                                         AC_MSG_RESULT($have_odbc32)
2038                                 fi
2039                                 
2040                                 if test $have_odbc32 = yes ; then
2041                                         ol_link_sql="-lodbc32"
2042                                 fi
2043                                 ;;
2044
2045                         *)
2046                                 AC_MSG_ERROR([unknown ODBC library])
2047                                 ;;
2048                         esac
2049                 fi
2050         done
2051
2052         LIBS="$sql_LIBS"
2053
2054         if test $ol_link_sql != no ; then
2055                 SLAPD_SQL_LIBS="$ol_link_sql"
2056
2057         elif test $ol_enable_sql != auto ; then
2058                 AC_MSG_ERROR([could not locate suitable ODBC library])
2059         fi
2060 fi
2061
2062 dnl ----------------------------------------------------------------
2063 dnl MySQL NDBapi
2064 dnl Note: uses C++, but we don't want to add C++ test overhead to
2065 dnl the rest of the libtool machinery.
2066 ol_link_ndb=no
2067 if test $ol_enable_ndb != no ; then
2068         AC_CHECK_PROG(MYSQL,mysql_config,yes)
2069         if test "$MYSQL" != yes ; then
2070                 AC_MSG_ERROR([could not locate mysql_config])
2071         fi
2072
2073         SQL_INC=`mysql_config --include`
2074         SLAPD_NDB_INCS="$SQL_INC $SQL_INC/storage/ndb $SQL_INC/storage/ndb/ndbapi"
2075
2076         save_CPPFLAGS="$CPPFLAGS"
2077         CPPFLAGS="$SLAPD_NDB_INCS"
2078         AC_MSG_CHECKING(for NdbApi.hpp)
2079         AC_PREPROC_IFELSE(
2080                 [AC_LANG_SOURCE([[#include <NdbApi.hpp>]])],
2081                         AC_MSG_RESULT(yes),
2082                         AC_MSG_ERROR([could not locate NdbApi headers])
2083         )
2084         CPPFLAGS="$save_CPPFLAGS"
2085
2086         SQL_LIB=`mysql_config --libs_r`
2087         SLAPD_NDB_LIBS="$SQL_LIB -lndbclient -lstdc++"
2088
2089         save_LDFLAGS="$LDFLAGS"
2090         save_LIBS="$LIBS"
2091         LDFLAGS="$SQL_LIB"
2092         AC_CHECK_LIB(ndbclient,ndb_init,[: ok],[
2093                 AC_MSG_ERROR([could not locate ndbclient library])
2094         ],[-lstdc++])
2095         LIBS="$save_LIBS"
2096         LDFLAGS="$save_LDFLAGS"
2097
2098         if test "$ol_enable_ndb" = yes ; then
2099                 SLAPD_LIBS="$SLAPD_LIBS \$(SLAPD_NDB_LIBS)"
2100         fi
2101 fi
2102
2103 dnl ----------------------------------------------------------------
2104 dnl WiredTiger
2105 ol_link_wt=no
2106 if test $ol_enable_wt != no ; then
2107         AC_CHECK_PROG(PKGCONFIG,pkg-config,yes)
2108         if test "$PKGCONFIG" != yes ; then
2109                 AC_MSG_ERROR([could not locate pkg-config])
2110         fi
2111         WT_INCS=`pkg-config --cflags wiredtiger`
2112         WT_LIBS=`pkg-config --libs wiredtiger`
2113
2114         save_CFLAGS="$CFLAGS"
2115         save_LDFLAGS="$LDFLAGS"
2116         CFLAGS="$WT_INCS"
2117         CPPFLAGS="$WT_INCS"
2118         LDFLAGS="$WT_LIBS"
2119         AC_CHECK_HEADERS([wiredtiger.h])
2120         AC_CHECK_LIB(wiredtiger,wiredtiger_version,[: ok],[
2121                 AC_MSG_ERROR([could not locate wiredtiger library])
2122         ])
2123         CFLAGS="$save_CFLAGS"
2124         CPPFLAGS="$save_CPPFLAGS"
2125         LDFLAGS="$save_LDFLAGS"
2126         SLAPD_LIBS="$SLAPD_LIBS \$(WT_LIBS)"
2127         ol_link_wt=yes
2128 fi
2129
2130 dnl ----------------------------------------------------------------
2131 dnl International Components for Unicode
2132 OL_ICU
2133 if test "$ol_icu" = no ; then
2134         AC_MSG_WARN([ICU not available])
2135 else
2136         ICU_LIBS="$ol_icu"
2137 fi
2138 dnl ----------------------------------------------------------------
2139 dnl
2140 dnl Check for Cyrus SASL
2141 dnl
2142 WITH_SASL=no
2143 ol_link_sasl=no
2144 ol_link_spasswd=no
2145 if test $ol_with_cyrus_sasl != no ; then
2146         AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
2147
2148         if test $ac_cv_header_sasl_sasl_h = yes ||
2149            test $ac_cv_header_sasl_h = yes; then
2150                 AC_CHECK_LIB(sasl2, sasl_client_init,
2151                         [ol_link_sasl="-lsasl2"],
2152                         [AC_CHECK_LIB(sasl, sasl_client_init,
2153                                 [ol_link_sasl="-lsasl"])])
2154         fi
2155
2156         if test $ol_link_sasl = no ; then
2157                 if test $ol_with_cyrus_sasl != auto ; then
2158                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2159                 else
2160                         AC_MSG_WARN([Could not locate Cyrus SASL])
2161                         AC_MSG_WARN([SASL authentication not supported!])
2162                         if test $ol_link_tls = no ; then
2163                                 AC_MSG_WARN([Strong authentication not supported!])
2164                         fi
2165                 fi
2166         else
2167                 OL_SASL_COMPAT
2168                 if test $ol_cv_sasl_compat = no ; then
2169                         ol_link_sasl=no
2170                         AC_MSG_ERROR([Cyrus SASL library located but is incompatible])
2171                 fi
2172
2173                 AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2174                 SASL_LIBS="$ol_link_sasl"
2175                 if test $ol_enable_spasswd != no ; then
2176                         ol_link_spasswd=yes
2177                 fi
2178
2179                 ac_save_LIBS="$LIBS"
2180                 LIBS="$LIBS $ol_link_sasl"
2181                 AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
2182                         [define if your SASL library has sasl_version()])])
2183                 LIBS="$ac_save_LIBS"
2184
2185                 WITH_SASL=yes
2186         fi
2187
2188 else
2189         AC_MSG_WARN([SASL authentication not supported!])
2190         if test $ol_link_tls = no ; then
2191                 AC_MSG_WARN([Strong authentication not supported!])
2192         fi
2193 fi
2194
2195 dnl ----------------------------------------------------------------
2196 dnl Check for entropy sources
2197 if test $cross_compiling != yes && test "$ac_cv_mingw32" != yes ; then
2198         dev=no
2199         if test -r /dev/urandom ; then
2200                 dev="/dev/urandom";
2201         elif test -r /idev/urandom ; then
2202                 dev="/idev/urandom";
2203         elif test -r /dev/srandom ; then
2204                 dev="/dev/srandom";
2205         elif test -r /dev/random ; then
2206                 dev="/dev/random";
2207         elif test -r /idev/random ; then
2208                 dev="/idev/random";
2209         fi
2210
2211         if test $dev != no ; then
2212                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2213         fi
2214 fi
2215
2216 dnl ----------------------------------------------------------------
2217 dnl
2218 dnl Check for fetch URL support
2219 dnl             should be extended to support other fetch URL APIs
2220 dnl
2221 ol_link_fetch=no
2222 if test $ol_with_fetch != no ; then
2223         OL_LIB_FETCH
2224
2225         if test $ol_cv_lib_fetch != no ; then
2226                 LIBS="$LIBS $ol_link_fetch"
2227                 ol_link_fetch=freebsd
2228
2229         elif test $ol_with_fetch != auto ; then
2230                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2231         fi 
2232 fi
2233
2234 dnl ----------------------------------------------------------------
2235 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2236 if test $ol_enable_crypt != no ; then
2237         save_LIBS="$LIBS"
2238         LIBS="$TLS_LIBS $LIBS"
2239
2240         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2241                 LIBS="$save_LIBS"
2242                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2243                         have_crypt=yes], [have_crypt=no])])
2244
2245         LIBS="$save_LIBS"
2246
2247         if test $have_crypt = yes ; then
2248                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2249         else
2250                 AC_MSG_WARN([could not find crypt])
2251                 if test $ol_enable_crypt = yes ; then
2252                         AC_MSG_ERROR([could not find crypt, select appropriate options or disable])
2253                 fi
2254
2255                 AC_MSG_WARN([disabling crypt support])
2256                 ol_enable_crypt=no
2257         fi
2258 fi
2259
2260 dnl ----------------------------------------------------------------
2261 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2262 if test $ol_enable_proctitle != no ; then
2263         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2264                 AC_CHECK_LIB(util, setproctitle,
2265                         [have_setproctitle=yes
2266                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2267                         [have_setproctitle=no
2268                         AC_LIBOBJ(setproctitle)
2269                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2270
2271         if test $have_setproctitle = yes ; then
2272                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2273                         [define if setproctitle(3) is available])
2274         fi
2275 fi
2276
2277 dnl ----------------------------------------------------------------
2278 if test $ol_enable_slp != no ; then
2279         AC_CHECK_HEADERS( slp.h )
2280
2281         if test $ac_cv_header_slp_h = yes ; then
2282                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2283                 if test $have_slp = yes ; then
2284                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2285                         SLAPD_SLP_LIBS=-lslp
2286                 fi
2287
2288         elif test $ol_enable_slp = yes ; then
2289                 AC_MSG_ERROR([SLP not found])
2290         fi
2291 fi
2292
2293 dnl ----------------------------------------------------------------
2294 dnl Checks for typedefs, structures, and compiler characteristics.
2295
2296 AC_CHECK_TYPE(mode_t, int)
2297 AC_CHECK_TYPE(off_t, long)
2298 AC_CHECK_TYPE(pid_t, int)
2299 AC_CHECK_TYPE(ssize_t, [signed int])
2300 AC_CHECK_TYPE(caddr_t,  [char *])
2301 AC_CHECK_TYPE(size_t, unsigned)
2302
2303 AC_CHECK_TYPES([long long])
2304 AC_CHECK_TYPES([ptrdiff_t])
2305
2306
2307 AC_CHECK_TYPE([socklen_t],,, [$ac_includes_default
2308 #ifdef HAVE_SYS_SOCKET_H
2309 #include <sys/socket.h>
2310 #endif])
2311
2312 dnl socklen_t-like type in accept(), default socklen_t or int:
2313 dnl - The OS might define socklen_t without using it.  POSIX moved from
2314 dnl   int to size_t to socklen_t, hoping to stay at a 32-bit type, and
2315 dnl   HP-UX now has selectors for what to use.
2316 dnl - On Solaris 2.8 the prototype has void *len, but the default is OK.
2317 AC_MSG_CHECKING([the type of arg 3 to accept()])
2318 AC_CACHE_VAL(ol_cv_type_ber_socklen_t, [
2319         set socklen_t int unsigned "unsigned long" long size_t
2320         test "$ac_cv_type_socklen_t" = yes || shift
2321         ol_cv_type_ber_socklen_t=$1 guessing="guessing "
2322         for lentype in "$@" ; do for addrtype in "struct sockaddr" void ; do
2323                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_includes_default
2324 #ifdef HAVE_SYS_SOCKET_H
2325 #include <sys/socket.h>
2326 #endif
2327 extern int accept(int s, $addrtype *ap, $lentype *lp);
2328 ], [
2329 accept(0, (struct sockaddr *) 0, ($lentype *) 0);
2330 ])], [ol_cv_type_ber_socklen_t=$lentype guessing= ; break 2])
2331         done ; done])
2332 AC_MSG_RESULT([$guessing$ol_cv_type_ber_socklen_t *])
2333 AC_DEFINE_UNQUOTED(ber_socklen_t, $ol_cv_type_ber_socklen_t,
2334         [Define to the type of arg 3 for `accept'.])
2335
2336 dnl Modules should use ber_socklen_t, not socklen_t.  Define socklen_t
2337 dnl for the time being anyway, for backwards compatibility.
2338 if test "$ac_cv_type_socklen_t" != yes; then
2339         AC_DEFINE_UNQUOTED([socklen_t], [$ol_cv_type_ber_socklen_t],
2340                 [Define like ber_socklen_t if <sys/socket.h> does not define.])
2341 fi
2342
2343
2344 AC_TYPE_SIGNAL
2345
2346 AC_CHECK_TYPE([sig_atomic_t],,
2347         [AC_DEFINE_UNQUOTED([sig_atomic_t], [int],
2348                 [Define to `int' if <signal.h> does not define.])],
2349         [$ac_includes_default
2350 #include <signal.h>
2351         ])
2352
2353 AC_TYPE_UID_T
2354
2355 AC_HEADER_TIME
2356 AC_STRUCT_TM
2357 AC_CHECK_MEMBERS([struct stat.st_blksize])
2358 AC_CHECK_MEMBERS([struct passwd.pw_gecos],,,[$ac_includes_default
2359 #include <pwd.h>])
2360 AC_CHECK_MEMBERS([struct passwd.pw_passwd],,,[$ac_includes_default
2361 #include <pwd.h>])
2362
2363 OL_C_UPPER_LOWER
2364 AC_C_CONST
2365 OL_C_VOLATILE
2366
2367 if test $cross_compiling = yes ; then
2368         AC_MSG_WARN([Crossing compiling... all bets are off!])
2369         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2370 else
2371         AC_C_BIGENDIAN
2372 fi
2373
2374 AC_CHECK_SIZEOF(short) 
2375 AC_CHECK_SIZEOF(int) 
2376 AC_CHECK_SIZEOF(long)
2377 AC_CHECK_SIZEOF(long long)
2378 AC_CHECK_SIZEOF(wchar_t)
2379
2380 if test "$ac_cv_sizeof_int" -lt 4 ; then
2381         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2382
2383         AC_DEFINE(LBER_INT_T,long,[define to 32-bit or greater integer type])
2384 else
2385         AC_DEFINE(LBER_INT_T,int,[define to 32-bit or greater integer type])
2386 fi
2387
2388 AC_DEFINE(LBER_LEN_T,long,[define to large integer type])
2389 AC_DEFINE(LBER_SOCKET_T,int,[define to socket descriptor type])
2390 AC_DEFINE(LBER_TAG_T,long,[define to large integer type])
2391
2392 dnl ----------------------------------------------------------------
2393 dnl Check for multiple precision support
2394 if test $ol_with_mp = longlong || test $ol_with_mp = auto ; then
2395         if test $ac_cv_sizeof_long_long -gt 4 ; then
2396                 ol_with_mp=longlong
2397                 AC_DEFINE(USE_MP_LONG_LONG,1,[define to use 'long long' for MP])
2398         elif test $ol_with_mp = longlong ; then
2399                 AC_MSG_ERROR([long long unusable for multiple precision])
2400         fi
2401 fi
2402 if test $ol_with_mp = long || test $ol_with_mp = auto ; then
2403         if test $ac_cv_sizeof_long -gt 4 ; then
2404                 ol_with_mp=long
2405                 AC_DEFINE(USE_MP_LONG,1,[define to use 'long' for MP])
2406         elif test $ol_with_mp = long ; then
2407                 AC_MSG_ERROR([long unusable for multiple precision])
2408         fi
2409 fi
2410 if test $ol_with_mp = bignum || test $ol_with_mp = auto ; then
2411         AC_CHECK_HEADERS(openssl/bn.h)
2412         AC_CHECK_HEADERS(openssl/crypto.h)
2413         if test "$ac_cv_header_openssl_bn_h" = "yes" &&
2414                 test "$ac_cv_header_openssl_crypto_h" = "yes" &&
2415                 test "$ol_with_tls" = "found" ; then
2416                 ol_with_mp=bignum
2417                 AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP])
2418         elif test $ol_with_mp = bignum ; then
2419                 AC_MSG_ERROR([bignum not available])
2420         fi
2421 fi
2422 if test $ol_with_mp = gmp || test $ol_with_mp = auto ; then
2423         AC_CHECK_HEADERS(gmp.h)
2424         AC_CHECK_LIB(gmp, __gmpz_add_ui)
2425         if test $ac_cv_header_gmp_h = yes && test $ac_cv_lib_gmp___gmpz_add_ui = yes ; then
2426                 AC_DEFINE(USE_MP_GMP,1,[define to use GMP for MP])
2427                 ol_with_mp=gmp
2428         elif test $ol_with_mp = gmp ; then
2429                 AC_MSG_ERROR([gmp not available])
2430         fi
2431 fi
2432 if test $ol_with_mp = auto ; then
2433         ol_with_mp=no
2434 fi
2435
2436 dnl ----------------------------------------------------------------
2437 dnl Checks for library functions.
2438 AC_FUNC_MEMCMP
2439
2440 if test $ac_cv_func_memcmp_working = no ; then
2441         AC_DEFINE(NEED_MEMCMP_REPLACEMENT,1,
2442                 [define if memcmp is not 8-bit clean or is otherwise broken])
2443 fi
2444
2445 AC_FUNC_STRFTIME
2446
2447 OL_FUNC_INET_ATON
2448
2449 dnl Check for NT specific routines
2450 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2451
2452 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2453         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2454 ])
2455
2456 AC_CHECK_FUNCS(vsnprintf _vsnprintf)
2457
2458 if test $ac_cv_func_vsnprintf = no -a $ac_cv_func__vsnprintf = yes ; then
2459         ac_cv_func_vsnprintf=yes
2460         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2461 fi
2462
2463 AC_FUNC_VPRINTF
2464
2465 if test $ac_cv_func_vprintf = yes ; then
2466         dnl check for vsnprintf
2467         AC_CHECK_FUNCS(snprintf vsnprintf)
2468 fi
2469
2470 AC_CHECK_FUNCS(                 \
2471         bcopy                   \
2472         closesocket             \
2473         chroot                  \
2474         endgrent                \
2475         endpwent                \
2476         fcntl                   \
2477         flock                   \
2478         fstat                   \
2479         getdtablesize           \
2480         geteuid                 \
2481         getgrgid                \
2482         gethostname             \
2483         getpassphrase           \
2484         getpwuid                \
2485         getpwnam                \
2486         getspnam                \
2487         gettimeofday            \
2488         initgroups              \
2489         inet_ntoa_b             \
2490         ioctl                   \
2491         lockf                   \
2492         memcpy                  \
2493         memmove                 \
2494         memrchr                 \
2495         mkstemp                 \
2496         mktemp                  \
2497         pipe                    \
2498         read                    \
2499         recv                    \
2500         recvfrom                \
2501         setpwfile               \
2502         setgid                  \
2503         setegid                 \
2504         setsid                  \
2505         setuid                  \
2506         seteuid                 \
2507         signal                  \
2508         strdup                  \
2509         strpbrk                 \
2510         strrchr                 \
2511         strsep                  \
2512         strstr                  \
2513         strtol                  \
2514         strtoul                 \
2515         strtoq                  \
2516         strtouq                 \
2517         strtoll                 \
2518         strtoull                \
2519         strspn                  \
2520         sysconf                 \
2521         waitpid                 \
2522         wait4                   \
2523         write                   \
2524         send                    \
2525         sendmsg                 \
2526         sendto                  \
2527 )
2528
2529 dnl We actually may need to replace more than this.
2530 AC_REPLACE_FUNCS(getopt getpeereid)
2531
2532 if test "$ac_cv_func_getopt" != yes; then
2533         LIBSRCS="$LIBSRCS getopt.c"
2534 fi
2535
2536 if test "$ac_cv_func_getpeereid" != yes; then
2537         AC_CHECK_FUNCS( getpeerucred )
2538         if test "$ac_cv_func_getpeerucred" != yes ; then
2539                 AC_CHECK_MEMBERS([struct msghdr.msg_accrightslen],,,
2540                         [$ac_includes_default
2541 #ifdef HAVE_SYS_SOCKET_H
2542 #include <sys/socket.h>
2543 #endif])
2544                 if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
2545                         AC_CHECK_MEMBERS([struct msghdr.msg_control],,,
2546                                 [$ac_includes_default
2547 #ifdef HAVE_SYS_SOCKET_H
2548 #include <sys/socket.h>
2549 #endif])
2550                 fi
2551                 AC_CHECK_MEMBERS([struct stat.st_fstype, struct stat.st_vfstype])
2552                 if test "$ac_cv_member_struct_stat_st_fstype" = yes; then
2553                         AC_COMPILE_IFELSE([struct stat st; char *ptr=st.st_fstype;],
2554                                 AC_DEFINE([HAVE_STRUCT_STAT_ST_FSTYPE_CHAR],1,[define to 1 if st_fstype is char *]),
2555                                 AC_DEFINE([HAVE_STRUCT_STAT_ST_FSTYPE_INT],1,[define to 1 if st_fstype is int]))
2556                 fi
2557         fi
2558         LIBSRCS="$LIBSRCS getpeereid.c"
2559 fi
2560
2561 if test "$ac_cv_func_snprintf" != yes ||
2562    test "$ac_cv_func_vsnprintf" != yes; then
2563         if test "$ac_cv_func_snprintf" != yes; then
2564                 AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2565         fi
2566         if test "$ac_cv_func_vsnprintf" != yes; then
2567                 AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2568         fi
2569 fi
2570
2571 dnl ----------------------------------------------------------------
2572 dnl Sort out defines
2573
2574 if test "$ol_enable_slapi" != no ; then
2575         dnl This check is done also if --enable-modules is used;
2576         dnl it is duplicated here, 'cause it'd be cached anyway
2577         AC_CHECK_HEADERS(ltdl.h)
2578
2579         if test $ac_cv_header_ltdl_h != yes ; then
2580                 AC_MSG_ERROR([could not locate <ltdl.h>])
2581         fi
2582         AC_CHECK_LIB(ltdl, lt_dlinit, [
2583                 SLAPI_LIBS=-lltdl
2584                 LIBSLAPI=slapi/libslapi.la
2585                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2586         ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2587
2588         AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2589 fi
2590
2591 if test "$ol_enable_debug" != no ; then
2592         if test "$ol_enable_debug" = traditional; then
2593                 AC_DEFINE(OLD_DEBUG,1,
2594                         [define to use the original debug style])
2595         fi
2596         AC_DEFINE(LDAP_DEBUG,1,
2597                 [define this to add debugging code])
2598 fi
2599 if test "$ol_enable_syslog" = yes ; then
2600         AC_DEFINE(LDAP_SYSLOG,1,
2601                 [define this to add syslog code])
2602 fi
2603 if test "$ol_enable_proctitle" != no ; then
2604         AC_DEFINE(LDAP_PROCTITLE,1,
2605                 [define this for LDAP process title support])
2606 fi
2607 if test "$ol_enable_referrals" != no ; then
2608         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION,
2609                 [define to LDAP VENDOR VERSION])
2610 fi
2611 if test "$ol_enable_local" != no; then
2612         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2613 fi
2614 if test "$ol_link_ipv6" != no; then
2615         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2616 fi
2617 if test "$ol_enable_cleartext" != no ; then
2618         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2619 fi
2620 if test "$ol_enable_crypt" != no ; then
2621         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2622 fi
2623 if test "$ol_link_spasswd" != no ; then
2624         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2625 fi
2626 if test "$ol_enable_rlookups" != no ; then
2627         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2628 fi
2629 if test "$ol_enable_aci" != no ; then
2630         if test $ol_enable_dynacl = no ; then
2631                 ol_enable_dynacl=yes
2632                 AC_MSG_WARN([ACIs need dynacl])
2633         fi
2634         if test "$ol_enable_aci" = mod ; then
2635                 MFLAG=SLAPD_MOD_DYNAMIC
2636                 dnl remove this after moving servers/slapd/aci.c in contrib/slapd-modules/acl
2637                 AC_MSG_ERROR([ACI build as dynamic module not supported (yet)])
2638         else 
2639                 MFLAG=SLAPD_MOD_STATIC
2640         fi
2641         WITH_ACI_ENABLED=$ol_enable_aci
2642         AC_DEFINE_UNQUOTED(SLAPD_ACI_ENABLED,$MFLAG,[define to support per-object ACIs])
2643 else
2644         WITH_ACI_ENABLED=no
2645 fi
2646 if test "$ol_enable_dynacl" != no ; then
2647         AC_DEFINE(SLAP_DYNACL,1,[define to support run-time loadable ACL])
2648 fi
2649
2650 if test "$ol_link_modules" != no ; then
2651         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2652         BUILD_SLAPD=yes
2653         SLAPD_MODULES_LDFLAGS="-dlopen self"
2654 fi
2655
2656 AC_DEFINE(SLAPD_MOD_STATIC,1,[statically linked module])
2657 AC_DEFINE(SLAPD_MOD_DYNAMIC,2,[dynamically linked module])
2658
2659 dnl back-monitor goes first (well, after back-config)
2660 if test "$ol_enable_monitor" != no ; then
2661         BUILD_SLAPD=yes
2662         BUILD_MONITOR=$ol_enable_monitor
2663         if test "$ol_enable_monitor" = mod ; then
2664                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-monitor"
2665                 MFLAG=SLAPD_MOD_DYNAMIC
2666         else
2667                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-monitor"
2668                 MFLAG=SLAPD_MOD_STATIC
2669         fi
2670         AC_DEFINE_UNQUOTED(SLAPD_MONITOR,$MFLAG,[define to support cn=Monitor backend])
2671 fi
2672
2673 if test "$ol_enable_bdb" != no ; then
2674         BUILD_SLAPD=yes
2675         BUILD_BDB=$ol_enable_bdb
2676         if test "$ol_enable_bdb" = mod ; then
2677                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-bdb"
2678                 MFLAG=SLAPD_MOD_DYNAMIC
2679         else
2680                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-bdb"
2681                 MFLAG=SLAPD_MOD_STATIC
2682         fi
2683         AC_DEFINE_UNQUOTED(SLAPD_BDB,$MFLAG,[define to support BDB backend])
2684 fi
2685
2686 if test "$ol_enable_dnssrv" != no ; then
2687         BUILD_SLAPD=yes
2688         BUILD_DNSSRV=$ol_enable_dnssrv
2689         if test "$ol_enable_dnssrv" = mod ; then
2690                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2691                 MFLAG=SLAPD_MOD_DYNAMIC
2692         else
2693                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2694                 MFLAG=SLAPD_MOD_STATIC
2695         fi
2696         AC_DEFINE_UNQUOTED(SLAPD_DNSSRV,$MFLAG,[define to support DNS SRV backend])
2697 fi
2698
2699 if test "$ol_enable_hdb" != no ; then
2700         BUILD_SLAPD=yes
2701         BUILD_HDB=$ol_enable_hdb
2702         if test "$ol_enable_hdb" = mod ; then
2703                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
2704                 MFLAG=SLAPD_MOD_DYNAMIC
2705         else
2706                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
2707                 MFLAG=SLAPD_MOD_STATIC
2708         fi
2709         AC_DEFINE_UNQUOTED(SLAPD_HDB,$MFLAG,[define to support HDB backend])
2710 fi
2711
2712 if test "$ol_enable_ldap" != no ; then
2713         BUILD_SLAPD=yes
2714         BUILD_LDAP=$ol_enable_ldap
2715         if test "$ol_enable_ldap" = mod ; then
2716                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2717                 MFLAG=SLAPD_MOD_DYNAMIC
2718         else
2719                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2720                 MFLAG=SLAPD_MOD_STATIC
2721         fi
2722         AC_DEFINE_UNQUOTED(SLAPD_LDAP,$MFLAG,[define to support LDAP backend])
2723 fi
2724
2725 if test "$ol_enable_mdb" != no ; then
2726         BUILD_SLAPD=yes
2727         BUILD_MDB=$ol_enable_mdb
2728         if test "$ol_enable_mdb" = mod ; then
2729                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-mdb"
2730                 MFLAG=SLAPD_MOD_DYNAMIC
2731         else
2732                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-mdb"
2733                 MFLAG=SLAPD_MOD_STATIC
2734         fi
2735         AC_DEFINE_UNQUOTED(SLAPD_MDB,$MFLAG,[define to support MDB backend])
2736 fi
2737
2738 if test "$ol_enable_meta" != no ; then
2739         BUILD_SLAPD=yes
2740         BUILD_META=$ol_enable_meta
2741         BUILD_REWRITE=yes
2742         if test "$ol_enable_meta" = mod ; then
2743                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2744                 MFLAG=SLAPD_MOD_DYNAMIC
2745         else
2746                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2747                 MFLAG=SLAPD_MOD_STATIC
2748         fi
2749         AC_DEFINE_UNQUOTED(SLAPD_META,$MFLAG,[define to support LDAP Metadirectory backend])
2750 fi
2751
2752 if test "$ol_enable_asyncmeta" != no ; then
2753         BUILD_SLAPD=yes
2754         BUILD_ASYNCMETA=$ol_enable_asyncmeta
2755         BUILD_REWRITE=yes
2756         if test "$ol_enable_asyncmeta" = mod ; then
2757                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-asyncmeta"
2758                 MFLAG=SLAPD_MOD_DYNAMIC
2759         else
2760                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-asyncmeta"
2761                 MFLAG=SLAPD_MOD_STATIC
2762         fi
2763         AC_DEFINE_UNQUOTED(SLAPD_ASYNCMETA,$MFLAG,[define to support LDAP Async Metadirectory backend])
2764 fi
2765
2766 if test "$ol_enable_ndb" != no ; then
2767         BUILD_SLAPD=yes
2768         BUILD_NDB=$ol_enable_ndb
2769         if test "$ol_enable_ndb" = mod ; then
2770                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ndb"
2771                 MFLAG=SLAPD_MOD_DYNAMIC
2772         else
2773                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ndb"
2774                 MFLAG=SLAPD_MOD_STATIC
2775         fi
2776         AC_DEFINE_UNQUOTED(SLAPD_NDB,$MFLAG,[define to support NDB backend])
2777 fi
2778
2779 if test "$ol_enable_null" != no ; then
2780         BUILD_SLAPD=yes
2781         BUILD_NULL=$ol_enable_null
2782         if test "$ol_enable_null" = mod ; then
2783                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2784                 MFLAG=SLAPD_MOD_DYNAMIC
2785         else
2786                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2787                 MFLAG=SLAPD_MOD_STATIC
2788         fi
2789         AC_DEFINE_UNQUOTED(SLAPD_NULL,$MFLAG,[define to support NULL backend])
2790 fi
2791
2792 if test "$ol_enable_passwd" != no ; then
2793         BUILD_SLAPD=yes
2794         BUILD_PASSWD=$ol_enable_passwd
2795         if test "$ol_enable_passwd" = mod ; then
2796                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2797                 MFLAG=SLAPD_MOD_DYNAMIC
2798         else
2799                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2800                 MFLAG=SLAPD_MOD_STATIC
2801         fi
2802         AC_DEFINE_UNQUOTED(SLAPD_PASSWD,$MFLAG,[define to support PASSWD backend])
2803 fi
2804
2805 if test "$ol_link_perl" != no ; then
2806         BUILD_SLAPD=yes
2807         BUILD_PERL=$ol_enable_perl
2808         if test "$ol_enable_perl" = mod ; then
2809                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2810                 MFLAG=SLAPD_MOD_DYNAMIC
2811         else
2812                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2813                 MFLAG=SLAPD_MOD_STATIC
2814         fi
2815         AC_DEFINE_UNQUOTED(SLAPD_PERL,$MFLAG,[define to support PERL backend])
2816 fi
2817
2818 if test "$ol_enable_relay" != no ; then
2819         BUILD_SLAPD=yes
2820         BUILD_RELAY=$ol_enable_relay
2821         if test "$ol_enable_relay" = mod ; then
2822                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-relay"
2823                 MFLAG=SLAPD_MOD_DYNAMIC
2824         else
2825                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-relay"
2826                 MFLAG=SLAPD_MOD_STATIC
2827         fi
2828         AC_DEFINE_UNQUOTED(SLAPD_RELAY,$MFLAG,[define to support relay backend])
2829 fi
2830
2831 if test "$ol_enable_shell" != no ; then
2832         if test "$ol_link_threads" != no ; then
2833                 AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
2834         fi
2835         BUILD_SLAPD=yes
2836         BUILD_SHELL=$ol_enable_shell
2837         if test "$ol_enable_shell" = mod ; then
2838                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-shell"
2839                 MFLAG=SLAPD_MOD_DYNAMIC
2840         else
2841                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-shell"
2842                 MFLAG=SLAPD_MOD_STATIC
2843         fi
2844         AC_DEFINE_UNQUOTED(SLAPD_SHELL,$MFLAG,[define to support SHELL backend])
2845 fi
2846
2847 if test "$ol_enable_sock" != no ; then
2848         BUILD_SLAPD=yes
2849         BUILD_SOCK=$ol_enable_sock
2850         if test "$ol_enable_sock" = mod ; then
2851                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sock"
2852                 MFLAG=SLAPD_MOD_DYNAMIC
2853         else
2854                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sock"
2855                 MFLAG=SLAPD_MOD_STATIC
2856         fi
2857         AC_DEFINE_UNQUOTED(SLAPD_SOCK,$MFLAG,[define to support SOCK backend])
2858 fi
2859
2860 if test "$ol_link_sql" != no ; then
2861         BUILD_SLAPD=yes
2862         BUILD_SQL=$ol_enable_sql
2863         if test "$ol_enable_sql" = mod; then
2864                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2865                 MFLAG=SLAPD_MOD_DYNAMIC
2866         else
2867                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2868                 MFLAG=SLAPD_MOD_STATIC
2869         fi
2870         AC_DEFINE_UNQUOTED(SLAPD_SQL,$MFLAG,[define to support SQL backend])
2871 fi
2872
2873 if test "$ol_link_wt" != no ; then
2874         BUILD_SLAPD=yes
2875         BUILD_WT=$ol_enable_wt
2876         if test "$ol_enable_wt" = mod; then
2877                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-wt"
2878                 MFLAG=SLAPD_MOD_DYNAMIC
2879         else
2880                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-wt"
2881                 MFLAG=SLAPD_MOD_STATIC
2882         fi
2883         AC_DEFINE_UNQUOTED(SLAPD_WT,$MFLAG,[define to support WiredTiger backend])
2884 fi
2885
2886 if test "$ol_enable_accesslog" != no ; then
2887         BUILD_ACCESSLOG=$ol_enable_accesslog
2888         if test "$ol_enable_accesslog" = mod ; then
2889                 MFLAG=SLAPD_MOD_DYNAMIC
2890                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS accesslog.la"
2891         else
2892                 MFLAG=SLAPD_MOD_STATIC
2893                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS accesslog.o"
2894         fi
2895         AC_DEFINE_UNQUOTED(SLAPD_OVER_ACCESSLOG,$MFLAG,[define for In-Directory Access Logging overlay])
2896 fi
2897
2898 if test "$ol_enable_auditlog" != no ; then
2899         BUILD_AUDITLOG=$ol_enable_auditlog
2900         if test "$ol_enable_auditlog" = mod ; then
2901                 MFLAG=SLAPD_MOD_DYNAMIC
2902                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS auditlog.la"
2903         else
2904                 MFLAG=SLAPD_MOD_STATIC
2905                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS auditlog.o"
2906         fi
2907         AC_DEFINE_UNQUOTED(SLAPD_OVER_AUDITLOG,$MFLAG,[define for Audit Logging overlay])
2908 fi
2909
2910 if test "$ol_enable_autoca" != no ; then
2911         BUILD_AUTOCA=$ol_enable_autoca
2912         if test "$ol_enable_autoca" = mod ; then
2913                 MFLAG=SLAPD_MOD_DYNAMIC
2914                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS autoca.la"
2915         else
2916                 MFLAG=SLAPD_MOD_STATIC
2917                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS autoca.o"
2918         fi
2919         AC_DEFINE_UNQUOTED(SLAPD_OVER_AUTOCA,$MFLAG,[define for Automatic Certificate Authority overlay])
2920 fi
2921
2922 if test "$ol_enable_collect" != no ; then
2923         BUILD_COLLECT=$ol_enable_collect
2924         if test "$ol_enable_collect" = mod ; then
2925                 MFLAG=SLAPD_MOD_DYNAMIC
2926                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS collect.la"
2927         else
2928                 MFLAG=SLAPD_MOD_STATIC
2929                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS collect.o"
2930         fi
2931         AC_DEFINE_UNQUOTED(SLAPD_OVER_COLLECT,$MFLAG,[define for Collect overlay])
2932 fi
2933
2934 if test "$ol_enable_constraint" != no ; then
2935         BUILD_CONSTRAINT=$ol_enable_constraint
2936         if test "$ol_enable_constraint" = mod ; then
2937                 MFLAG=SLAPD_MOD_DYNAMIC
2938                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS constraint.la"
2939         else
2940                 MFLAG=SLAPD_MOD_STATIC
2941                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS constraint.o"
2942         fi
2943         AC_DEFINE_UNQUOTED(SLAPD_OVER_CONSTRAINT,$MFLAG,[define for Attribute Constraint overlay])
2944 fi
2945
2946 if test "$ol_enable_dds" != no ; then
2947         BUILD_DDS=$ol_enable_dds
2948         if test "$ol_enable_dds" = mod ; then
2949                 MFLAG=SLAPD_MOD_DYNAMIC
2950                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dds.la"
2951         else
2952                 MFLAG=SLAPD_MOD_STATIC
2953                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dds.o"
2954         fi
2955         AC_DEFINE_UNQUOTED(SLAPD_OVER_DDS,$MFLAG,[define for Dynamic Directory Services overlay])
2956 fi
2957
2958 if test "$ol_enable_deref" != no ; then
2959         BUILD_DEREF=$ol_enable_deref
2960         if test "$ol_enable_deref" = mod ; then
2961                 MFLAG=SLAPD_MOD_DYNAMIC
2962                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS deref.la"
2963         else
2964                 MFLAG=SLAPD_MOD_STATIC
2965                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS deref.o"
2966         fi
2967         AC_DEFINE_UNQUOTED(SLAPD_OVER_DEREF,$MFLAG,[define for Dynamic Directory Services overlay])
2968 fi
2969
2970 if test "$ol_enable_dyngroup" != no ; then
2971         BUILD_DYNGROUP=$ol_enable_dyngroup
2972         if test "$ol_enable_dyngroup" = mod ; then
2973                 MFLAG=SLAPD_MOD_DYNAMIC
2974                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dyngroup.la"
2975         else
2976                 MFLAG=SLAPD_MOD_STATIC
2977                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dyngroup.o"
2978         fi
2979         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNGROUP,$MFLAG,[define for Dynamic Group overlay])
2980 fi
2981
2982 if test "$ol_enable_dynlist" != no ; then
2983         BUILD_DYNLIST=$ol_enable_dynlist
2984         if test "$ol_enable_dynlist" = mod ; then
2985                 MFLAG=SLAPD_MOD_DYNAMIC
2986                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dynlist.la"
2987         else
2988                 MFLAG=SLAPD_MOD_STATIC
2989                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dynlist.o"
2990         fi
2991         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay])
2992 fi
2993
2994 if test "$ol_enable_memberof" != no ; then
2995         BUILD_MEMBEROF=$ol_enable_memberof
2996         if test "$ol_enable_memberof" = mod ; then
2997                 MFLAG=SLAPD_MOD_DYNAMIC
2998                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS memberof.la"
2999         else
3000                 MFLAG=SLAPD_MOD_STATIC
3001                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS memberof.o"
3002         fi
3003         AC_DEFINE_UNQUOTED(SLAPD_OVER_MEMBEROF,$MFLAG,[define for Reverse Group Membership overlay])
3004 fi
3005
3006 if test "$ol_enable_ppolicy" != no ; then
3007         BUILD_PPOLICY=$ol_enable_ppolicy
3008         if test "$ol_enable_ppolicy" = mod ; then
3009                 MFLAG=SLAPD_MOD_DYNAMIC
3010                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS ppolicy.la"
3011         else
3012                 MFLAG=SLAPD_MOD_STATIC
3013                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS ppolicy.o"
3014         fi
3015         AC_DEFINE_UNQUOTED(SLAPD_OVER_PPOLICY,$MFLAG,[define for Password Policy overlay])
3016 fi
3017
3018 if test "$ol_enable_proxycache" != no ; then
3019         BUILD_PROXYCACHE=$ol_enable_proxycache
3020         if test "$ol_enable_proxycache" = mod ; then
3021                 MFLAG=SLAPD_MOD_DYNAMIC
3022                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS pcache.la"
3023         else
3024                 MFLAG=SLAPD_MOD_STATIC
3025                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS pcache.o"
3026         fi
3027         AC_DEFINE_UNQUOTED(SLAPD_OVER_PROXYCACHE,$MFLAG,[define for Proxy Cache overlay])
3028 fi
3029
3030 if test "$ol_enable_refint" != no ; then
3031         BUILD_REFINT=$ol_enable_refint
3032         if test "$ol_enable_refint" = mod ; then
3033                 MFLAG=SLAPD_MOD_DYNAMIC
3034                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS refint.la"
3035         else
3036                 MFLAG=SLAPD_MOD_STATIC
3037                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS refint.o"
3038         fi
3039         AC_DEFINE_UNQUOTED(SLAPD_OVER_REFINT,$MFLAG,[define for Referential Integrity overlay])
3040 fi
3041
3042 if test "$ol_enable_retcode" != no ; then
3043         BUILD_RETCODE=$ol_enable_retcode
3044         if test "$ol_enable_retcode" = mod ; then
3045                 MFLAG=SLAPD_MOD_DYNAMIC
3046                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS retcode.la"
3047         else
3048                 MFLAG=SLAPD_MOD_STATIC
3049                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS retcode.o"
3050         fi
3051         AC_DEFINE_UNQUOTED(SLAPD_OVER_RETCODE,$MFLAG,[define for Referential Integrity overlay])
3052 fi
3053
3054 if test "$ol_enable_rwm" != no ; then
3055         BUILD_REWRITE=yes
3056         BUILD_RWM=$ol_enable_rwm
3057         if test "$ol_enable_rwm" = mod ; then
3058                 MFLAG=SLAPD_MOD_DYNAMIC
3059                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS rwm.la"
3060         else
3061                 MFLAG=SLAPD_MOD_STATIC
3062                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS rwm_x.o"
3063         fi
3064         AC_DEFINE_UNQUOTED(SLAPD_OVER_RWM,$MFLAG,[define for Rewrite/Remap overlay])
3065 fi
3066
3067 if test "$ol_enable_seqmod" != no ; then
3068         BUILD_SEQMOD=$ol_enable_seqmod
3069         if test "$ol_enable_seqmod" = mod ; then
3070                 MFLAG=SLAPD_MOD_DYNAMIC
3071                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS seqmod.la"
3072         else
3073                 MFLAG=SLAPD_MOD_STATIC
3074                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS seqmod.o"
3075         fi
3076         AC_DEFINE_UNQUOTED(SLAPD_OVER_SEQMOD,$MFLAG,[define for Sequential Modify overlay])
3077 fi
3078
3079 if test "$ol_enable_sssvlv" != no ; then
3080         BUILD_SSSVLV=$ol_enable_sssvlv
3081         if test "$ol_enable_sssvlv" = mod ; then
3082                 MFLAG=SLAPD_MOD_DYNAMIC
3083                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS sssvlv.la"
3084         else
3085                 MFLAG=SLAPD_MOD_STATIC
3086                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS sssvlv.o"
3087         fi
3088         AC_DEFINE_UNQUOTED(SLAPD_OVER_SSSVLV,$MFLAG,[define for ServerSideSort/VLV overlay])
3089 fi
3090
3091 if test "$ol_enable_syncprov" != no ; then
3092         BUILD_SYNCPROV=$ol_enable_syncprov
3093         if test "$ol_enable_syncprov" = mod ; then
3094                 MFLAG=SLAPD_MOD_DYNAMIC
3095                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS syncprov.la"
3096         else
3097                 MFLAG=SLAPD_MOD_STATIC
3098                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS syncprov.o"
3099         fi
3100         AC_DEFINE_UNQUOTED(SLAPD_OVER_SYNCPROV,$MFLAG,[define for Syncrepl Provider overlay])
3101 fi
3102
3103 if test "$ol_enable_translucent" != no ; then
3104         BUILD_TRANSLUCENT=$ol_enable_translucent
3105         if test "$ol_enable_translucent" = mod ; then
3106                 MFLAG=SLAPD_MOD_DYNAMIC
3107                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS translucent.la"
3108         else
3109                 MFLAG=SLAPD_MOD_STATIC
3110                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS translucent.o"
3111         fi
3112         AC_DEFINE_UNQUOTED(SLAPD_OVER_TRANSLUCENT,$MFLAG,[define for Translucent Proxy overlay])
3113 fi
3114
3115 if test "$ol_enable_unique" != no ; then
3116         BUILD_UNIQUE=$ol_enable_unique
3117         if test "$ol_enable_unique" = mod ; then
3118                 MFLAG=SLAPD_MOD_DYNAMIC
3119                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS unique.la"
3120         else
3121                 MFLAG=SLAPD_MOD_STATIC
3122                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS unique.o"
3123         fi
3124         AC_DEFINE_UNQUOTED(SLAPD_OVER_UNIQUE,$MFLAG,[define for Attribute Uniqueness overlay])
3125 fi
3126
3127 if test "$ol_enable_valsort" != no ; then
3128         BUILD_VALSORT=$ol_enable_valsort
3129         if test "$ol_enable_valsort" = mod ; then
3130                 MFLAG=SLAPD_MOD_DYNAMIC
3131                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS valsort.la"
3132         else
3133                 MFLAG=SLAPD_MOD_STATIC
3134                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS valsort.o"
3135         fi
3136         AC_DEFINE_UNQUOTED(SLAPD_OVER_VALSORT,$MFLAG,[define for Value Sorting overlay])
3137 fi
3138
3139 if test "$ol_enable_rewrite" != no ; then
3140         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
3141         BUILD_REWRITE=yes
3142 fi
3143
3144 if test "$ol_enable_slapi" != no ; then
3145         AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
3146         BUILD_SLAPI=yes
3147         SLAPD_SLAPI_DEPEND=libslapi.a
3148 fi
3149
3150 dnl ----------------------------------------------------------------
3151
3152 dnl
3153 dnl For Windows build, we don't want to include -dlopen flags.
3154 dnl They hurt more than they help.
3155 dnl
3156
3157 if test "$ac_cv_mingw32" = yes -o $ol_cv_msvc = yes ; then
3158         PLAT=NT
3159         SLAPD_MODULES_LDFLAGS=
3160 else
3161         PLAT=UNIX
3162 fi
3163
3164 AC_SUBST(LIBSRCS)
3165 AC_SUBST(PLAT)
3166 AC_SUBST(WITH_SASL)
3167 AC_SUBST(WITH_TLS)
3168 AC_SUBST(WITH_MODULES_ENABLED)
3169 AC_SUBST(WITH_ACI_ENABLED)
3170 AC_SUBST(BUILD_THREAD)
3171 AC_SUBST(BUILD_LIBS_DYNAMIC)
3172
3173 AC_SUBST(BUILD_SLAPD)
3174 dnl slapi
3175   AC_SUBST(BUILD_SLAPI)
3176   AC_SUBST(SLAPD_SLAPI_DEPEND)
3177 dnl backends
3178   AC_SUBST(BUILD_BDB)
3179   AC_SUBST(BUILD_DNSSRV)
3180   AC_SUBST(BUILD_HDB)
3181   AC_SUBST(BUILD_LDAP)
3182   AC_SUBST(BUILD_MDB)
3183   AC_SUBST(BUILD_META)
3184   AC_SUBST(BUILD_ASYNCMETA)
3185   AC_SUBST(BUILD_MONITOR)
3186   AC_SUBST(BUILD_NDB)
3187   AC_SUBST(BUILD_NULL)
3188   AC_SUBST(BUILD_PASSWD)
3189   AC_SUBST(BUILD_RELAY)
3190   AC_SUBST(BUILD_PERL)
3191   AC_SUBST(BUILD_SHELL)
3192   AC_SUBST(BUILD_SOCK)
3193   AC_SUBST(BUILD_SQL)
3194   AC_SUBST(BUILD_WT)
3195 dnl overlays
3196   AC_SUBST(BUILD_ACCESSLOG)
3197   AC_SUBST(BUILD_AUDITLOG)
3198   AC_SUBST(BUILD_AUTOCA)
3199   AC_SUBST(BUILD_COLLECT)
3200   AC_SUBST(BUILD_CONSTRAINT)
3201   AC_SUBST(BUILD_DDS)
3202   AC_SUBST(BUILD_DENYOP)
3203   AC_SUBST(BUILD_DEREF)
3204   AC_SUBST(BUILD_DYNGROUP)
3205   AC_SUBST(BUILD_DYNLIST)
3206   AC_SUBST(BUILD_LASTMOD)
3207   AC_SUBST(BUILD_MEMBEROF)
3208   AC_SUBST(BUILD_PPOLICY)
3209   AC_SUBST(BUILD_PROXYCACHE)
3210   AC_SUBST(BUILD_REFINT)
3211   AC_SUBST(BUILD_RETCODE)
3212   AC_SUBST(BUILD_RWM)
3213   AC_SUBST(BUILD_SEQMOD)
3214   AC_SUBST(BUILD_SSSVLV)
3215   AC_SUBST(BUILD_SYNCPROV)
3216   AC_SUBST(BUILD_TRANSLUCENT)
3217   AC_SUBST(BUILD_UNIQUE)
3218   AC_SUBST(BUILD_VALSORT)
3219
3220 AC_SUBST(LDAP_LIBS)
3221 AC_SUBST(SLAPD_LIBS)
3222 AC_SUBST(BDB_LIBS)
3223 AC_SUBST(SLAPD_NDB_LIBS)
3224 AC_SUBST(SLAPD_NDB_INCS)
3225 AC_SUBST(LTHREAD_LIBS)
3226 AC_SUBST(LUTIL_LIBS)
3227 AC_SUBST(WRAP_LIBS)
3228
3229 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
3230 AC_SUBST(SLAPD_MODULES_LDFLAGS)
3231
3232 AC_SUBST(SLAPD_NO_STATIC)
3233 AC_SUBST(SLAPD_STATIC_BACKENDS)
3234 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
3235 AC_SUBST(SLAPD_STATIC_OVERLAYS)
3236 AC_SUBST(SLAPD_DYNAMIC_OVERLAYS)
3237
3238 AC_SUBST(PERL_CPPFLAGS)
3239 AC_SUBST(SLAPD_PERL_LDFLAGS)
3240 AC_SUBST(MOD_PERL_LDFLAGS)
3241
3242 AC_SUBST(KRB4_LIBS)
3243 AC_SUBST(KRB5_LIBS)
3244 AC_SUBST(SASL_LIBS)
3245 AC_SUBST(TLS_LIBS)
3246 AC_SUBST(MODULES_LIBS)
3247 AC_SUBST(SLAPI_LIBS)
3248 AC_SUBST(LIBSLAPI)
3249 AC_SUBST(AUTH_LIBS)
3250 AC_SUBST(ICU_LIBS)
3251
3252 AC_SUBST(SLAPD_SLP_LIBS)
3253 AC_SUBST(SLAPD_GMP_LIBS)
3254
3255 AC_SUBST(SLAPD_SQL_LDFLAGS)
3256 AC_SUBST(SLAPD_SQL_LIBS)
3257 AC_SUBST(SLAPD_SQL_INCLUDES)
3258
3259 AC_SUBST(WT_INCS)
3260 AC_SUBST(WT_LIBS)
3261
3262 dnl ----------------------------------------------------------------
3263 dnl final help output
3264 AC_ARG_WITH(xxinstall,[
3265 See INSTALL file for further details.])
3266
3267 dnl ----------------------------------------------------------------
3268 dnl final output
3269 dnl
3270
3271 AC_CONFIG_FILES([Makefile:build/top.mk:Makefile.in:build/dir.mk]
3272 [doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk]
3273 [doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk]
3274 [doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk]
3275 [doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk]
3276 [doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk]
3277 [doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk]
3278 [clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk]
3279 [clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk]
3280 [include/Makefile:build/top.mk:include/Makefile.in]
3281 [libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk]
3282 [libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk]
3283 [libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk]
3284 [libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk]
3285 [libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk]
3286 [libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk]
3287 [libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk]
3288 [servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk]
3289 [servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk]
3290 [servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk]
3291 [servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk]
3292 [servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk]
3293 [servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk]
3294 [servers/slapd/back-ldif/Makefile:build/top.mk:servers/slapd/back-ldif/Makefile.in:build/mod.mk]
3295 [servers/slapd/back-mdb/Makefile:build/top.mk:servers/slapd/back-mdb/Makefile.in:build/mod.mk]
3296 [servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk]
3297 [servers/slapd/back-asyncmeta/Makefile:build/top.mk:servers/slapd/back-asyncmeta/Makefile.in:build/mod.mk]
3298 [servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk]
3299 [servers/slapd/back-ndb/Makefile:build/top.mk:servers/slapd/back-ndb/Makefile.in:build/mod.mk]
3300 [servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk]
3301 [servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk]
3302 [servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk]
3303 [servers/slapd/back-relay/Makefile:build/top.mk:servers/slapd/back-relay/Makefile.in:build/mod.mk]
3304 [servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk]
3305 [servers/slapd/back-sock/Makefile:build/top.mk:servers/slapd/back-sock/Makefile.in:build/mod.mk]
3306 [servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk]
3307 [servers/slapd/back-wt/Makefile:build/top.mk:servers/slapd/back-wt/Makefile.in:build/mod.mk]
3308 [servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk]
3309 [servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk]
3310 [servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk]
3311 [tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk]
3312 [tests/run]
3313 [tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk])
3314
3315 AC_CONFIG_COMMANDS([default],[[
3316 chmod +x tests/run
3317 date > stamp-h
3318 BACKENDSC="servers/slapd/backends.c"
3319 echo "Making $BACKENDSC"
3320 rm -f $BACKENDSC
3321 cat > $BACKENDSC << ENDX
3322 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3323  *
3324  * Copyright 1998-2017 The OpenLDAP Foundation.
3325  * All rights reserved.
3326  *
3327  * Redistribution and use in source and binary forms, with or without
3328  * modification, are permitted only as authorized by the OpenLDAP
3329  * Public License.
3330  *
3331  * A copy of this license is available in the file LICENSE in the
3332  * top-level directory of the distribution or, alternatively, at
3333  * <http://www.OpenLDAP.org/license.html>.
3334  */
3335 /* This file is automatically generated by configure; please do not edit. */
3336
3337 #include "portable.h"
3338 #include "slap.h"
3339
3340 ENDX
3341 if test "${STATIC_BACKENDS}"; then
3342         for b in config ${STATIC_BACKENDS}; do
3343                 bb=`echo "${b}" | sed -e 's/back-//'`
3344                 cat >> $BACKENDSC << ENDX
3345 extern BI_init ${bb}_back_initialize;
3346 ENDX
3347         done
3348
3349         cat >> $BACKENDSC << ENDX
3350
3351 BackendInfo slap_binfo[] = {
3352 ENDX
3353
3354         for b in config ${STATIC_BACKENDS}; do
3355                 bb=`echo "${b}" | sed -e 's/back-//'`
3356                 echo "    Add ${bb} ..."
3357                 cat >> $BACKENDSC << ENDX
3358         { "${bb}", ${bb}_back_initialize },
3359 ENDX
3360         done
3361
3362         cat >> $BACKENDSC << ENDX
3363         { NULL, NULL },
3364 };
3365
3366 /* end of generated file */
3367 ENDX
3368 fi
3369 OVERLAYSC="servers/slapd/overlays/statover.c"
3370 echo "Making $OVERLAYSC"
3371 rm -f $OVERLAYSC
3372 cat > $OVERLAYSC << ENDX
3373 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3374  *
3375  * Copyright 1998-2017 The OpenLDAP Foundation.
3376  * All rights reserved.
3377  *
3378  * Redistribution and use in source and binary forms, with or without
3379  * modification, are permitted only as authorized by the OpenLDAP
3380  * Public License.
3381  *
3382  * A copy of this license is available in the file LICENSE in the
3383  * top-level directory of the distribution or, alternatively, at
3384  * <http://www.OpenLDAP.org/license.html>.
3385  */
3386 /* This file is automatically generated by configure; please do not edit. */
3387
3388 #include "portable.h"
3389 #include "slap.h"
3390
3391 ENDX
3392 if test "${STATIC_OVERLAYS}"; then
3393         for o in ${STATIC_OVERLAYS}; do
3394                 oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3395                 cat >> $OVERLAYSC << ENDX
3396 extern OV_init ${oo}_initialize;
3397 ENDX
3398         done
3399 fi
3400
3401 cat >> $OVERLAYSC << ENDX
3402
3403 OverlayInit slap_oinfo[] = {
3404 ENDX
3405
3406 if test "${STATIC_OVERLAYS}"; then
3407         for o in ${STATIC_OVERLAYS}; do
3408                 oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3409                 echo "    Add ${oo} ..."
3410                 cat >> $OVERLAYSC << ENDX
3411         { "${oo}", ${oo}_initialize },
3412 ENDX
3413         done
3414 fi
3415
3416         cat >> $OVERLAYSC << ENDX
3417         { NULL, NULL },
3418 };
3419
3420 /* end of generated file */
3421 ENDX
3422
3423 if test "${ol_cv_mkdep}" = no; then
3424         echo '(Do not "make depend"; we do not know how to build dependencies)'
3425 else
3426         echo 'Please run "make depend" to build dependencies'
3427 fi
3428 ]],[[
3429 STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS"
3430 STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS"
3431 ]])
3432 AC_OUTPUT