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