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