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