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