]> git.sur5r.net Git - openldap/blob - configure.in
Rework test suite to use run script.
[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_kerberos=${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                 PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e s/\ -lc\ //g -e s/\ -lc\$// `"
686                 if test x"$ol_with_perl_module" = "xstatic" ; then
687                         SLAPD_PERL_LDFLAGS="$PERL_LDFLAGS""
688                 else
689                         MOD_PERL_LDFLAGS="$PERL_LDFLAGS""
690                 fi
691                 dnl should check perl version
692                 ol_link_perl=yes
693         fi
694 fi
695
696 AC_PROG_CPP
697
698 dnl ----------------------------------------------------------------
699 dnl Cross compiling checks
700 if test $cross_compiling = yes -a $ol_enable_x_compile = yes; then
701         AC_MSG_WARN([cross compiling....  some functionality will be removed.])
702
703 elif test $cross_compiling = no -a $ol_enable_x_compile = yes; then
704         AC_MSG_WARN([programs compiled here do run here...])
705         AC_MSG_ERROR([  if not cross compiling, use --disable-x-compile.])
706
707 elif test $cross_compiling = yes -a $ol_enable_x_compile = no; then
708         AC_MSG_WARN([programs compiled here do not run here...])
709         AC_MSG_ERROR([  if cross compiling,  add --enable-x-compile.])
710 fi
711
712 dnl ----------------------------------------------------------------
713 dnl Checks for UNIX Variants
714 dnl AC_AIX
715 dnl AC_ISC_POSIX
716 dnl AC_MINIX
717
718 dnl ----------------------------------------------------------------
719 dnl Checks for system services
720 AC_CYGWIN
721 AC_MINGW32
722 AC_EXEEXT
723 AC_OBJEXT
724
725 AC_DEFINE_UNQUOTED(EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
726
727 dnl ----------------------------------------------------------------
728 dnl BeOS requires -lbe -lroot -lnet
729 AC_CHECK_LIB(be, be_app, [LIBS="$LIBS -lbe -lroot -lnet"], :, [-lroot -lnet])
730
731 dnl ----------------------------------------------------------------
732 dnl OpenLDAP requires STDC features
733 AM_PROG_CC_STDC
734 if test "X${am_cv_prog_cc_stdc}" = "Xno" ; then
735         AC_MSG_ERROR([OpenLDAP requires compiler to support STDC constructs.])
736 fi
737
738 dnl ----------------------------------------------------------------
739 dnl Check cc depend flags
740 OL_MKDEPEND
741 if test "${ol_cv_mkdep}" = no ; then
742         # this will soon become an error
743         AC_MSG_WARN([do not know how to generate dependencies])
744 fi
745
746 dnl ----------------------------------------------------------------
747 dnl Check for AIX security library
748 AC_CHECK_LIB(s, afopen, [
749         AUTH_LIBS=-ls
750         AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
751 ])
752
753 dnl ----------------------------------------------------------------
754 dnl Check for IBM OS/390
755 case "$target" in
756 *-ibm-openedition)
757         ac_cv_func_getopt=no
758         AC_DEFINE(BOTH_STRINGS_H,1,[define to use both <string.h> and <strings.h>])
759         ;;
760 esac
761
762 dnl ----------------------------------------------------------------
763 dnl Check for module support
764 ol_link_modules=no
765 if test $ol_enable_modules != no ; then
766         AC_CHECK_HEADERS(ltdl.h)
767
768         if test $ac_cv_header_ltdl_h = no ; then
769                 AC_MSG_ERROR([could not locate libtool ltdl.h])
770         fi
771
772         AC_CHECK_LIB(ltdl, lt_dlinit, [
773                 MODULES_LIBS=-lltdl
774                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
775         ])
776
777         if test "$ac_cv_lib_ltdl_lt_dlinit" = no ; then
778                 AC_MSG_ERROR([could not locate libtool -lltdl])
779         fi
780         ol_link_modules=yes
781 else
782         ol_with_bdb_module=static
783         ol_with_dnssrv_module=static
784         ol_with_hdb_module=static
785         ol_with_ldap_module=static
786         ol_with_ldbm_module=static
787         ol_with_meta_module=static
788         ol_with_monitor_module=static
789         ol_with_null_module=static
790         ol_with_passwd_module=static
791         ol_with_perl_module=static
792         ol_with_shell_module=static
793         ol_with_tcl_module=static
794         ol_with_sql_module=static
795 fi
796
797 dnl ----------------------------------------------------------------
798 dnl Checks for header files.
799 OL_HEADER_STDC
800
801 if test $ol_cv_header_stdc != yes; then
802         AC_MSG_WARN([could not locate Standard C compliant headers])
803 fi
804
805 AC_HEADER_DIRENT
806 AC_HEADER_SYS_WAIT
807 AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
808 if test $am_cv_sys_posix_termios = yes ; then
809         AC_DEFINE(HAVE_POSIX_TERMIOS,1,
810                 [define if you have POSIX termios])
811 fi
812
813 AC_CHECK_HEADERS(       \
814         arpa/inet.h             \
815         arpa/nameser.h  \
816         assert.h                \
817         conio.h                 \
818         crypt.h                 \
819         direct.h                \
820         errno.h                 \
821         fcntl.h                 \
822         filio.h                 \
823         getopt.h                \
824         grp.h                   \
825         io.h                    \
826         libutil.h               \
827         limits.h                \
828         locale.h                \
829         netinet/tcp.h   \
830         malloc.h                \
831         memory.h                \
832         psap.h                  \
833         pwd.h                   \
834         process.h               \
835         resolv.h                \
836         sgtty.h                 \
837         shadow.h                \
838         stddef.h                \
839         string.h                \
840         strings.h               \
841         sysexits.h              \
842         sys/file.h              \
843         sys/filio.h             \
844         sys/errno.h             \
845         sys/ioctl.h             \
846         sys/param.h             \
847         sys/resource.h  \
848         sys/select.h    \
849         sys/socket.h    \
850         sys/stat.h              \
851         sys/syslog.h    \
852         sys/time.h              \
853         sys/types.h             \
854         sys/ucred.h             \
855         sys/uio.h               \
856         syslog.h                \
857         termios.h               \
858         unistd.h                \
859         winsock.h               \
860         winsock2.h              \
861 )
862
863
864 dnl ----------------------------------------------------------------
865 dnl Checks for libraries
866
867 AC_CHECK_FUNC(dlopen, :, [AC_CHECK_LIB(dl, dlopen)])
868
869 dnl HP-UX requires -lV3
870 dnl this is not needed on newer versions of HP-UX
871 AC_CHECK_LIB(V3, sigset)
872
873 dnl The following is INTENTIONALLY scripted out because shell does not
874 dnl support variable names with the '@' character, which is what
875 dnl autoconf would try to generate if one merely used AC_SEARCH_LIBS
876 AC_MSG_CHECKING(for winsock)
877 save_LIBS="$LIBS"
878 for curlib in ws2_32 wsock32; do
879         LIBS="$LIBS -l$curlib"
880         AC_TRY_LINK([
881                         char socket@12();
882                         char select@20();
883                         char closesocket@4();
884                         char gethostname@8();
885                         ],
886                         [
887                         socket@12();
888                         select@20();
889                         closesocket@4();
890                         gethostname@8();
891                         ],
892                         have_winsock=yes, have_winsock=no)
893
894         if test $have_winsock = yes; then
895                 AC_DEFINE(HAVE_WINSOCK, 1, [define if you have winsock])
896                 ac_cv_func_socket=yes
897                 ac_cv_func_select=yes
898                 ac_cv_func_closesocket=yes
899                 ac_cv_func_gethostname=yes
900                 if test $curlib = ws2_32; then
901                         have_winsock=winsock2
902                         AC_DEFINE(HAVE_WINSOCK2, 1,
903                                   [define if you have winsock2])
904                 fi
905                 break
906         fi
907         LIBS="$save_LIBS"
908 done
909 AC_MSG_RESULT($have_winsock)
910
911 dnl Find socket()
912 dnl Likely combinations:
913 dnl             -lsocket [ -lnsl_s | -lnsl ]
914 dnl             -linet
915
916 AC_CHECK_FUNC(socket, :, [      
917 dnl hopefully we won't include too many libraries
918         AC_CHECK_LIB(socket, main)
919         AC_CHECK_LIB(net, main)
920         AC_CHECK_LIB(nsl_s, main)
921         AC_CHECK_LIB(nsl, main)
922         AC_CHECK_LIB(inet, socket)
923         AC_CHECK_LIB(gen, main)
924 ])
925
926 dnl require select
927 AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
928
929 if test "${ac_cv_header_winsock_h}" != yes; then
930         dnl Select arg types
931         dnl (if this detection becomes permenent, it and the select() detection
932         dnl should be done before the yielding select test) 
933         AC_FUNC_SELECT_ARGTYPES
934 fi
935
936 dnl check to see if system call automatically restart
937 dnl AC_SYS_RESTARTABLE_SYSCALLS
938
939 dnl ----------------------------------------------------------------
940 dnl require POSIX regex
941 AC_CHECK_HEADERS( regex.h )
942 if test "$ac_cv_header_regex_h" != yes ; then
943         AC_MSG_ERROR([POSIX regex.h required.])
944 fi
945 AC_SEARCH_LIBS(regfree, [regex gnuregex],
946         :, AC_MSG_ERROR([POSIX regex required.]))
947
948 OL_POSIX_REGEX
949 if test "$ol_cv_c_posix_regex" = no ; then
950         AC_MSG_ERROR([broken POSIX regex!])
951 fi
952
953 dnl ----------------------------------------------------------------
954 dnl UUID Support
955
956 have_uuid=no
957 AC_CHECK_HEADERS(sys/uuid.h)
958 if test $ac_cv_header_sys_uuid_h = yes ; then
959         save_LIBS="$LIBS"
960         AC_SEARCH_LIBS(uuid_to_str, uuid, [have_uuid=yes], :)
961         LIBS="$save_LIBS"
962
963         if test have_uuid = yes ; then
964                 AC_DEFINE(HAVE_UUID_TO_STR,1,
965                         [define if you have uuid_to_str()])
966
967                 test "$ac_cv_search_uuid_to_str" = "none required" || \
968                         SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_to_str"
969         fi
970 fi
971
972 dnl For windows, check for the need of RPCRT for UUID function support
973 if test $have_uuid = no ; then
974         AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
975         save_LIBS="$LIBS"
976         LIBS="$LIBS -lrpcrt4"
977         AC_TRY_LINK([
978                 char UuidCreate@4();
979                 char UuidToStringA@8();
980                 ],
981                 [
982                 UuidCreate@4();
983                 UuidToStringA@8();
984                 ],
985                 need_rpcrt=yes, need_rpcrt=no)
986         if test $need_rpcrt = yes; then
987                 SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
988         fi
989         LIBS="$save_LIBS"
990         AC_MSG_RESULT($need_rpcrt)
991 fi
992
993 dnl ----------------------------------------------------------------
994 dnl Check for resolver routines
995 dnl       need to check for both res_query and __res_query
996 dnl   need to check -lc, -lbind, and -lresolv
997 ol_link_dnssrv=no
998 AC_CHECK_FUNC(res_query,:)
999 if test $ac_cv_func_res_query = no ; then 
1000         AC_CHECK_FUNC(__res_query,:)
1001         ac_cv_func_res_query=$ac_cv_func___res_query
1002 fi
1003
1004 if test $ac_cv_func_res_query = no ; then 
1005         AC_CHECK_LIB(bind, res_query)
1006         ac_cv_func_res_query=$ac_cv_lib_bind_res_query
1007 fi
1008
1009 if test $ac_cv_func_res_query = no ; then 
1010         AC_CHECK_LIB(bind, __res_query)
1011         ac_cv_func_res_query=$ac_cv_lib_bind___res_query
1012 fi
1013
1014 if test $ac_cv_func_res_query = no ; then 
1015         AC_CHECK_LIB(resolv, res_query)
1016         ac_cv_func_res_query=$ac_cv_lib_resolv_res_query
1017 fi
1018
1019 if test $ac_cv_func_res_query = no ; then 
1020         AC_CHECK_LIB(resolv, __res_query)
1021         ac_cv_func_res_query=$ac_cv_lib_resolv___res_query
1022 fi
1023
1024 if test "$ac_cv_func_res_query" = yes ; then
1025         AC_DEFINE(HAVE_RES_QUERY,1,
1026                 [define if you have res_query()])
1027
1028         if test $ol_enable_dnssrv != no ; then
1029                 ol_link_dnssrv=yes
1030         fi
1031 fi
1032
1033 if test "$ol_enable_dnssrv" = yes -a "$ol_link_dnssrv" = no ; then
1034         AC_MSG_ERROR([DNSSRV requires res_query()])
1035 fi
1036
1037 dnl ----------------------------------------------------------------
1038 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1039 dnl PF_LOCAL may use getaddrinfo in available
1040 AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1041
1042 ol_link_ipv6=no
1043 if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
1044         if test $ol_enable_ipv6 = yes ; then
1045                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1046         fi
1047 elif test $ol_enable_ipv6 != no ; then
1048         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1049                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1050 #                       include <netinet/in.h>
1051 #                       ifdef INET6_ADDRSTRLEN
1052                                 __has_inet6_addrstrlen__;
1053 #                       endif
1054                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1055
1056
1057         AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1058                 AC_TRY_COMPILE([
1059 #include <sys/types.h>
1060 #include <sys/socket.h>
1061 ],[
1062                         struct sockaddr_storage ss;
1063 ],                      [ol_cv_struct_sockaddr_storage=yes],
1064                         [ol_cv_struct_sockaddr_storage=no])])
1065
1066         if test $ol_cv_inet6_addrstrlen = yes \
1067                 -a $ol_cv_struct_sockaddr_storage = yes ; then
1068                 ol_link_ipv6=yes
1069         elif test $ol_enable_ipv6 = yes \
1070                         -a $ol_cv_inet6_addrstrlen = no ; then
1071                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1072         elif test $ol_enable_ipv6 = yes \
1073                         -a $ol_cv_struct_sockaddr_storage = no ; then
1074                 AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1075         fi
1076 fi
1077
1078 if test $ol_enable_local != no ; then
1079         AC_CHECK_HEADERS( sys/un.h )
1080
1081         if test $ol_enable_local = auto ; then
1082                 ol_enable_local=$ac_cv_header_sys_un_h
1083         elif test $ac_cv_header_sys_un_h = no ; then
1084                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1085         fi
1086 fi
1087
1088 dnl ----------------------------------------------------------------
1089 dnl Kerberos
1090 ol_link_kbind=no
1091 ol_link_kpasswd=no
1092 ol_link_krb5=no
1093 ol_link_krb4=no
1094
1095 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1096         -o $ol_with_kerberos = k5 -o $ol_with_kerberos = k5only \
1097         -o $ol_with_kerberos = k425 ; then
1098
1099         AC_CHECK_HEADERS(krb5.h)
1100
1101         if test $ac_cv_header_krb5_h = yes ; then
1102                 dnl lazy check for Heimdal Kerberos
1103                 AC_CHECK_HEADERS(heim_err.h)
1104                 if test $ac_cv_header_heim_err_h = yes ; then
1105                         krb5_impl=heimdal
1106                 else
1107                         krb5_impl=mit
1108                 fi
1109
1110                 if test $krb5_impl = mit; then
1111                         AC_CHECK_LIB(k5crypto, main,
1112                                 [krb5crypto=k5crypto],
1113                                 [krb5crypto=crypto])
1114
1115                         AC_CHECK_LIB(krb5, main,
1116                                 [have_krb5=yes
1117                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
1118                                 [have_krb5=no],
1119                                 [-l$krb5crypto -lcom_err])
1120
1121                 elif test $krb5_impl = heimdal; then
1122                         AC_CHECK_LIB(des, main,
1123                                 [krb5crypto=des],
1124                                 [krb5crypto=crypto])
1125
1126                         AC_CHECK_LIB(krb5, main,
1127                                 [have_krb5=yes
1128                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err"],
1129                                 [have_krb5=no],
1130                                 [-l$krb5crypto -lasn1 -lroken -lcom_err])
1131
1132                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
1133                                 [define if you have HEIMDAL Kerberos])
1134
1135                 else
1136                         have_krb5=no
1137                         AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
1138                 fi
1139
1140                 if test $have_krb5 = yes ; then
1141                         ol_link_krb5=yes
1142
1143                         AC_DEFINE(HAVE_KRB5, 1,
1144                                 [define if you have Kerberos V])
1145
1146                         if test $ol_enable_kpasswd != no ; then
1147                                 ol_link_kpasswd=yes;
1148                         fi
1149
1150                         if test $ol_with_kerberos = k5only ; then
1151                                 ol_with_kerberos=found
1152                         fi
1153
1154                 elif test $ol_with_kerberos != auto ; then
1155                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1156                 fi
1157
1158         fi
1159 fi
1160
1161 if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
1162         $ol_with_kerberos = auto -o $ol_with_kerberos = k425 \) ; then
1163
1164         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1165
1166         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1167                 if test $krb5_impl = mit; then
1168                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1169                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1170                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1171
1172                 elif test $krb5_impl = heimdal; then
1173                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1174                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1175                                 [-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err])
1176
1177                 else
1178                         have_425=no
1179                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1180                 fi
1181
1182                 if test $have_k425 = yes ; then
1183                         ol_with_kerberos=found
1184                         ol_link_krb4=yes
1185
1186                         AC_DEFINE(HAVE_KRB425, 1,
1187                                 [define if you have Kerberos V with IV support])
1188                         AC_DEFINE(HAVE_KRB4, 1,
1189                                 [define if you have Kerberos IV])
1190
1191                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1192                                 [ol_cv_var_des_debug], [
1193                                 dnl save the flags
1194                                 save_LIBS="$LIBS"
1195                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1196                                 AC_TRY_LINK([
1197 #include <kerberosIV/krb.h>
1198 #include <kerberosIV/des.h>
1199 extern int des_debug;
1200 ],[
1201 des_debug = 1;
1202 ],                              ol_cv_var_des_debug=yes, ol_cv_var_des_debug=no)
1203                                 dnl restore the LIBS
1204                                 LIBS="$save_LIBS"
1205                         ])
1206
1207                         if test $ol_cv_var_des_debug = yes ; then
1208                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1209                                         [define if you have Kerberos des_debug])
1210                         fi
1211
1212                         LIBS="$save_LIBS"
1213                 fi
1214         fi
1215 fi
1216
1217 if test $ol_link_krb5 = yes ; then
1218         ol_with_kerberos=found
1219 fi
1220
1221 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1222         -o $ol_with_kerberos = k4 -o $ol_with_kerberos = kth ; then
1223
1224         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1225
1226         if test $ac_cv_header_krb_h = yes ; then
1227                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1228
1229                 if test $have_k4 = yes ; then
1230                         ol_with_kerberos=found
1231                         ol_link_krb4=yes
1232
1233                         AC_DEFINE(HAVE_KRB4, 1,
1234                                 [define if you have Kerberos IV])
1235
1236                         KRB4_LIBS="-lkrb -ldes"
1237
1238                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1239                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1240                                         [define if you have Kth Kerberos])
1241                         fi
1242                 fi
1243         fi
1244 fi
1245
1246 if test $ol_link_krb4 = yes -a $ol_enable_kpasswd != no ; then
1247         ol_link_kpasswd=yes
1248 fi
1249
1250 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
1251         ol_link_kbind=yes
1252
1253 elif test $ol_enable_kbind = yes ; then
1254         AC_MSG_ERROR([Kerberos IV detection failed])
1255 fi
1256
1257 if test $ol_link_krb4 = yes -o $ol_link_krb5 = yes ; then
1258         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1259
1260 elif test $ol_with_kerberos != auto -a $ol_with_kerberos != no ; then
1261         AC_MSG_ERROR([Kerberos detection failed])
1262 fi
1263
1264 dnl ----------------------------------------------------------------
1265 dnl TLS/SSL
1266 ol_link_tls=no
1267 if test $ol_with_tls != no ; then
1268         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1269         
1270         if test $ac_cv_header_openssl_ssl_h = yes \
1271                 -o $ac_cv_header_ssl_h = yes ; then
1272                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1273                         [have_ssleay=yes
1274                         need_rsaref=no],
1275                         [have_ssleay=no],
1276                         [-lcrypto])
1277                         
1278                 if test $have_ssleay = no ; then
1279                         AC_CHECK_LIB(ssl, SSL_library_init,
1280                                 [have_ssleay=yes
1281                                 need_rsaref=no], [have_ssleay=no],
1282                                 [-lcrypto])
1283                 fi
1284
1285                 if test $have_ssleay = no ; then
1286                         AC_CHECK_LIB(ssl, ssl3_accept, 
1287                                 [have_ssleay=yes
1288                                 need_rsaref=yes], [have_ssleay=no],
1289                                 [-lcrypto -lRSAglue -lrsaref])
1290                 fi
1291
1292                 if test $have_ssleay = yes ; then
1293                         ol_with_tls=found
1294                         ol_link_tls=yes
1295
1296                         AC_DEFINE(HAVE_SSLEAY, 1, 
1297                                 [define if you have SSLeay or OpenSSL])
1298
1299                         if test $need_rsaref = yes; then
1300                                 AC_DEFINE(HAVE_RSAREF, 1, 
1301                                         [define if you have RSAref])
1302
1303                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1304                         else
1305                                 TLS_LIBS="-lssl -lcrypto"
1306                         fi
1307                 fi
1308         fi
1309
1310 else
1311         AC_WARN([TLS data protection not supported!])
1312 fi
1313
1314 WITH_TLS=no
1315 if test $ol_link_tls = yes ; then
1316         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1317         WITH_TLS=yes
1318
1319 elif test $ol_with_tls = auto ; then
1320         AC_WARN([Could not locate TLS/SSL package])
1321         AC_WARN([TLS data protection not supported!])
1322
1323 elif test $ol_with_tls != no ; then
1324         AC_ERROR([Could not locate TLS/SSL package])
1325 fi
1326
1327 dnl ----------------------------------------------------------------
1328 dnl LAN Manger password checking requires DES from OpenSSL
1329 if test $ol_enable_lmpasswd != no; then
1330         if test $ol_link_tls != yes ; then
1331                 AC_ERROR([LAN Manager passwords require OpenSSL])
1332         fi
1333
1334         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1335 fi
1336
1337 dnl ----------------------------------------------------------------
1338 dnl Threads?
1339 ol_link_threads=no
1340
1341 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1342         -o $ol_with_threads = nt ; then
1343
1344         OL_NT_THREADS
1345
1346         if test "$ol_cv_nt_threads" = yes ; then
1347                 ol_link_threads=nt
1348                 ol_with_threads=found
1349                 ol_with_yielding_select=yes
1350
1351                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1352                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1353         fi
1354
1355         if test $ol_with_threads = nt ; then
1356                 AC_MSG_ERROR([could not locate NT Threads])
1357         fi
1358 fi
1359
1360 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1361         -o $ol_with_threads = posix ; then
1362
1363         AC_CHECK_HEADERS(pthread.h)
1364
1365         if test $ac_cv_header_pthread_h = yes ; then
1366                 OL_POSIX_THREAD_VERSION
1367
1368                 if test $ol_cv_pthread_version != 0 ; then
1369                         AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1370                                 [define to pthreads API spec revision])
1371                 else
1372                         AC_MSG_ERROR([unknown pthread version])
1373                 fi
1374
1375                 # consider threads found
1376                 ol_with_threads=found
1377
1378                 OL_HEADER_LINUX_THREADS
1379                 OL_HEADER_GNU_PTH_PTHREAD_H
1380
1381                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1382                         AC_CHECK_HEADERS(sched.h)
1383                 fi
1384
1385                 dnl Now the hard part, how to link?
1386                 dnl
1387                 dnl currently supported checks:
1388                 dnl
1389                 dnl Check for no flags 
1390                 dnl     pthread_create() in $LIBS
1391                 dnl
1392                 dnl Check special pthread (final) flags
1393                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1394                 dnl     pthread_create() with -kthread (FreeBSD)
1395                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1396                 dnl     pthread_create() with -pthreads (?)
1397                 dnl     pthread_create() with -mthreads (AIX)
1398                 dnl     pthread_create() with -thread (?)
1399                 dnl
1400                 dnl Check pthread (final) libraries
1401                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1402                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1403                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1404                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1405                 dnl     pthread_create() in -lpthread (many)
1406                 dnl     pthread_create() in -lc_r (FreeBSD)
1407                 dnl
1408                 dnl Check pthread (draft4) flags (depreciated)
1409                 dnl     pthread_create() with -threads (OSF/1)
1410                 dnl
1411                 dnl Check pthread (draft4) libraries (depreciated)
1412                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1413                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1414                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1415                 dnl     pthread_create() in -lpthreads (many)
1416                 dnl
1417
1418                 dnl pthread_create in $LIBS
1419                 AC_CACHE_CHECK([for pthread_create in default libraries],
1420                         ol_cv_pthread_create,[
1421                 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1422                         [ol_cv_pthread_create=yes],
1423                         [ol_cv_pthread_create=no],
1424                         [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1425                                 [ol_cv_pthread_create=yes],
1426                                 [ol_cv_pthread_create=no])])])
1427
1428                 if test $ol_cv_pthread_create != no ; then
1429                         ol_link_threads=posix
1430                         ol_link_pthreads=""
1431                 fi
1432                 
1433 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1434                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1435                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1436                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1437                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1438                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1439
1440                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1441                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1442                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1443                         [ol_cv_pthread_lpthread_lmach_lexc])
1444 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1445 dnl                     [ol_cv_pthread_lpthread_lexc])
1446
1447                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1448                         [ol_cv_pthread_lib_lpthread_woff])
1449
1450                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1451                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1452
1453                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1454
1455                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1456                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1457                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1458                         [ol_cv_pthread_lpthreads_lmach_lexc])
1459                 OL_PTHREAD_TRY([-lpthreads -lexc],
1460                         [ol_cv_pthread_lpthreads_lexc])
1461
1462                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1463
1464                 if test $ol_link_threads != no ; then
1465                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1466
1467                         dnl save flags
1468                         save_CPPFLAGS="$CPPFLAGS"
1469                         save_LIBS="$LIBS"
1470                         LIBS="$LTHREAD_LIBS $LIBS"
1471
1472                         dnl All POSIX Thread (final) implementations should have
1473                         dnl sched_yield instead of pthread yield.
1474                         dnl check for both, and thr_yield for Solaris
1475                         AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1476
1477                         if test $ac_cv_func_sched_yield = no -a \
1478                                 $ac_cv_func_pthread_yield = no -a \
1479                                 $ac_cv_func_thr_yield = no ; then
1480                                 dnl Digital UNIX has sched_yield() in -lrt
1481                                 AC_CHECK_LIB(rt, sched_yield,
1482                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1483                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1484                                                 [Define if you have the sched_yield function.])
1485                                         ac_cv_func_sched_yield=yes],
1486                                         [ac_cv_func_sched_yield=no])
1487                         fi
1488                         if test $ac_cv_func_sched_yield = no -a \
1489                                 $ac_cv_func_pthread_yield = no -a \
1490                                 "$ac_cv_func_thr_yield" = no ; then
1491                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1492                         fi
1493
1494                         dnl Check functions for compatibility
1495                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1496
1497                         dnl Check for pthread_detach with <pthread.h> inclusion
1498                         dnl as it's symbol may have been mangled.
1499                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1500                                 [ol_cv_func_pthread_detach], [
1501                                 dnl save the flags
1502                                 AC_TRY_LINK([
1503 #include <pthread.h>
1504 #ifndef NULL
1505 #define NULL (void*)0
1506 #endif
1507 ],
1508                                         [pthread_detach(NULL);],
1509                                         [ol_cv_func_pthread_detach=yes],
1510                                         [ol_cv_func_pthread_detach=no])
1511                         ])
1512
1513                         if test $ol_cv_func_pthread_detach = no ; then
1514                                 AC_MSG_ERROR([could not locate pthread_detach()])
1515                         fi
1516
1517                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1518                                 [define if you have pthread_detach function])
1519
1520                         dnl Check for setconcurreny functions
1521                         AC_CHECK_FUNCS( \
1522                                 pthread_setconcurrency \
1523                                 pthread_getconcurrency \
1524                                 thr_setconcurrency \
1525                                 thr_getconcurrency \
1526                         )
1527
1528                         OL_SYS_LINUX_THREADS
1529                         OL_LINUX_THREADS
1530
1531                         if test $ol_cv_linux_threads = error; then
1532                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1533                         fi
1534
1535                         AC_CACHE_CHECK([if pthread_create() works],
1536                                 ol_cv_pthread_create_works,[
1537                         AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1538                                 [ol_cv_pthread_create_works=yes],
1539                                 [ol_cv_pthread_create_works=no],
1540                                 [dnl assume yes
1541                                 ol_cv_pthread_create_works=yes])])
1542
1543                         if test $ol_cv_pthread_create_works = no ; then
1544                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1545                         fi
1546
1547                         dnl Check if select causes an yield
1548                         if test $ol_with_yielding_select = auto ; then
1549                                 AC_CACHE_CHECK([if select yields when using pthreads],
1550                                         ol_cv_pthread_select_yields,[
1551                                 AC_TRY_RUN([
1552 #include <sys/types.h>
1553 #include <sys/time.h>
1554 #include <unistd.h>
1555 #include <pthread.h>
1556 #ifndef NULL
1557 #define NULL (void*) 0
1558 #endif
1559
1560 static int fildes[2];
1561
1562 static void *task(p)
1563         void *p;
1564 {
1565         int i;
1566         struct timeval tv;
1567
1568         fd_set rfds;
1569
1570         tv.tv_sec=10;
1571         tv.tv_usec=0;
1572
1573         FD_ZERO(&rfds);
1574         FD_SET(fildes[0], &rfds);
1575
1576         /* we're not interested in any fds */
1577         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1578
1579         if(i < 0) {
1580                 perror("select");
1581                 exit(10);
1582         }
1583
1584         exit(0); /* if we exit here, the select blocked the whole process */
1585 }
1586
1587 int main(argc, argv)
1588         int argc;
1589         char **argv;
1590 {
1591         pthread_t t;
1592
1593         /* create a pipe to select */
1594         if(pipe(&fildes[0])) {
1595                 perror("select");
1596                 exit(1);
1597         }
1598
1599 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1600         (void) pthread_setconcurrency(2);
1601 #else
1602 #ifdef HAVE_THR_SETCONCURRENCY
1603         /* Set Solaris LWP concurrency to 2 */
1604         thr_setconcurrency(2);
1605 #endif
1606 #endif
1607
1608 #if HAVE_PTHREADS < 6
1609         pthread_create(&t, pthread_attr_default, task, NULL);
1610 #else
1611         pthread_create(&t, NULL, task, NULL);
1612 #endif
1613
1614         /* make sure task runs first */
1615 #if HAVE_THR_YIELD
1616         thr_yield();
1617 #elif defined( HAVE_SCHED_YIELD )
1618         sched_yield();
1619 #elif defined( HAVE_PTHREAD_YIELD )
1620         pthread_yield();
1621 #endif
1622
1623         exit(2);
1624 }],
1625                                 [ol_cv_pthread_select_yields=no],
1626                                 [ol_cv_pthread_select_yields=yes],
1627                                 [ol_cv_pthread_select_yields=cross])])
1628
1629                                 if test $ol_cv_pthread_select_yields = cross ; then
1630                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1631                                 fi
1632
1633                                 if test $ol_cv_pthread_select_yields = yes ; then
1634                                         ol_with_yielding_select=yes
1635                                 fi
1636                         fi
1637
1638                         dnl restore flags
1639                         CPPFLAGS="$save_CPPFLAGS"
1640                         LIBS="$save_LIBS"
1641                 else
1642                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1643                 fi
1644         fi
1645
1646         if test $ol_with_threads = posix ; then
1647                 AC_MSG_ERROR([could not locate POSIX Threads])
1648         fi
1649 fi
1650
1651 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1652         -o $ol_with_threads = mach ; then
1653
1654         dnl check for Mach CThreads
1655         AC_CHECK_HEADERS(mach/cthreads.h cthreads.h)
1656         if test $ac_cv_header_mach_cthreads_h = yes ; then
1657                 ol_with_threads=found
1658
1659                 dnl check for cthreads support in current $LIBS
1660                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1661
1662                 if test $ol_link_threads = no ; then
1663                         dnl try -all_load
1664                         dnl this test needs work
1665                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1666                                 [ol_cv_cthread_all_load], [
1667                                 dnl save the flags
1668                                 save_LIBS="$LIBS"
1669                                 LIBS="-all_load $LIBS"
1670                                 AC_TRY_LINK([#include <mach/cthreads.h>],[
1671                                         cthread_fork((void *)0, (void *)0);
1672                                         ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no)
1673                                 dnl restore the LIBS
1674                                 LIBS="$save_LIBS"
1675                         ])
1676
1677                         if test $ol_cv_cthread_all_load = yes ; then
1678                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1679                                 ol_link_threads=mach
1680                                 ol_with_threads=found
1681                         fi
1682                 fi
1683
1684         elif test $ac_cv_header_cthreads_h = yes ; then
1685                 dnl Hurd variant of Mach Cthreads
1686                 dnl uses <cthreads.h> and -lthreads
1687
1688                 ol_with_threads=found
1689  
1690                 dnl save the flags
1691                 save_LIBS="$LIBS"
1692                 LIBS="$LIBS -lthreads"
1693                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1694                 LIBS="$save_LIBS"
1695
1696                 if test $ol_link_threads = yes ; then
1697                         LTHREAD_LIBS="-lthreads"
1698                         ol_link_threads=mach
1699                         ol_with_threads=found
1700                 else
1701                         AC_MSG_ERROR([could not link with Mach CThreads])
1702                 fi
1703
1704         elif test $ol_with_threads = mach ; then
1705                 AC_MSG_ERROR([could not locate Mach CThreads])
1706         fi
1707
1708         if test $ol_link_threads = mach ; then
1709                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1710                         [define if you have Mach Cthreads])
1711         elif test $ol_with_threads = found ; then
1712                 AC_MSG_ERROR([could not link with Mach CThreads])
1713         fi
1714 fi
1715
1716 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1717         -o $ol_with_threads = pth ; then
1718
1719         AC_CHECK_HEADERS(pth.h)
1720
1721         if test $ac_cv_header_pth_h = yes ; then
1722                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1723
1724                 if test $have_pth = yes ; then
1725                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1726                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1727                         ol_link_threads=pth
1728                         ol_with_threads=found
1729
1730                         if test $ol_with_yielding_select = auto ; then
1731                                 ol_with_yielding_select=yes
1732                         fi
1733                 fi
1734         fi
1735 fi
1736
1737 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1738         -o $ol_with_threads = lwp ; then
1739
1740         dnl check for SunOS5 LWP
1741         AC_CHECK_HEADERS(thread.h synch.h)
1742         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
1743                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1744
1745                 if test $have_thr = yes ; then
1746                         AC_DEFINE(HAVE_THR,1,
1747                                 [if you have Solaris LWP (thr) package])
1748                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1749                         ol_link_threads=thr
1750
1751                         if test $ol_with_yielding_select = auto ; then
1752                                 ol_with_yielding_select=yes
1753                         fi
1754
1755                         dnl Check for setconcurreny functions
1756                         AC_CHECK_FUNCS( \
1757                                 thr_setconcurrency \
1758                                 thr_getconcurrency \
1759                         )
1760                 fi
1761         fi
1762
1763         dnl check for SunOS4 LWP
1764         AC_CHECK_HEADERS(lwp/lwp.h)
1765         if test $ac_cv_header_lwp_lwp_h = yes ; then
1766                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1767
1768                 if test $have_lwp = yes ; then
1769                         AC_DEFINE(HAVE_LWP,1,
1770                                 [if you have SunOS LWP package])
1771                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1772                         ol_link_threads=lwp
1773
1774                         if test $ol_with_yielding_select = auto ; then
1775                                 ol_with_yielding_select=no
1776                         fi
1777                 fi
1778         fi
1779 fi
1780
1781 if test $ol_with_yielding_select = yes ; then
1782         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1783                 [define if select implicitly yields])
1784 fi
1785
1786 if test $ol_with_threads = manual ; then
1787         dnl User thinks he can manually configure threads.
1788         ol_link_threads=yes
1789
1790         AC_MSG_WARN([thread defines and link options must be set manually])
1791
1792         AC_CHECK_HEADERS(pthread.h sched.h)
1793         AC_CHECK_FUNCS(sched_yield pthread_yield)
1794         OL_HEADER_LINUX_THREADS
1795
1796         AC_CHECK_HEADERS(mach/cthreads.h)
1797         AC_CHECK_HEADERS(lwp/lwp.h)
1798         AC_CHECK_HEADERS(thread.h synch.h)
1799 fi
1800
1801 if test $ol_link_threads != no -a $ol_link_threads != nt ; then  
1802         dnl needed to get reentrant/threadsafe versions
1803         dnl
1804         AC_DEFINE(REENTRANT,1)
1805         AC_DEFINE(_REENTRANT,1)
1806         AC_DEFINE(THREAD_SAFE,1)
1807         AC_DEFINE(_THREAD_SAFE,1)
1808         AC_DEFINE(THREADSAFE,1)
1809         AC_DEFINE(_THREADSAFE,1)
1810         AC_DEFINE(_SGI_MP_SOURCE,1)
1811
1812         dnl The errno declaration may dependent upon _REENTRANT.
1813         dnl If it does, we must link with thread support.
1814         AC_CACHE_CHECK([for thread specific errno],
1815                 [ol_cv_errno_thread_specific], [
1816                 AC_TRY_LINK([#include <errno.h>], [errno = 0;],
1817                         [ol_cv_errno_thread_specific=yes],
1818                         [ol_cv_errno_thread_specific=no])
1819         ])
1820
1821         dnl The h_errno declaration may dependent upon _REENTRANT.
1822         dnl If it does, we must link with thread support.
1823         AC_CACHE_CHECK([for thread specific h_errno],
1824                 [ol_cv_h_errno_thread_specific], [
1825                 AC_TRY_LINK([#include <netdb.h>], [h_errno = 0;],
1826                         [ol_cv_h_errno_thread_specific=yes],
1827                         [ol_cv_h_errno_thread_specific=no])
1828         ])
1829
1830         if test $ol_cv_errno_thread_specific != yes \
1831                 -o $ol_cv_h_errno_thread_specific != yes ; then
1832                 LIBS="$LTHREAD_LIBS $LIBS"
1833                 LTHREAD_LIBS=""
1834         fi
1835
1836 dnl When in thread environment, use 
1837 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1838 dnl                     func_r(...);
1839 dnl             #else
1840 dnl             #       if defined( HAVE_THREADS ) 
1841 dnl                             /* lock */
1842 dnl             #       endif
1843 dnl                             func(...);
1844 dnl             #       if defined( HAVE_THREADS ) 
1845 dnl                             /* unlock */
1846 dnl             #       endif
1847 dnl             #endif
1848 dnl
1849 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1850 dnl             _POSIX_REENTRANT_FUNCTIONS
1851 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1852 dnl             _POSIX_THREADSAFE_FUNCTIONS
1853 dnl
1854 dnl             and is currently defined in <ldap_pvt_thread.h>
1855 dnl
1856 dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
1857 dnl 
1858 dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1859 dnl LDAP_R_COMPILE is defined.  ie:
1860 dnl             #ifdef LDAP_R_COMPILE
1861 dnl             #       include <ldap_pvt_thread.h>
1862 dnl             #endif
1863 dnl
1864 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1865 dnl specifically for compiling the threadsafe version of
1866 dnl     the ldap library (-lldap_r).
1867 dnl             
1868 dnl     dnl check for reentrant/threadsafe functions
1869 dnl     dnl
1870 dnl     dnl note: these should only be used when linking
1871 dnl     dnl             with $LTHREAD_LIBS
1872 dnl     dnl
1873 dnl     save_CPPFLAGS="$CPPFLAGS"
1874 dnl     save_LIBS="$LIBS"
1875 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1876 dnl     AC_CHECK_FUNCS( \
1877 dnl             gmtime_r \
1878 dnl             gethostbyaddr_r gethostbyname_r \
1879 dnl             feof_unlocked unlocked_feof \
1880 dnl             putc_unlocked unlocked_putc \
1881 dnl             flockfile ftrylockfile \
1882 dnl     )
1883 dnl     CPPFLAGS="$save_CPPFLAGS"
1884 dnl     LIBS="$save_LIBS"
1885 fi  
1886
1887 if test $ol_link_threads = no ; then
1888         if test $ol_with_threads = yes ; then
1889                 AC_MSG_ERROR([no suitable thread support])
1890         fi
1891
1892         if test $ol_with_threads = auto ; then
1893                 AC_MSG_WARN([no suitable thread support, disabling threads])
1894                 ol_with_threads=no
1895         fi
1896
1897         AC_DEFINE(NO_THREADS,1,
1898                 [define if you have (or want) no threads])
1899         LTHREAD_LIBS=""
1900 fi
1901
1902 if test $ol_link_threads != no ; then
1903         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
1904 fi
1905
1906 dnl ----------------------------------------------------------------
1907 dnl Tests for reentrant functions necessary to build -lldap_r
1908 AC_CHECK_FUNCS(         \
1909         ctime_r                 \
1910         gethostbyname_r gethostbyaddr_r \
1911 )
1912
1913 if test "$ac_cv_func_ctime_r" = no ; then
1914         ol_cv_func_ctime_r_nargs=0
1915 else
1916         OL_FUNC_CTIME_R_NARGS
1917 dnl     OL_FUNC_CTIME_R_TYPE
1918 fi
1919
1920 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1921         OL_FUNC_GETHOSTBYNAME_R_NARGS
1922 else
1923         ol_cv_func_gethostbyname_r_nargs=0
1924 fi
1925  
1926 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1927         OL_FUNC_GETHOSTBYADDR_R_NARGS
1928 else
1929         ol_cv_func_gethostbyaddr_r_nargs=0
1930 fi
1931
1932 dnl ----------------------------------------------------------------
1933 ol_link_ldbm=no 
1934
1935 if test $ol_with_ldbm_api = auto \
1936         -o $ol_with_ldbm_api = berkeley \
1937         -o $ol_with_ldbm_api = bcompat ; then
1938
1939         if test $ol_with_ldbm_api = bcompat; then \
1940                 OL_BERKELEY_COMPAT_DB
1941         else
1942                 OL_BERKELEY_DB
1943         fi
1944
1945         if test $ol_cv_berkeley_db != no ; then
1946                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1947                         [define this if Berkeley DB is available])
1948
1949                 ol_link_ldbm=berkeley
1950                 ol_with_ldbm_api=berkeley
1951
1952                 if test $ol_with_ldbm_type = hash ; then
1953                         AC_DEFINE(LDBM_USE_DBHASH,1,
1954                                 [define this to use DBHASH w/ LDBM backend])
1955                 else
1956                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1957                                 [define this to use DBBTREE w/ LDBM backend])
1958                 fi
1959
1960                 dnl $ol_cv_lib_db should be yes or -ldb
1961                 dnl (it could be no, but that would be an error
1962                 if test $ol_cv_lib_db != yes ; then
1963                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1964                 fi
1965         fi
1966 fi
1967
1968 if test $ol_enable_bdb = yes -a $ol_link_ldbm != berkeley ; then
1969         AC_MSG_ERROR(BDB: BerkeleyDB not available)
1970 elif test $ol_enable_bdb != no -a $ol_link_ldbm = berkeley ; then
1971         OL_BDB_COMPAT
1972
1973         if test $ol_cv_bdb_compat = yes ; then
1974                 ol_enable_bdb=yes
1975         elif test $ol_enable_bdb = yes ; then
1976                 AC_MSG_ERROR(BDB: BerkeleyDB version incompatible)
1977         else
1978                 ol_enable_bdb=no
1979         fi
1980 fi
1981 if test $ol_enable_hdb = yes -a $ol_link_ldbm != berkeley ; then
1982         AC_MSG_ERROR(HDB: BerkeleyDB not available)
1983 fi
1984
1985 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1986         AC_MSG_WARN(Could not find LDBM with BTREE support)
1987         ol_with_ldbm_api=none
1988 fi
1989
1990 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1991         OL_MDBM
1992
1993         if test $ol_cv_mdbm = yes ; then
1994                 ol_link_ldbm=mdbm
1995                 ol_with_ldbm_api=mdbm
1996                 if test $ol_cv_lib_mdbm != yes ; then
1997                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1998                 fi
1999         fi
2000 fi
2001
2002 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
2003         OL_GDBM
2004
2005         if test $ol_cv_gdbm = yes ; then
2006                 ol_link_ldbm=gdbm
2007                 ol_with_ldbm_api=gdbm
2008
2009                 if test $ol_cv_lib_gdbm != yes ; then
2010                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
2011                 fi
2012         fi
2013 fi
2014
2015 if test $ol_with_ldbm_api = ndbm ; then
2016         OL_NDBM
2017
2018         if test $ol_cv_ndbm = yes ; then
2019                 ol_link_ldbm=ndbm
2020                 ol_with_ldbm_api=ndbm
2021
2022                 if test $ol_cv_lib_ndbm != yes ; then
2023                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
2024                 fi
2025         fi
2026 fi
2027
2028 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
2029         AC_MSG_WARN(could not find suitable LDBM backend)
2030         if test $ol_enable_ldbm = yes ; then
2031                 AC_MSG_ERROR(select appropriate LDBM options or disable)
2032         fi
2033
2034         AC_MSG_WARN(disabling LDBM)
2035         ol_enable_ldbm=no
2036 fi
2037
2038 dnl ----------------------------------------------------------------
2039
2040 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
2041         BUILD_LIBS_DYNAMIC=shared
2042         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
2043         LTSTATIC=""
2044 else
2045         BUILD_LIBS_DYNAMIC=static
2046         LTSTATIC="-static"
2047 fi
2048 AC_SUBST(LTSTATIC)dnl
2049
2050 dnl ----------------------------------------------------------------
2051 if test $ol_enable_wrappers != no ; then
2052         AC_CHECK_HEADERS(tcpd.h,[
2053                 AC_MSG_CHECKING([for TCP wrappers library])
2054                 save_LIBS="$LIBS"
2055                 LIBS="$LIBS -lwrap"
2056                 AC_TRY_LINK([
2057 #include <tcpd.h>
2058 int allow_severity = 0;
2059 int deny_severity  = 0;
2060
2061 struct request_info *req;
2062                 ],[
2063 hosts_access(req)
2064                 ],[AC_MSG_RESULT([-lwrap])
2065                 have_wrappers=yes
2066                 LIBS="$save_LIBS"],[
2067                 dnl try with -lnsl
2068                 LIBS="$LIBS -lnsl"
2069                 AC_TRY_LINK([
2070 #include <tcpd.h>
2071 int allow_severity = 0;
2072 int deny_severity  = 0;
2073
2074 struct request_info *req;
2075                 ],[
2076 hosts_access(req)
2077                 ],[AC_MSG_RESULT([-lwrap -lnsl])
2078                 have_wrappers=yes
2079                 LIBS="$save_LIBS -lnsl"],[
2080                 AC_MSG_RESULT(no)
2081                 have_wrappers=no
2082                 LIBS=$save_LIBS])],[
2083                 have_wrappers=no])],[have_wrappers=no])
2084
2085         if test $have_wrappers = yes ; then
2086                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
2087                 WRAP_LIBS="-lwrap"
2088         elif test $ol_enable_wrappers = yes ; then
2089                 AC_MSG_ERROR([could not find TCP wrappers, select apppropriate options ore disable])
2090         else
2091                 AC_MSG_WARN([could not find TCP wrappers, support disabled])
2092                 WRAP_LIBS=""
2093         fi
2094 fi
2095
2096 dnl ----------------------------------------------------------------
2097 if test $ol_enable_syslog != no ; then
2098         AC_CHECK_FUNC(openlog)
2099         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
2100                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
2101         fi
2102         ol_enable_syslog=$ac_cv_func_openlog
2103 fi
2104
2105 dnl ----------------------------------------------------------------
2106 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
2107 dnl if test $ol_enable_dmalloc != no ; then
2108 dnl     AC_CHECK_HEADERS(dmalloc.h)
2109 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
2110 dnl fi
2111
2112 dnl ----------------------------------------------------------------
2113 dnl SQL
2114 ol_link_sql=no
2115 if test $ol_enable_sql != no ; then
2116         AC_CHECK_HEADERS(sql.h sqlext.h,[],[
2117                 AC_MSG_ERROR([could not locate SQL headers])
2118         ])
2119
2120         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
2121         if test $have_iodbc = yes ; then
2122                 ol_link_sql="-liodbc"
2123         else
2124                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
2125                 if test $have_odbc = yes ; then
2126                         ol_link_sql="-lodbc"
2127                 fi
2128         fi
2129
2130         if test $ol_link_sql != no ; then
2131                 SLAPD_SQL_LIBS="$ol_link_sql"
2132
2133         elif test $ol_enable_sql != auto ; then
2134                 AC_MSG_ERROR([could not locate suitable ODBC library])
2135         fi
2136 fi
2137
2138 dnl ----------------------------------------------------------------
2139 dnl TCL
2140 if test $ol_enable_tcl != no ; then
2141         AC_CHECK_HEADERS(tcl.h)
2142
2143         if test $ac_cv_header_tcl_h != yes ; then
2144                 have_tcl=no
2145         else
2146                 for lib in tcl tcl7.6 tcl8.0 tcl8.2 ; do
2147                         AC_CHECK_LIB($lib,main,
2148                           [have_tcl=yes
2149                            if test x"$ol_with_tcl_module" = "xstatic" ; then
2150                                         SLAPD_LIBS="$SLAPD_LIBS -l${lib}"
2151                            else
2152                                         MOD_TCL_LIB="-l${lib}"
2153                            fi;break],[have_tcl=no])
2154                 done
2155         fi
2156
2157         if test $have_tcl != yes ; then
2158                 AC_MSG_WARN([could not find -ltcl])
2159                 if test $ol_enable_tcl = yes ; then
2160                         AC_MSG_ERROR([could not find tcl, select appropriate options or disable])
2161                 fi
2162
2163                 ol_enable_tcl=no
2164         fi
2165 fi
2166
2167 dnl ----------------------------------------------------------------
2168 dnl ud needs termcap (should insert check here)
2169 ol_link_termcap=no
2170 AC_CHECK_HEADERS(termcap.h ncurses.h)
2171
2172 if test $ol_link_termcap = no ; then
2173         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
2174         if test $have_termcap = yes ; then
2175                 AC_DEFINE(HAVE_TERMCAP, 1, [define if you have -ltermcap])
2176                 ol_link_termcap=yes
2177                 TERMCAP_LIBS=-ltermcap
2178         fi
2179 fi
2180
2181 if test $ol_link_termcap = no ; then
2182         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
2183         if test $have_ncurses = yes ; then
2184                 AC_DEFINE(HAVE_NCURSES, 1, [define if you have -lncurses])
2185                 ol_link_termcap=yes
2186                 TERMCAP_LIBS=-lncurses
2187         fi
2188 fi
2189
2190 if test $ol_link_termcap = no ; then
2191         AC_DEFINE(NO_TERMCAP,1, [define if you have no termcap support])
2192         TERMCAP_LIBS=
2193 fi
2194
2195 dnl ----------------------------------------------------------------
2196 dnl
2197 dnl Check for Cyrus SASL
2198 dnl
2199 ol_link_sasl=no
2200 ol_link_spasswd=no
2201 if test $ol_with_cyrus_sasl != no ; then
2202         AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
2203
2204         if test $ac_cv_header_sasl_sasl_h = yes -o $ac_cv_header_sasl_h = yes; then
2205                 AC_CHECK_LIB(sasl2, sasl_client_init,
2206                         [ol_link_sasl="-lsasl2"],
2207                         [AC_CHECK_LIB(sasl, sasl_client_init,
2208                                 [ol_link_sasl="-lsasl"])])
2209         fi
2210
2211         if test $ol_link_sasl = no ; then
2212                 if test $ol_with_cyrus_sasl != auto ; then
2213                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2214                 else
2215                         AC_MSG_WARN([Could not locate Cyrus SASL])
2216                         AC_MSG_WARN([SASL authentication not supported!])
2217                         if test $ol_link_tls = no ; then
2218                                 AC_MSG_WARN([Strong authentication not supported!])
2219                         fi
2220                 fi
2221         else
2222                 OL_SASL_COMPAT
2223                 if test $ol_cv_sasl_compat = no ; then
2224                         ol_link_sasl=no
2225                         AC_MSG_ERROR([Cyrus SASL library located but incompatible])
2226                 fi
2227
2228                 AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2229                 SASL_LIBS="$ol_link_sasl"
2230                 if test $ol_enable_spasswd != no ; then
2231                         ol_link_spasswd=yes
2232                 fi
2233
2234                 ac_save_LIBS="$LIBS"
2235                 LIBS="$LIBS $ol_link_sasl"
2236                 AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
2237                         [define if your SASL library has sasl_version()])])
2238                 LIBS="$ac_save_LIBS"
2239         fi
2240
2241 else
2242         AC_MSG_WARN([SASL authentication not supported!])
2243         if test $ol_link_tls = no ; then
2244                 AC_MSG_WARN([Strong authentication not supported!])
2245         fi
2246 fi
2247
2248 dnl ----------------------------------------------------------------
2249 dnl Check for entropy sources
2250 if test $cross_compiling != yes -a "$ac_cv_mingw32" != yes ; then
2251         dev=no
2252         if test -r /dev/urandom ; then
2253                 dev="/dev/urandom";
2254         elif test -r /idev/urandom ; then
2255                 dev="/idev/urandom";
2256         elif test -r /dev/srandom ; then
2257                 dev="/dev/srandom";
2258         elif test -r /dev/random ; then
2259                 dev="/dev/random";
2260         elif test -r /idev/random ; then
2261                 dev="/idev/random";
2262         fi
2263
2264         if test $dev != no ; then
2265                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2266         fi
2267 fi
2268
2269 dnl ----------------------------------------------------------------
2270 dnl
2271 dnl Check for fetch URL support
2272 dnl             should be extended to support other fetch URL APIs
2273 dnl
2274 ol_link_fetch=no
2275 if test $ol_with_fetch != no ; then
2276         OL_LIB_FETCH
2277
2278         if test $ol_cv_lib_fetch != no ; then
2279                 LDIF_LIBS="$LDIF_LIBS $ol_link_fetch"
2280                 ol_link_fetch=freebsd
2281
2282         elif test $ol_with_fetch != auto ; then
2283                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2284         fi 
2285 fi
2286
2287 dnl ----------------------------------------------------------------
2288 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2289 if test $ol_enable_crypt != no ; then
2290         save_LIBS="$LIBS"
2291         LIBS="$TLS_LIBS $LIBS"
2292
2293         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2294                 LIBS="$save_LIBS"
2295                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2296                         have_crypt=yes], [have_crypt=no])])
2297
2298         LIBS="$save_LIBS"
2299
2300         if test $have_crypt = yes ; then
2301                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2302         else
2303                 AC_MSG_WARN(could not find crypt)
2304                 if test $ol_enable_crypt = yes ; then
2305                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
2306                 fi
2307
2308                 AC_MSG_WARN(disabling crypt support)
2309                 ol_enable_crypt=no
2310         fi
2311 fi
2312
2313 dnl ----------------------------------------------------------------
2314 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2315 if test $ol_enable_proctitle != no ; then
2316         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2317                 AC_CHECK_LIB(util, setproctitle,
2318                         [have_setproctitle=yes
2319                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2320                         [have_setproctitle=no
2321                         LIBOBJS="$LIBOBJS setproctitle.o"
2322                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2323
2324         if test $have_setproctitle = yes ; then
2325                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2326                         [define if setproctitle(3) is available])
2327         fi
2328 fi
2329
2330 dnl ----------------------------------------------------------------
2331 dnl Check for SLPv2 Compliant API Library
2332 if test $ol_enable_slp != no ; then
2333         AC_CHECK_HEADERS( slp.h )
2334
2335         if test $ac_cv_header_slp_h = yes ; then
2336                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2337                 if test $have_slp = yes ; then
2338                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2339                         SLAPD_SLP_LIBS=-lslp
2340                 fi
2341
2342         elif test $ol_enable_slp = yes ; then
2343                 AC_MSG_ERROR([SLP not found])
2344         fi
2345 fi
2346
2347 dnl ----------------------------------------------------------------
2348 dnl Checks for typedefs, structures, and compiler characteristics.
2349
2350 dnl Checks for long long
2351 AC_CACHE_CHECK([long long], ol_cv_type_long_long, [
2352         AC_TRY_COMPILE([], [long long x;],
2353                 [ol_cv_type_long_long=yes],
2354                 [ol_cv_type_long_long=no])])
2355 if test $ol_cv_type_long_long = yes; then
2356         AC_DEFINE(HAVE_LONG_LONG, 1, [define if you have 'long long'])
2357 fi
2358
2359 AC_TYPE_MODE_T
2360 AC_TYPE_OFF_T
2361 AC_TYPE_PID_T
2362 AM_TYPE_PTRDIFF_T
2363 AC_TYPE_SIGNAL
2364 AC_TYPE_SIZE_T
2365
2366 AC_CHECK_TYPE(ssize_t, [signed int])
2367 AC_CHECK_TYPE(caddr_t,  [char *])
2368
2369 OL_TYPE_SOCKLEN_T
2370 AC_STRUCT_ST_BLKSIZE
2371 AC_HEADER_TIME
2372 AC_STRUCT_TM
2373 AC_TYPE_UID_T
2374 OL_TYPE_SIG_ATOMIC_T
2375
2376 dnl AC_TYPE_GETGROUPS
2377
2378 OL_STRUCT_PASSWD_PW_GECOS
2379 OL_STRUCT_PASSWD_PW_PASSWD
2380
2381 OL_C_UPPER_LOWER
2382 AC_C_CONST
2383 OL_C_VOLATILE
2384
2385 if test $cross_compiling = yes ; then
2386         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2387 else
2388         AC_C_BIGENDIAN
2389 fi
2390
2391 AC_COMPILE_CHECK_SIZEOF(short) 
2392 AC_COMPILE_CHECK_SIZEOF(int) 
2393 AC_COMPILE_CHECK_SIZEOF(long)
2394
2395 if test "$ac_cv_sizeof_int" -lt 4 ; then
2396         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2397
2398         AC_DEFINE(LBER_INT_T,long)
2399 else
2400         AC_DEFINE(LBER_INT_T,int)
2401 fi
2402
2403 AC_DEFINE(LBER_LEN_T,long)
2404 AC_DEFINE(LBER_SOCKET_T,int)
2405 AC_DEFINE(LBER_TAG_T,long)
2406
2407 dnl ----------------------------------------------------------------
2408 dnl Checks for library functions.
2409 AC_FUNC_MEMCMP
2410 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2411 AC_FUNC_STRFTIME
2412 dnl AM_FUNC_STRTOD
2413
2414 OL_FUNC_INET_ATON
2415
2416 dnl Check for NT specific routines
2417 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2418
2419 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2420         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2421 ])
2422
2423 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2424         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2425 ])
2426
2427 AC_FUNC_VPRINTF
2428
2429 if test $ac_cv_func_vprintf = yes ; then
2430         dnl check for vsnprintf
2431         AC_CHECK_FUNCS(snprintf vsnprintf)
2432 fi
2433
2434 AC_CHECK_FUNCS(         \
2435         bcopy                   \
2436         closesocket             \
2437         chroot                  \
2438         endgrent                \
2439         endpwent                \
2440         fcntl                   \
2441         flock                   \
2442         fstat                   \
2443         getdtablesize   \
2444         getgrgid                \
2445         gethostname             \
2446         getpass                 \
2447         getpassphrase   \
2448         getpwuid                \
2449         getpwnam                \
2450         getspnam                \
2451         gettimeofday    \
2452         initgroups              \
2453         lockf                   \
2454         memcpy                  \
2455         memmove                 \
2456         mkstemp                 \
2457         mktemp                  \
2458         pipe                    \
2459         read                    \
2460         recv                    \
2461         recvfrom                \
2462         setpwfile               \
2463         setgid                  \
2464         setegid                 \
2465         setsid                  \
2466         setuid                  \
2467         seteuid                 \
2468         sigaction               \
2469         signal                  \
2470         sigset                  \
2471         strdup                  \
2472         strerror                \
2473         strpbrk                 \
2474         strrchr                 \
2475         strsep                  \
2476         strstr                  \
2477         strtol                  \
2478         strtoul                 \
2479         strtoq                  \
2480         strtouq                 \
2481         strtoll                 \
2482         strspn                  \
2483         sysconf                 \
2484         usleep                  \
2485         waitpid                 \
2486         wait4                   \
2487         write                   \
2488         send                    \
2489         sendmsg                 \
2490         sendto                  \
2491 )
2492
2493 dnl We actually may need to replace more than this.
2494 AC_REPLACE_FUNCS(getopt getpeereid)
2495
2496 if test "$ac_cv_func_getopt" != yes; then
2497         LIBSRCS="$LIBSRCS getopt.c"
2498 fi
2499 if test "$ac_cv_func_getpeereid" != yes; then
2500         OL_MSGHDR_MSG_ACCRIGHTS
2501         LIBSRCS="$LIBSRCS getpeereid.c"
2502 fi
2503 if test "$ac_cv_func_snprintf" != yes -o "$ac_cv_func_vsnprintf" != yes; then
2504         if test "$ac_cv_func_snprintf" != yes; then
2505                 AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2506         fi
2507         if test "$ac_cv_func_vsnprintf" != yes; then
2508                 AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2509         fi
2510 fi
2511
2512 dnl ----------------------------------------------------------------
2513 # Check Configuration
2514 OL_SYS_ERRLIST
2515
2516 dnl ----------------------------------------------------------------
2517 dnl Sort out defines
2518
2519 if test "$ol_enable_slapi" != no ; then
2520         dnl This check is donel also if --enable-modules is used;
2521         dnl it is duplicated here, 'cause it'd be cached anyway
2522         AC_CHECK_HEADERS(ltdl.h)
2523
2524         if test $ac_cv_header_ltdl_h != yes ; then
2525                 AC_MSG_ERROR([could not locate <ltdl.h>])
2526         fi
2527         AC_CHECK_LIB(ltdl, lt_dlinit, [
2528                 SLAPI_LIBS=-lltdl
2529                 LIBSLAPI=libslapi.a
2530                 LIBSLAPITOOLS=../libslapi.a
2531                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2532         ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2533
2534         AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2535 fi
2536
2537 if test "$ol_enable_debug" != no ; then
2538         AC_DEFINE(LDAP_DEBUG,1,
2539                 [define this to add debugging code])
2540 fi
2541 if test "$ol_enable_syslog" = yes ; then
2542         AC_DEFINE(LDAP_SYSLOG,1,
2543                 [define this to add syslog code])
2544 fi
2545 if test "$ol_link_kbind" != no ; then
2546         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2547 fi
2548 if test "$ol_enable_proctitle" != no ; then
2549         AC_DEFINE(LDAP_PROCTITLE,1,
2550                 [define this for LDAP process title support])
2551 fi
2552 if test "$ol_enable_referrals" != no ; then
2553         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2554 fi
2555 if test "$ol_enable_local" != no; then
2556         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2557 fi
2558 if test "$ol_link_ipv6" != no; then
2559         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2560 fi
2561 if test "$ol_enable_cleartext" != no ; then
2562         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2563 fi
2564 if test "$ol_enable_crypt" != no ; then
2565         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2566 fi
2567 if test "$ol_link_kpasswd" != no ; then
2568         AC_DEFINE(SLAPD_KPASSWD,1,[define to support Kerberos passwords])
2569 fi
2570 if test "$ol_link_spasswd" != no ; then
2571         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2572 fi
2573 if test "$ol_enable_multimaster" != no ; then
2574         AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2575 fi
2576 if test "$ol_enable_rlookups" != no ; then
2577         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2578 fi
2579 if test "$ol_enable_aci" != no ; then
2580         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2581 fi
2582
2583 if test "$ol_link_modules" != no ; then
2584         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2585         BUILD_SLAPD=yes
2586         SLAPD_MODULES_LDFLAGS="-dlopen self"
2587 fi
2588
2589 if test "$ol_enable_bdb" != no ; then
2590         AC_DEFINE(SLAPD_BDB,1,[define to support BDB backend])
2591         BUILD_SLAPD=yes
2592         BUILD_BDB=yes
2593         if test "$ol_with_bdb_module" != static ; then
2594                 AC_DEFINE(SLAPD_BDB_DYNAMIC,1,
2595                         [define to support dynamic BDB backend])
2596                 BUILD_BDB=mod
2597                 BUILD_BDB_DYNAMIC=shared
2598                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-bdb"
2599         else
2600                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-bdb"
2601         fi
2602 fi
2603
2604 if test "$ol_link_dnssrv" != no ; then
2605         AC_DEFINE(SLAPD_DNSSRV,1,[define to support DNS SRV backend])
2606         BUILD_SLAPD=yes
2607         BUILD_DNSSRV=yes
2608         if test "$ol_with_dnssrv_module" != static ; then
2609                 AC_DEFINE(SLAPD_DNSSRV_DYNAMIC,1,
2610                         [define to support dynamic DNS SRV backend])
2611                 BUILD_DNSSRV=mod
2612                 BUILD_DNSSRV_DYNAMIC=shared
2613                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2614         else
2615                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2616         fi
2617 fi
2618
2619 if test "$ol_enable_hdb" != no ; then
2620         AC_DEFINE(SLAPD_HDB,1,[define to support HDB backend])
2621         BUILD_SLAPD=yes
2622         BUILD_HDB=yes
2623         if test "$ol_with_hdb_module" != static ; then
2624                 AC_DEFINE(SLAPD_HDB_DYNAMIC,1,
2625                         [define to support dynamic HDB backend])
2626                 BUILD_HDB=mod
2627                 BUILD_HDB_DYNAMIC=shared
2628                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
2629         else
2630                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
2631         fi
2632 fi
2633
2634 if test "$ol_enable_ldap" != no ; then
2635         AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
2636         BUILD_SLAPD=yes
2637         BUILD_LDAP=yes
2638         if test "$ol_with_ldap_module" != static ; then
2639                 AC_DEFINE(SLAPD_LDAP_DYNAMIC,1,
2640                         [define to support dynamic LDAP backend])
2641                 BUILD_LDAP=mod
2642                 BUILD_LDAP_DYNAMIC=shared
2643                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2644         else
2645                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2646         fi
2647 fi
2648
2649 if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
2650         AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
2651         BUILD_SLAPD=yes
2652         BUILD_LDBM=yes
2653         if test "$ol_with_ldbm_module" != static ; then
2654                 AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
2655                         [define to support dynamic LDBM backend])
2656                 BUILD_LDBM=mod
2657                 BUILD_LDBM_DYNAMIC=shared
2658                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldbm"
2659         else
2660                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldbm"
2661         fi
2662 fi
2663
2664 if test "$ol_enable_meta" != no ; then
2665         if test "$ol_enable_ldap" = no ; then
2666                 AC_MSG_ERROR([need --enable-ldap to use --enable-meta])
2667         fi
2668         if test "$ol_enable_rewrite" = no ; then
2669                 AC_MSG_ERROR([need --enable-rewrite to use --enable-meta])
2670         fi
2671         AC_DEFINE(SLAPD_META,1,[define to support LDAP Metadirectory backend])
2672         BUILD_SLAPD=yes
2673         BUILD_META=yes
2674         BUILD_REWRITE=yes
2675         if test $ol_enable_ldbm = yes -o \
2676                 $ol_enable_bdb = yes ; then 
2677                 BUILD_CACHE=yes
2678         fi
2679         if test "$ol_with_meta_module" != static ; then
2680                 AC_DEFINE(SLAPD_META_DYNAMIC,1,
2681                         [define to support dynamic LDAP Metadirectory backend])
2682                 BUILD_META=mod
2683                 BUILD_META_DYNAMIC=shared
2684                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2685         else
2686                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2687         fi
2688 fi
2689
2690 if test "$ol_enable_monitor" != no ; then
2691         AC_DEFINE(SLAPD_MONITOR,1,[define to support cn=Monitor backend])
2692         BUILD_SLAPD=yes
2693         BUILD_MONITOR=yes
2694         if test "$ol_with_monitor_module" != static ; then
2695                 AC_DEFINE(SLAPD_MONITOR_DYNAMIC,1,
2696                         [define to support dynamic cn=Monitor backend])
2697                 BUILD_MONITOR=mod
2698                 BUILD_MONITOR_DYNAMIC=shared
2699                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-monitor"
2700         else
2701                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-monitor"
2702         fi
2703 fi
2704
2705 if test "$ol_enable_null" != no ; then
2706         AC_DEFINE(SLAPD_NULL,1,[define to support NULL backend])
2707         BUILD_SLAPD=yes
2708         BUILD_NULL=yes
2709         if test "$ol_with_null_module" != static ; then
2710                 AC_DEFINE(SLAPD_NULL_DYNAMIC,1,
2711                         [define to support dynamic NULL backend])
2712                 BUILD_NULL=mod
2713                 BUILD_NULL_DYNAMIC=shared
2714                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2715         else
2716                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2717         fi
2718 fi
2719
2720 if test "$ol_enable_passwd" != no ; then
2721         AC_DEFINE(SLAPD_PASSWD,1,[define to support PASSWD backend])
2722         BUILD_SLAPD=yes
2723         BUILD_PASSWD=yes
2724         if test "$ol_with_passwd_module" != static ; then
2725                 AC_DEFINE(SLAPD_PASSWD_DYNAMIC,1,
2726                         [define to support dynamic PASSWD backend])
2727                 BUILD_PASSWD=mod
2728                 BUILD_PASSWD_DYNAMIC=shared
2729                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2730         else
2731                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2732         fi
2733 fi
2734
2735 if test "$ol_link_perl" != no ; then
2736         AC_DEFINE(SLAPD_PERL,1,[define to support PERL backend])
2737         BUILD_SLAPD=yes
2738         BUILD_PERL=yes
2739         if test "$ol_with_perl_module" != static ; then
2740                 AC_DEFINE(SLAPD_PERL_DYNAMIC,1,
2741                         [define to support dynamic PERL backend])
2742                 BUILD_PERL=mod
2743                 BUILD_PERL_DYNAMIC=shared
2744                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2745         else
2746                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2747         fi
2748 fi
2749
2750 if test "$ol_enable_shell" != no ; then
2751         if test "$ol_link_thread" != no ; then
2752                 AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
2753         fi
2754         AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
2755         BUILD_SLAPD=yes
2756         BUILD_SHELL=yes
2757         if test "$ol_with_shell_module" != static ; then
2758                 AC_DEFINE(SLAPD_SHELL_DYNAMIC,1,
2759                         [define to support dynamic SHELL backend])
2760                 BUILD_SHELL=mod
2761                 BUILD_SHELL_DYNAMIC=shared
2762                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-shell"
2763         else
2764                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-shell"
2765         fi
2766 fi
2767
2768 if test "$ol_enable_tcl" != no ; then
2769         AC_DEFINE(SLAPD_TCL,1,[define to support TCL backend])
2770         BUILD_SLAPD=yes
2771         BUILD_TCL=yes
2772         if test "$ol_with_tcl_module" != static; then
2773                 AC_DEFINE(SLAPD_TCL_DYNAMIC,1,
2774                         [define to support dynamic TCL backend])
2775                 BUILD_TCL=mod
2776                 BUILD_TCL_DYNAMIC=shared
2777                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-tcl"
2778         else
2779                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-tcl"
2780         fi
2781 fi
2782
2783 if test "$ol_link_sql" != no ; then
2784         AC_DEFINE(SLAPD_SQL,1,[define to support SQL backend])
2785         BUILD_SLAPD=yes
2786         BUILD_SQL=yes
2787         if test "$ol_with_sql_module" != static; then
2788                 AC_DEFINE(SLAPD_SQL_DYNAMIC,1,
2789                         [define to support dynamic SQL backend])
2790                 BUILD_SQL=mod
2791                 BUILD_SQL_DYNAMIC=shared
2792                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2793         else
2794                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2795         fi
2796 fi
2797
2798 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2799         $BUILD_SLAPD = yes ; then
2800         BUILD_SLURPD=yes
2801 fi
2802
2803 if test "$ol_enable_rewrite" != no ; then
2804         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2805         BUILD_REWRITE=yes
2806 fi
2807
2808 if test "$ol_enable_slapi" != no ; then
2809         AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
2810         BUILD_SLAPI=yes
2811         SLAPD_SLAPI_DEPEND=libslapi.a
2812 fi
2813
2814 dnl ----------------------------------------------------------------
2815
2816 dnl
2817 dnl For Windows build, we don't want to include -dlopen flags.
2818 dnl They hurt more than they help.
2819 dnl
2820
2821 if test "$ac_cv_mingw32" = yes ; then
2822         PLAT=NT
2823         SLAPD_MODULES_LDFLAGS=
2824 else
2825         PLAT=UNIX
2826 fi
2827
2828 if test -z "$SLAPD_STATIC_BACKENDS"; then
2829         SLAPD_NO_STATIC='#'
2830 else
2831         SLAPD_NO_STATIC=
2832 fi
2833
2834 AC_SUBST(LIBSRCS)
2835 AC_SUBST(PLAT)
2836 AC_SUBST(WITH_TLS)
2837 AC_SUBST(BUILD_LIBS_DYNAMIC)
2838
2839 AC_SUBST(BUILD_SLAPD)
2840   AC_SUBST(BUILD_SLAPI)
2841   AC_SUBST(SLAPD_SLAPI_DEPEND)
2842   AC_SUBST(BUILD_BDB)
2843   AC_SUBST(BUILD_DNSSRV)
2844   AC_SUBST(BUILD_HDB)
2845   AC_SUBST(BUILD_LDAP)
2846   AC_SUBST(BUILD_LDBM)
2847   AC_SUBST(BUILD_META)
2848   AC_SUBST(BUILD_MONITOR)
2849   AC_SUBST(BUILD_CACHE)
2850   AC_SUBST(BUILD_NULL)
2851   AC_SUBST(BUILD_PASSWD)
2852   AC_SUBST(BUILD_PERL)
2853   AC_SUBST(BUILD_SHELL)
2854   AC_SUBST(BUILD_SQL)
2855   AC_SUBST(BUILD_TCL)
2856   AC_SUBST(BUILD_BDB_DYNAMIC)
2857   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
2858   AC_SUBST(BUILD_HDB_DYNAMIC)
2859   AC_SUBST(BUILD_LDAP_DYNAMIC)
2860   AC_SUBST(BUILD_LDBM_DYNAMIC)
2861   AC_SUBST(BUILD_META_DYNAMIC)
2862   AC_SUBST(BUILD_MONITOR_DYNAMIC)
2863   AC_SUBST(BUILD_NULL_DYNAMIC)
2864   AC_SUBST(BUILD_PASSWD_DYNAMIC)
2865   AC_SUBST(BUILD_PERL_DYNAMIC)
2866   AC_SUBST(BUILD_SHELL_DYNAMIC)
2867   AC_SUBST(BUILD_SQL_DYNAMIC)
2868   AC_SUBST(BUILD_TCL_DYNAMIC)
2869 AC_SUBST(BUILD_SLURPD)
2870
2871 AC_SUBST(LDAP_LIBS)
2872 AC_SUBST(LDIF_LIBS)
2873 AC_SUBST(SLAPD_LIBS)
2874 AC_SUBST(SLURPD_LIBS)
2875 AC_SUBST(LDBM_LIBS)
2876 AC_SUBST(LTHREAD_LIBS)
2877 AC_SUBST(LUTIL_LIBS)
2878 AC_SUBST(WRAP_LIBS)
2879 AC_SUBST(MOD_TCL_LIB)
2880
2881 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2882 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2883
2884 AC_SUBST(SLAPD_NO_STATIC)
2885 AC_SUBST(SLAPD_STATIC_BACKENDS)
2886 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
2887
2888 AC_SUBST(PERL_CPPFLAGS)
2889 AC_SUBST(SLAPD_PERL_LDFLAGS)
2890 AC_SUBST(MOD_PERL_LDFLAGS)
2891
2892 AC_SUBST(KRB4_LIBS)
2893 AC_SUBST(KRB5_LIBS)
2894 AC_SUBST(SASL_LIBS)
2895 AC_SUBST(TERMCAP_LIBS)
2896 AC_SUBST(TLS_LIBS)
2897 AC_SUBST(MODULES_LIBS)
2898 AC_SUBST(SLAPI_LIBS)
2899 AC_SUBST(LIBSLAPI)
2900 AC_SUBST(LIBSLAPITOOLS)
2901 AC_SUBST(AUTH_LIBS)
2902
2903 AC_SUBST(SLAPD_SLP_LIBS)
2904
2905 AC_SUBST(SLAPD_SQL_LDFLAGS)
2906 AC_SUBST(SLAPD_SQL_LIBS)
2907 AC_SUBST(SLAPD_SQL_INCLUDES)
2908
2909 dnl ----------------------------------------------------------------
2910 dnl final help output
2911 AC_ARG_WITH(xxinstall,[
2912 See INSTALL file for further details.])
2913
2914 dnl ----------------------------------------------------------------
2915 dnl final output
2916 dnl
2917
2918 AC_OUTPUT( \
2919 Makefile:build/top.mk:Makefile.in:build/dir.mk \
2920 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
2921 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
2922 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
2923 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
2924 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
2925 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
2926 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
2927 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
2928 include/Makefile:build/top.mk:include/Makefile.in \
2929 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
2930 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk    \
2931 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2932 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2933 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
2934 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk  \
2935 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk  \
2936 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
2937 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
2938 libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk \
2939 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
2940 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
2941 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
2942 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
2943 servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk \
2944 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
2945 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
2946 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
2947 servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk \
2948 servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk \
2949 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
2950 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
2951 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
2952 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
2953 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
2954 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
2955 servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2956 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
2957 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
2958 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
2959 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
2960 ,[
2961 date > stamp-h
2962 echo Please run \"make depend\" to build dependencies
2963 ])