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