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