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