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