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