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