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