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