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