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