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