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