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