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