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