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