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