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