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