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