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