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