]> git.sur5r.net Git - openldap/blob - configure.in
Be a bit more liberal
[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 dnl HP-UX requires -lV3
727 AC_CHECK_LIB(V3, sigset)
728
729 dnl Gotta check for winsock manually
730 if test $ac_cv_header_winsock_h = yes; then
731         AC_CACHE_CHECK([for winsock], [ol_cv_winsock], 
732         AC_TRY_LINK([#include <winsock.h>],[
733                         socket(0,0,0);
734                         select(0,NULL,NULL,NULL,NULL);
735                         closesocket(0);
736                         gethostname(NULL,0);
737         ],[ol_cv_winsock=yes],[ol_cv_winsock=no])])
738
739         if test $ol_cv_winsock = yes ; then
740                 AC_DEFINE(HAVE_WINSOCK,1,[define if you have winsock])
741                 ac_cv_func_socket=yes
742                 ac_cv_func_select=yes
743                 ac_cv_func_closesocket=yes
744                 ac_cv_func_gethostname=yes
745         fi
746 fi
747
748 dnl Find socket()
749 dnl Likely combinations:
750 dnl             -lsocket [ -lnsl_s | -lnsl ]
751 dnl             -linet
752
753 AC_CHECK_FUNC(socket, :, [      
754 dnl hopefully we won't include too many libraries
755         AC_CHECK_LIB(socket, main)
756         AC_CHECK_LIB(net, main)
757         AC_CHECK_LIB(nsl_s, main)
758         AC_CHECK_LIB(nsl, main)
759         AC_CHECK_LIB(inet, socket)
760         AC_CHECK_LIB(gen, main)
761 ])
762
763 dnl require select
764 AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
765
766 if test "${ac_cv_header_winsock_h}" != yes; then
767     dnl Select arg types
768     dnl (if this detection becomes permenent, it and the select() detection
769     dnl should be done before the yielding select test) 
770     AC_FUNC_SELECT_ARGTYPES
771 fi
772
773 dnl check to see if system call automatically restart
774 dnl AC_SYS_RESTARTABLE_SYSCALLS
775
776 dnl ----------------------------------------------------------------
777 dnl require POSIX regex
778 AC_CHECK_HEADERS( regex.h )
779 if test "$ac_cv_header_regex_h" != yes ; then
780         AC_MSG_ERROR([POSIX regex.h required.])
781 fi
782 AC_CHECK_FUNC(regfree, :, AC_MSG_ERROR([POSIX regex required.]))
783
784 OL_POSIX_REGEX
785 if test "$ol_cv_c_posix_regex" = no ; then
786         AC_MSG_ERROR([broken POSIX regex!])
787 fi
788
789 dnl ----------------------------------------------------------------
790 dnl Check for resolver routines
791 ol_link_dnssrv=no
792 AC_CHECK_FUNC(res_query,:)
793 if test $ac_cv_func_res_query = no ; then 
794         AC_CHECK_LIB(bind, res_query)
795         ac_cv_func_res_query=$ac_cv_lib_bind_res_query
796 fi
797
798 if test $ac_cv_func_res_query = no ; then 
799         AC_CHECK_LIB(bind, __res_query)
800         ac_cv_func_res_query=$ac_cv_lib_bind___res_query
801 fi
802
803 if test $ac_cv_func_res_query = no ; then 
804         AC_CHECK_LIB(resolv, res_query)
805         ac_cv_func_res_query=$ac_cv_lib_resolv_res_query
806 fi
807
808 if test "$ac_cv_func_res_query" = yes ; then
809         AC_DEFINE(HAVE_RES_QUERY,1,
810                 [define if you have res_query()])
811
812         if test $ol_enable_dnssrv != no ; then
813                 ol_link_dnssrv=yes
814         fi
815 fi
816
817 if test "$ol_enable_dnssrv" = yes -a "$ol_link_dnssrv" = no ; then
818         AC_MSG_ERROR([DNSSRV requires res_query()])
819 fi
820
821 dnl ----------------------------------------------------------------
822 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
823 dnl PF_LOCAL may use getaddrinfo in available
824 AC_CHECK_FUNCS( getaddrinfo )
825
826 ol_link_ipv6=no
827 if test $ac_cv_func_getaddrinfo = no ; then
828         if test $ol_enable_ipv6 = yes ; then
829                 AC_MSG_ERROR([IPv6 support requires getaddrinfo()])
830         fi
831 else
832         AC_CHECK_FUNCS( gai_strerror )
833
834         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
835                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
836 #                       include <netinet/in.h>
837 #                       ifdef INET6_ADDRSTRLEN
838                                 __has_inet6_addrstrlen__;
839 #                       endif
840                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
841
842         if test $ol_cv_inet6_addrstrlen = yes ; then
843                 ol_link_ipv6=yes
844         elif test $ol_enable_ipv6 = yes ; then
845                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
846         fi
847 fi
848
849 if test $ol_enable_local != no ; then
850         AC_CHECK_HEADERS( sys/un.h )
851
852         if test $ol_enable_local = auto ; then
853                 ol_enable_local=$ac_cv_header_sys_un_h
854         elif test $ac_cv_header_sys_un_h = no ; then
855                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
856         fi
857 fi
858
859 dnl ----------------------------------------------------------------
860 dnl Kerberos
861 ol_link_kbind=no
862 ol_link_kpasswd=no
863 ol_link_krb5=no
864 ol_link_krb4=no
865
866 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
867         -o $ol_with_kerberos = k5 -o $ol_with_kerberos = k5only \
868         -o $ol_with_kerberos = k425 ; then
869
870         AC_CHECK_HEADERS(krb5.h)
871
872         if test $ac_cv_header_krb5_h = yes ; then
873                 dnl lazy check for Heimdal Kerberos
874                 AC_CHECK_HEADERS(heim_err.h)
875                 if test $ac_cv_header_heim_err_h = yes ; then
876                         krb5_impl=heimdal
877                 else
878                         krb5_impl=mit
879                 fi
880
881                 if test $krb5_impl = mit; then
882                         AC_CHECK_LIB(krb5, main,
883                                 [have_krb5=yes
884                                 KRB5_LIBS="-lkrb5 -lcrypto -lcom_err"],
885                                 [have_krb5=no],
886                                 [-lcrypto -lcom_err])
887
888                 elif test $krb5_impl = heimdal; then
889                         AC_CHECK_LIB(krb5, main,
890                                 [have_krb5=yes
891                                 KRB5_LIBS="-lkrb5 -ldes -lasn1 -lroken -lcom_err"],
892                                 [have_krb5=no],
893                                 [-ldes -lasn1 -lroken -lcom_err])
894
895                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
896                                 [define if you have HEIMDAL Kerberos])
897                 else
898                         have_krb5=no
899                         AC_MSG_WARN([Unrecongized Kerberos5 Implementation])
900                 fi
901
902                 if test $have_krb5 = yes ; then
903                         ol_link_krb5=yes
904
905                         AC_DEFINE(HAVE_KRB5, 1,
906                                 [define if you have Kerberos V])
907
908                         if test $ol_enable_kpasswd != no ; then
909                                 ol_link_kpasswd=yes;
910                         fi
911
912                         if test $ol_with_kerberos = k5only ; then
913                                 ol_with_kerberos=found
914                         fi
915
916                 elif test $ol_with_kerberos != auto ; then
917                         AC_MSG_ERROR([Required Kerberos 5 support not available])
918                 fi
919
920         fi
921 fi
922
923 if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
924         $ol_with_kerberos = auto -o $ol_with_kerberos = k425 \) ; then
925
926         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
927
928         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
929                 if test $krb5_impl = mit; then
930                         AC_CHECK_LIB(krb4, main, [have_k425=yes
931                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
932                                 [-ldes425 -lkrb5 -lcrypto -lcom_err])
933
934                 elif test $krb5_impl = heimdal; then
935                         AC_CHECK_LIB(krb4, main, [have_k425=yes
936                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
937                                 [-lkrb5 -ldes -lasn1 -lroken -lcom_err])
938
939                 else
940                         have_425=no
941                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
942                 fi
943
944                 if test $have_k425 = yes ; then
945                         ol_with_kerberos=found
946                         ol_link_krb4=yes
947
948                         AC_DEFINE(HAVE_KRB425, 1,
949                                 [define if you have Kerberos V with IV support])
950                         AC_DEFINE(HAVE_KRB4, 1,
951                                 [define if you have Kerberos IV])
952
953                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
954                                 [ol_cv_var_des_debug], [
955                                 dnl save the flags
956                                 save_LIBS="$LIBS"
957                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
958                                 AC_TRY_LINK([
959 #include <kerberosIV/krb.h>
960 #include <kerberosIV/des.h>
961 extern int des_debug;
962 ],[
963 des_debug = 1;
964 ],                              ol_cv_var_des_debug=yes, ol_cv_var_des_debug=no)
965                                 dnl restore the LIBS
966                                 LIBS="$save_LIBS"
967                         ])
968
969                         if test $ol_cv_var_des_debug = yes ; then
970                                 AC_DEFINE(HAVE_DES_DEBUG,1,
971                                         [define if you have Kerberos des_debug])
972                         fi
973
974                         LIBS="$save_LIBS"
975                 fi
976         fi
977 fi
978
979 if test $ol_link_krb5 = yes ; then
980         ol_with_kerberos=found
981 fi
982
983 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
984         -o $ol_with_kerberos = k4 -o $ol_with_kerberos = kth ; then
985
986         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
987
988         if test $ac_cv_header_krb_h = yes ; then
989                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
990
991                 if test $have_k4 = yes ; then
992                         ol_with_kerberos=found
993                         ol_link_krb4=yes
994
995                         AC_DEFINE(HAVE_KRB4, 1,
996                                 [define if you have Kerberos IV])
997
998                         KRB4_LIBS="-lkrb -ldes"
999
1000                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1001                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1002                                         [define if you have Kth Kerberos])
1003                         fi
1004                 fi
1005         fi
1006 fi
1007
1008 if test $ol_link_krb4 = yes -a $ol_enable_kpasswd != no ; then
1009         ol_link_kpasswd=yes
1010 fi
1011
1012 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
1013         ol_link_kbind=yes
1014
1015 elif test $ol_enable_kbind = yes ; then
1016         AC_MSG_ERROR([Kerberos IV detection failed])
1017 fi
1018
1019 if test $ol_link_krb4 = yes -o $ol_link_krb5 = yes ; then
1020         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1021
1022 elif test $ol_with_kerberos != auto -a $ol_with_kerberos != no ; then
1023         AC_MSG_ERROR([Kerberos detection failed])
1024 fi
1025
1026 dnl ----------------------------------------------------------------
1027 dnl TLS/SSL
1028 ol_link_tls=no
1029 if test $ol_with_tls != no ; then
1030         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1031         
1032         if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
1033                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1034                         [have_ssleay=yes
1035                         need_rsaref=no],
1036                         [have_ssleay=no],
1037                         [-lcrypto])
1038                         
1039                 if test $have_ssleay = no ; then
1040                         AC_CHECK_LIB(ssl, SSL_library_init,
1041                                 [have_ssleay=yes
1042                                 need_rsaref=no], [have_ssleay=no],
1043                                 [-lcrypto])
1044                 fi
1045
1046                 if test $have_ssleay = no ; then
1047                         AC_CHECK_LIB(ssl, ssl3_accept, 
1048                                 [have_ssleay=yes
1049                                 need_rsaref=yes], [have_ssleay=no],
1050                                 [-lcrypto -lRSAglue -lrsaref])
1051                 fi
1052
1053                 if test $have_ssleay = yes ; then
1054                         ol_with_tls=found
1055                         ol_link_tls=yes
1056
1057                         AC_DEFINE(HAVE_SSLEAY, 1, 
1058                                 [define if you have SSLeay or OpenSSL])
1059
1060                         if test $need_rsaref = yes; then
1061                                 AC_DEFINE(HAVE_RSAREF, 1, 
1062                                         [define if you have RSAref])
1063
1064                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1065                         else
1066                                 TLS_LIBS="-lssl -lcrypto"
1067                         fi
1068                 fi
1069         fi
1070
1071 else
1072         AC_WARN([TLS privacy protection not supported!])
1073 fi
1074
1075 if test $ol_link_tls = yes ; then
1076         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1077
1078 elif test $ol_with_tls = auto ; then
1079         AC_WARN([Could not locate TLS/SSL package])
1080         AC_WARN([TLS privacy protection not supported!])
1081
1082 elif test $ol_with_tls != no ; then
1083         AC_ERROR([Could not locate TLS/SSL package])
1084 fi
1085
1086 dnl ----------------------------------------------------------------
1087 dnl LAN Manger password checking requires DES from OpenSSL
1088 if test $ol_enable_lmpasswd != no; then
1089         if test $ol_link_tls != yes ; then
1090                 AC_ERROR([LAN Manager passwords require OpenSSL])
1091         fi
1092
1093         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1094 fi
1095
1096 dnl ----------------------------------------------------------------
1097 dnl Tests for reentrant functions necessary to build a
1098 dnl thread_safe -lldap.
1099 AC_CHECK_FUNCS(         \
1100         ctime_r                 \
1101         gethostbyname_r gethostbyaddr_r \
1102 )
1103
1104 if test "$ac_cv_func_ctime_r" = no ; then
1105         ol_cv_func_ctime_r_nargs=0
1106 else
1107         OL_FUNC_CTIME_R_NARGS
1108 dnl     OL_FUNC_CTIME_R_TYPE
1109 fi
1110
1111 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1112         OL_FUNC_GETHOSTBYNAME_R_NARGS
1113 else
1114         ol_cv_func_gethostbyname_r_nargs=0
1115 fi
1116  
1117 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1118         OL_FUNC_GETHOSTBYADDR_R_NARGS
1119 else
1120         ol_cv_func_gethostbyaddr_r_nargs=0
1121 fi
1122
1123 if test "$ac_cv_func_ctime_r" = yes \
1124         -a "$ol_cv_func_ctime_r_nargs" -ge 2 \
1125         -a "$ol_cv_func_ctime_r_nargs" -le 3 \
1126         -a "$ac_cv_func_gethostbyname_r" = yes \
1127         -a "$ol_cv_func_gethostbyname_r_nargs" -ge 5 \
1128         -a "$ol_cv_func_gethostbyname_r_nargs" -le 6 \
1129         -a "$ac_cv_func_gethostbyaddr_r" = yes \
1130         -a "$ol_cv_func_gethostbyaddr_r_nargs" -ge 5 \
1131         -a "$ol_cv_func_gethostbyaddr_r_nargs" -le 6 \
1132         ; then
1133  
1134         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT,1)
1135 fi
1136
1137 dnl ----------------------------------------------------------------
1138 dnl Threads?
1139 ol_link_threads=no
1140
1141 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1142         -o $ol_with_threads = nt ; then
1143
1144         OL_NT_THREADS
1145
1146         if test "$ol_cv_nt_threads" = yes ; then
1147         ol_link_threads=nt
1148         ol_with_threads=found
1149         ol_with_yielding_select=yes
1150
1151                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1152                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1153         fi
1154
1155         if test $ol_with_threads = nt ; then
1156                 AC_MSG_ERROR([could not locate NT Threads])
1157         fi
1158 fi
1159
1160 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1161         -o $ol_with_threads = posix ; then
1162
1163         AC_CHECK_HEADERS(pthread.h)
1164
1165         if test $ac_cv_header_pthread_h = yes ; then
1166                 OL_POSIX_THREAD_VERSION
1167
1168                 if test $ol_cv_pthread_version = final ; then
1169                         AC_DEFINE(HAVE_PTHREADS_FINAL,1,
1170                                 [define if pthreads API compatible with final spec])
1171                 elif test $ol_cv_pthread_version = draft4 ; then
1172                         AC_DEFINE(HAVE_PTHREADS_D4,1,
1173                                 [define if pthreads API compatible with draft4 spec])
1174                 else
1175                         AC_MSG_ERROR([unknown pthread version])
1176                 fi
1177
1178                 # consider threads found
1179                 ol_with_threads=found
1180
1181                 OL_HEADER_LINUX_THREADS
1182                 OL_HEADER_GNU_PTH_PTHREAD_H
1183
1184                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1185                         AC_CHECK_HEADERS(sched.h)
1186                 fi
1187
1188                 dnl Now the hard part, how to link?
1189                 dnl
1190                 dnl currently supported checks:
1191                 dnl
1192                 dnl Check for no flags 
1193                 dnl     pthread_create() in $LIBS
1194                 dnl
1195                 dnl Check special pthread (final) flags
1196                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1197                 dnl     pthread_create() with -kthread (FreeBSD)
1198                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1199                 dnl     pthread_create() with -pthreads (?)
1200                 dnl     pthread_create() with -mthreads (AIX)
1201                 dnl     pthread_create() with -thread (?)
1202                 dnl
1203                 dnl Check pthread (final) libraries
1204                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1205                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1206                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1207                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1208                 dnl     pthread_create() in -lpthread (many)
1209                 dnl     pthread_create() in -lc_r (FreeBSD)
1210                 dnl
1211                 dnl Check pthread (draft4) flags (depreciated)
1212                 dnl     pthread_create() with -threads (OSF/1)
1213                 dnl
1214                 dnl Check pthread (draft4) libraries (depreciated)
1215                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1216                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1217                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1218                 dnl     pthread_create() in -lpthreads (many)
1219                 dnl
1220
1221                 dnl pthread_create in $LIBS
1222                 AC_CACHE_CHECK([for pthread_create in default libraries],
1223                         ol_cv_pthread_create,[
1224                 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1225                         [ol_cv_pthread_create=yes],
1226                         [ol_cv_pthread_create=no],
1227                         [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1228                                 [ol_cv_pthread_create=yes],
1229                                 [ol_cv_pthread_create=no])])])
1230
1231                 if test $ol_cv_pthread_create != no ; then
1232                         ol_link_threads=posix
1233                         ol_link_pthreads=""
1234                 fi
1235                 
1236 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1237                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1238                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1239                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1240                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1241                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1242
1243                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1244                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1245                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1246                         [ol_cv_pthread_lpthread_lmach_lexc])
1247 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1248 dnl                     [ol_cv_pthread_lpthread_lexc])
1249
1250                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1251                         [ol_cv_pthread_lib_lpthread_woff])
1252
1253                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1254                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1255
1256                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1257
1258                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1259                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1260                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1261                         [ol_cv_pthread_lpthreads_lmach_lexc])
1262                 OL_PTHREAD_TRY([-lpthreads -lexc],
1263                         [ol_cv_pthread_lpthreads_lexc])
1264
1265                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1266
1267                 if test $ol_link_threads != no ; then
1268                         AC_DEFINE(HAVE_PTHREADS,1,
1269                                 [define if you have POSIX Threads])
1270
1271                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1272
1273                         dnl save flags
1274                         save_CPPFLAGS="$CPPFLAGS"
1275                         save_LIBS="$LIBS"
1276                         LIBS="$LTHREAD_LIBS $LIBS"
1277
1278                         dnl All POSIX Thread (final) implementations should have
1279                         dnl sched_yield instead of pthread yield.
1280                         dnl check for both
1281                         AC_CHECK_FUNCS(sched_yield pthread_yield)
1282
1283                         if test $ac_cv_func_sched_yield = no -a \
1284                                 $ac_cv_func_pthread_yield = no ; then
1285                                 dnl Digital UNIX has sched_yield() in -lrt
1286                                 AC_CHECK_LIB(rt, sched_yield,
1287                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1288                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1289                                                 [Define if you have the sched_yield function.])
1290                                         ac_cv_func_sched_yield=yes],
1291                                         [ac_cv_func_sched_yield=no])
1292                         fi
1293                         if test $ac_cv_func_sched_yield = no -a \
1294                                 $ac_cv_func_pthread_yield = no ; then
1295                                 dnl Solaris has sched_yield() stub in -lposix4
1296                                 dnl but we'll use thr_yield instead.
1297                                 AC_CHECK_FUNCS(thr_yield)
1298                         fi
1299                         if test $ac_cv_func_sched_yield = no -a \
1300                                 $ac_cv_func_pthread_yield = no -a \
1301                                 "$ac_cv_func_thr_yield" = no ; then
1302                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1303                         fi
1304
1305                         dnl Check functions for compatibility
1306                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1307
1308                         dnl Check for pthread_detach with <pthread.h> inclusion
1309                         dnl as it's symbol may have been mangled.
1310                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1311                                 [ol_cv_func_pthread_detach], [
1312                                 dnl save the flags
1313                                 AC_TRY_LINK([
1314 #include <pthread.h>
1315 #ifndef NULL
1316 #define NULL (void*)0
1317 #endif
1318 ],
1319                                         [pthread_detach(NULL);],
1320                                         [ol_cv_func_pthread_detach=yes],
1321                                         [ol_cv_func_pthread_detach=no])
1322                         ])
1323
1324                         if test $ol_cv_func_pthread_detach = no ; then
1325                                 AC_MSG_ERROR([could not locate pthread_detach()])
1326                         fi
1327
1328                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1329                                 [define if you have pthread_detach function])
1330
1331                         dnl Check for setconcurreny functions
1332                         AC_CHECK_FUNCS( \
1333                                 pthread_setconcurrency \
1334                                 pthread_getconcurrency \
1335                                 thr_setconcurrency \
1336                                 thr_getconcurrency \
1337                         )
1338
1339                         OL_SYS_LINUX_THREADS
1340                         OL_LINUX_THREADS
1341
1342                         if test $ol_cv_linux_threads = error; then
1343                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1344                         fi
1345
1346                         AC_CACHE_CHECK([if pthread_create() works],
1347                                 ol_cv_pthread_create_works,[
1348                         AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1349                                 [ol_cv_pthread_create_works=yes],
1350                                 [ol_cv_pthread_create_works=no],
1351                                 [dnl assume yes
1352                                 ol_cv_pthread_create_works=yes])])
1353
1354                         if test $ol_cv_pthread_create_works = no ; then
1355                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1356                         fi
1357
1358                         dnl Check if select causes an yield
1359                         if test $ol_with_yielding_select = auto ; then
1360                                 AC_CACHE_CHECK([if select yields when using pthreads],
1361                                         ol_cv_pthread_select_yields,[
1362                                 AC_TRY_RUN([
1363 #include <sys/types.h>
1364 #include <sys/time.h>
1365 #include <unistd.h>
1366 #include <pthread.h>
1367 #ifndef NULL
1368 #define NULL (void*) 0
1369 #endif
1370
1371 static int fildes[2];
1372
1373 static void *task(p)
1374         void *p;
1375 {
1376         int i;
1377         struct timeval tv;
1378
1379         fd_set rfds;
1380
1381         tv.tv_sec=10;
1382         tv.tv_usec=0;
1383
1384         FD_ZERO(&rfds);
1385         FD_SET(fildes[0], &rfds);
1386
1387         /* we're not interested in any fds */
1388         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1389
1390         if(i < 0) {
1391                 perror("select");
1392                 exit(10);
1393         }
1394
1395         exit(0); /* if we exit here, the select blocked the whole process */
1396 }
1397
1398 int main(argc, argv)
1399         int argc;
1400         char **argv;
1401 {
1402         pthread_t t;
1403
1404         /* create a pipe to select */
1405         if(pipe(&fildes[0])) {
1406                 perror("select");
1407                 exit(1);
1408         }
1409
1410 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1411         (void) pthread_setconcurrency(2);
1412 #else
1413 #ifdef HAVE_THR_SETCONCURRENCY
1414         /* Set Solaris LWP concurrency to 2 */
1415         thr_setconcurrency(2);
1416 #endif
1417 #endif
1418
1419 #if HAVE_PTHREADS_D4
1420         pthread_create(&t, pthread_attr_default, task, NULL);
1421 #else
1422         pthread_create(&t, NULL, task, NULL);
1423 #endif
1424
1425 #if HAVE_SCHED_YIELD
1426         sched_yield();  /* make sure task runs first */
1427 #else
1428 #ifdef HAVE_PTHREAD_YIELD
1429         pthread_yield();        /* make sure task runs first */
1430 #endif
1431 #endif
1432
1433         exit(2);
1434 }],
1435                                 [ol_cv_pthread_select_yields=no],
1436                                 [ol_cv_pthread_select_yields=yes],
1437                                 [ol_cv_pthread_select_yields=cross])])
1438
1439                                 if test $ol_cv_pthread_select_yields = cross ; then
1440                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1441                                 fi
1442
1443                                 if test $ol_cv_pthread_select_yields = yes ; then
1444                                         ol_with_yielding_select=yes
1445                                 fi
1446                         fi
1447
1448                         dnl restore flags
1449                         CPPFLAGS="$save_CPPFLAGS"
1450                         LIBS="$save_LIBS"
1451                 else
1452                         AC_MSG_ERROR([could not link with POSIX Threads])
1453                 fi
1454         fi
1455
1456         if test $ol_with_threads = posix ; then
1457                 AC_MSG_ERROR([could not locate POSIX Threads])
1458         fi
1459 fi
1460
1461 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1462         -o $ol_with_threads = mach ; then
1463
1464         dnl check for Mach CThreads
1465         AC_CHECK_HEADERS(mach/cthreads.h)
1466         if test $ac_cv_header_mach_cthreads_h = yes ; then
1467                 ol_with_threads=found
1468
1469                 dnl check for cthread support in current $LIBS
1470                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1471
1472                 if test $ol_link_threads = no ; then
1473                         dnl try -all_load
1474                         dnl this test needs work
1475                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1476                                 [ol_cv_cthread_all_load], [
1477                                 dnl save the flags
1478                                 save_LIBS="$LIBS"
1479                                 LIBS="-all_load $LIBS"
1480                                 AC_TRY_LINK([#include <mach/cthreads.h>],[
1481                                         cthread_fork((void *)0, (void *)0);
1482                                         ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no)
1483                                 dnl restore the LIBS
1484                                 LIBS="$save_LIBS"
1485                         ])
1486
1487                         if test $ol_cv_cthread_all_load = yes ; then
1488                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1489                                 ol_link_threads=mach
1490                         fi
1491                 fi
1492
1493                 if test $ol_link_threads != no ; then
1494                         : check for cthread specific functionality here
1495                         AC_DEFINE(HAVE_MACH_CTHREADS,1,
1496                                 [define if you have Mach Cthreads])
1497                 else
1498                         AC_MSG_ERROR([could not link with Mach CThreads])
1499                 fi
1500         fi
1501
1502         if test $ol_with_threads = mach ; then
1503                 AC_MSG_ERROR([could not locate Mach CThreads])
1504         fi
1505 fi
1506
1507 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1508         -o $ol_with_threads = pth ; then
1509
1510         AC_CHECK_HEADERS(pth.h)
1511
1512         if test $ac_cv_header_pth_h = yes ; then
1513                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1514
1515                 if test $have_pth = yes ; then
1516                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1517                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1518                         ol_link_threads=pth
1519
1520                         if test $ol_with_yielding_select = auto ; then
1521                                 ol_with_yielding_select=yes
1522                         fi
1523                 fi
1524         fi
1525 fi
1526
1527 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1528         -o $ol_with_threads = lwp ; then
1529
1530         dnl check for SunOS5 LWP
1531         AC_CHECK_HEADERS(thread.h synch.h)
1532         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
1533                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1534
1535                 if test $have_thr = yes ; then
1536                         AC_DEFINE(HAVE_THR,1,
1537                                 [if you have Solaris LWP (thr) package])
1538                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1539                         ol_link_threads=thr
1540
1541                         if test $ol_with_yielding_select = auto ; then
1542                                 ol_with_yielding_select=yes
1543                         fi
1544
1545                         dnl Check for setconcurreny functions
1546                         AC_CHECK_FUNCS( \
1547                                 thr_setconcurrency \
1548                                 thr_getconcurrency \
1549                         )
1550                 fi
1551         fi
1552
1553         dnl check for SunOS4 LWP
1554         AC_CHECK_HEADERS(lwp/lwp.h)
1555         if test $ac_cv_header_lwp_lwp_h = yes ; then
1556                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1557
1558                 if test $have_lwp = yes ; then
1559                         AC_DEFINE(HAVE_LWP,1,
1560                                 [if you have SunOS LWP package])
1561                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1562                         ol_link_threads=lwp
1563
1564                         if test $ol_with_yielding_select = auto ; then
1565                                 ol_with_yielding_select=no
1566                         fi
1567                 fi
1568         fi
1569 fi
1570
1571 if test $ol_with_yielding_select = yes ; then
1572         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1573                 [define if select implicitly yields])
1574 fi
1575
1576 if test $ol_with_threads = manual ; then
1577         dnl User thinks he can manually configure threads.
1578         ol_link_threads=yes
1579
1580         AC_MSG_WARN([thread defines and link options must be set manually])
1581
1582         AC_CHECK_HEADERS(pthread.h sched.h)
1583         AC_CHECK_FUNCS(sched_yield pthread_yield)
1584         OL_HEADER_LINUX_THREADS
1585
1586         AC_CHECK_HEADERS(mach/cthreads.h)
1587         AC_CHECK_HEADERS(lwp/lwp.h)
1588         AC_CHECK_HEADERS(thread.h synch.h)
1589 fi
1590
1591 if test $ol_link_threads != no -a $ol_link_threads != nt ; then  
1592         dnl needed to get reentrant/threadsafe versions
1593         dnl
1594         AC_DEFINE(REENTRANT,1)
1595         AC_DEFINE(_REENTRANT,1)
1596         AC_DEFINE(THREAD_SAFE,1)
1597         AC_DEFINE(_THREAD_SAFE,1)
1598         AC_DEFINE(THREADSAFE,1)
1599         AC_DEFINE(_THREADSAFE,1)
1600         AC_DEFINE(_SGI_MP_SOURCE,1)
1601
1602         dnl The errno declaration may dependent upon _REENTRANT.
1603         dnl If it does, we must link with thread support.
1604         AC_CACHE_CHECK([for thread specific errno],
1605                 [ol_cv_errno_thread_specific], [
1606                 AC_TRY_LINK([#include <errno.h>], [errno = 0;],
1607                         [ol_cv_errno_thread_specific=yes],
1608                         [ol_cv_errno_thread_specific=no])
1609         ])
1610
1611         dnl The h_errno declaration may dependent upon _REENTRANT.
1612         dnl If it does, we must link with thread support.
1613         AC_CACHE_CHECK([for thread specific h_errno],
1614                 [ol_cv_h_errno_thread_specific], [
1615                 AC_TRY_LINK([#include <netdb.h>], [h_errno = 0;],
1616                         [ol_cv_h_errno_thread_specific=yes],
1617                         [ol_cv_h_errno_thread_specific=no])
1618         ])
1619
1620         if test $ol_cv_errno_thread_specific != yes \
1621                 -o $ol_cv_h_errno_thread_specific != yes ; then
1622                 LIBS="$LTHREAD_LIBS $LIBS"
1623                 LTHREAD_LIBS=""
1624         fi
1625
1626 dnl When in thread environment, use 
1627 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) \ 
1628 dnl                     || defined( HAVE_FUNC_R )
1629 dnl                     func_r(...);
1630 dnl             #else
1631 dnl             #       if defined( HAVE_THREADS ) 
1632 dnl                             /* lock */
1633 dnl             #       endif
1634 dnl                             func(...);
1635 dnl             #       if defined( HAVE_THREADS ) 
1636 dnl                             /* unlock */
1637 dnl             #       endif
1638 dnl             #endif
1639 dnl
1640 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1641 dnl             _POSIX_REENTRANT_FUNCTIONS
1642 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1643 dnl             _POSIX_THREADSAFE_FUNCTIONS
1644 dnl
1645 dnl             and is currently defined in lthread.h
1646 dnl
1647 dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS
1648 dnl 
1649 dnl libldap/*.c should only include <lthread.h> iff
1650 dnl LDAP_R_COMPILE is defined.  ie:
1651 dnl             #ifdef LDAP_R_COMPILE
1652 dnl             #       include LDAP_R_COMPILE
1653 dnl             #endif
1654 dnl
1655 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1656 dnl specifically for compiling the threadsafe version of
1657 dnl     the ldap library (-lldap_r).
1658 dnl             
1659 dnl     dnl check for reentrant/threadsafe functions
1660 dnl     dnl
1661 dnl     dnl note: these should only be used when linking
1662 dnl     dnl       with $LTHREAD_LIBS
1663 dnl     dnl
1664 dnl     save_CPPFLAGS="$CPPFLAGS"
1665 dnl     save_LIBS="$LIBS"
1666 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1667 dnl     AC_CHECK_FUNCS( \
1668 dnl             gmtime_r \
1669 dnl             gethostbyaddr_r gethostbyname_r \
1670 dnl             feof_unlocked unlocked_feof \
1671 dnl             putc_unlocked unlocked_putc \
1672 dnl             flockfile ftrylockfile \
1673 dnl     )
1674 dnl     CPPFLAGS="$save_CPPFLAGS"
1675 dnl     LIBS="$save_LIBS"
1676 fi  
1677
1678 if test $ol_link_threads = no ; then
1679         if test $ol_with_threads = yes ; then
1680                 AC_MSG_ERROR([no suitable thread support])
1681         fi
1682
1683         if test $ol_with_threads = auto ; then
1684                 AC_MSG_WARN([no suitable thread support, disabling threads])
1685                 ol_with_threads=no
1686         fi
1687
1688         AC_DEFINE(NO_THREADS,1,
1689                 [define if you have (or want) no threads])
1690         LTHREAD_LIBS=""
1691 fi
1692
1693 if test $ol_link_threads != no ; then
1694         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
1695 fi
1696
1697 dnl ----------------------------------------------------------------
1698 ol_link_ldbm=no 
1699
1700 if test $ol_with_ldbm_api = auto \
1701         -o $ol_with_ldbm_api = berkeley \
1702         -o $ol_with_ldbm_api = bcompat ; then
1703
1704         if test $ol_with_ldbm_api = bcompat; then \
1705                 OL_BERKELEY_COMPAT_DB
1706         else
1707                 OL_BERKELEY_DB
1708         fi
1709
1710         if test $ol_cv_berkeley_db != no ; then
1711                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1712                         [define this if Berkeley DB is available])
1713
1714                 ol_link_ldbm=berkeley
1715                 ol_with_ldbm_api=db
1716
1717                 if test $ol_with_ldbm_type = hash ; then
1718                         AC_DEFINE(LDBM_USE_DBHASH,1,
1719                                 [define this to use DBHASH w/ LDBM backend])
1720                 else
1721                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1722                                 [define this to use DBBTREE w/ LDBM backend])
1723                 fi
1724
1725                 dnl $ol_cv_lib_db should be yes or -ldb
1726                 dnl (it could be no, but that would be an error
1727                 if test $ol_cv_lib_db != yes ; then
1728                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1729                 fi
1730         fi
1731 fi
1732
1733 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1734         AC_MSG_WARN(Could not find LDBM with BTREE support)
1735         ol_with_ldbm_api=none
1736 fi
1737
1738 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1739         OL_MDBM
1740
1741         if test $ol_cv_mdbm = yes ; then
1742                 ol_link_ldbm=mdbm
1743                 ol_with_ldbm_api=mdbm
1744                 if test $ol_cv_lib_mdbm != yes ; then
1745                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1746                 fi
1747         fi
1748 fi
1749
1750 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
1751         OL_GDBM
1752
1753         if test $ol_cv_gdbm = yes ; then
1754                 ol_link_ldbm=gdbm
1755                 ol_with_ldbm_api=gdbm
1756
1757                 if test $ol_cv_lib_gdbm != yes ; then
1758                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
1759                 fi
1760         fi
1761 fi
1762
1763 if test $ol_with_ldbm_api = ndbm ; then
1764         OL_NDBM
1765
1766         if test $ol_cv_ndbm = yes ; then
1767                 ol_link_ldbm=ndbm
1768                 ol_with_ldbm_api=ndbm
1769
1770                 if test $ol_cv_lib_ndbm != yes ; then
1771                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
1772                 fi
1773         fi
1774 fi
1775
1776 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
1777         AC_MSG_WARN(could not find suitable LDBM backend)
1778         if test $ol_enable_ldbm = yes ; then
1779                 AC_MSG_ERROR(select appropriate LDBM options or disable)
1780         fi
1781
1782         AC_MSG_WARN(disabling LDBM)
1783         ol_enable_ldbm=no
1784 fi
1785
1786 dnl ----------------------------------------------------------------
1787 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
1788         LINK_BINS_DYNAMIC="yes"
1789 else
1790         LINK_BINS_DYNAMIC="no"
1791 fi
1792
1793 dnl ----------------------------------------------------------------
1794 if test $ol_enable_wrappers != no ; then
1795         AC_CHECK_HEADERS(tcpd.h)
1796
1797         if test $ac_cv_header_tcpd_h != yes ; then
1798                 have_wrappers=no
1799         else
1800                 AC_TRY_COMPILE([
1801 int allow_severity = 0;
1802 int deny_severity  = 0;
1803                 ],[hosts_access()],[have_wrappers=yes],[have_wrappers=no])
1804         fi
1805
1806         if test $have_wrappers = yes ; then
1807                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1808                 WRAP_LIBS="-lwrap"
1809
1810                 dnl We add another check for -lnsl since some libwrap's
1811                 dnl need it, but it isn't always included from above
1812                 AC_CHECK_LIB(nsl, main)
1813         else
1814                 AC_MSG_WARN(could not find -lwrap)
1815                 if test $ol_enable_wrappers = yes ; then
1816                         AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
1817                 fi
1818
1819                 AC_MSG_WARN(disabling wrappers support)
1820                 ol_enable_wrappers=no
1821                 WRAP_LIBS=""
1822         fi
1823 fi
1824
1825 dnl ----------------------------------------------------------------
1826 if test $ol_enable_syslog != no ; then
1827         AC_CHECK_FUNC(openlog)
1828         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
1829                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1830         fi
1831         ol_enable_syslog=$ac_cv_func_openlog
1832 fi
1833
1834 dnl ----------------------------------------------------------------
1835 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
1836 dnl if test $ol_enable_dmalloc != no ; then
1837 dnl     AC_CHECK_HEADERS(dmalloc.h)
1838 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
1839 dnl fi
1840
1841 dnl ----------------------------------------------------------------
1842 dnl SQL
1843 ol_link_sql=no
1844 if test $ol_enable_sql != no ; then
1845         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
1846         if test $have_iodbc = yes ; then
1847                 ol_link_sql="-liodbc"
1848         else
1849                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
1850                 if test $have_odbc = yes ; then
1851                         ol_link_sql="-lodbc"
1852                 fi
1853         fi
1854
1855         if test $ol_link_sql != no ; then
1856                 SLAPD_SQL_LIBS="$ol_link_sql"
1857
1858         elif test $ol_enable_sql != auto ; then
1859                 AC_MSG_ERROR([could not locate suitable ODBC library])
1860         fi
1861 fi
1862
1863 dnl ----------------------------------------------------------------
1864 dnl TCL
1865 if test $ol_enable_tcl != no ; then
1866         AC_CHECK_HEADERS(tcl.h)
1867
1868         if test $ac_cv_header_tcl_h != yes ; then
1869                 have_tcl=no
1870         else
1871                 for lib in tcl tcl7.6 tcl8.0 tcl8.2 ; do
1872                         AC_CHECK_LIB($lib,main,
1873                           [have_tcl=yes
1874                            if test x"$ol_with_tcl_module" = "xstatic" ; then
1875                                SLAPD_LIBS="$SLAPD_LIBS -l${lib}"
1876                            else
1877                                MOD_TCL_LIB="-l${lib}"
1878                            fi;break],[have_tcl=no])
1879                 done
1880         fi
1881
1882         if test $have_tcl != yes ; then
1883                 AC_MSG_WARN([could not find -ltcl])
1884                 if test $ol_enable_tcl = yes ; then
1885                         AC_MSG_ERROR([could not find tcl, select appropriate options or disable])
1886                 fi
1887
1888                 ol_enable_tcl=no
1889         fi
1890 fi
1891
1892 dnl ----------------------------------------------------------------
1893 dnl ud needs termcap (should insert check here)
1894 ol_link_termcap=no
1895 AC_CHECK_HEADERS(termcap.h ncurses.h)
1896
1897 if test $ol_link_termcap = no ; then
1898         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
1899         if test $have_termcap = yes ; then
1900                 AC_DEFINE(HAVE_TERMCAP, 1, [define if you have -ltermcap])
1901                 ol_link_termcap=yes
1902                 TERMCAP_LIBS=-ltermcap
1903         fi
1904 fi
1905
1906 if test $ol_link_termcap = no ; then
1907         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
1908         if test $have_ncurses = yes ; then
1909                 AC_DEFINE(HAVE_NCURSES, 1, [define if you have -lncurses])
1910                 ol_link_termcap=yes
1911                 TERMCAP_LIBS=-lncurses
1912         fi
1913 fi
1914
1915 if test $ol_link_termcap = no ; then
1916         AC_DEFINE(NO_TERMCAP,1, [define if you have no termcap support])
1917         TERMCAP_LIBS=
1918 fi
1919
1920 dnl ----------------------------------------------------------------
1921 dnl
1922 dnl Check for Cyrus SASL
1923 dnl
1924 ol_link_sasl=no
1925 ol_link_spasswd=no
1926 if test $ol_with_cyrus_sasl != no ; then
1927         AC_CHECK_HEADERS(sasl.h)
1928
1929         if test $ac_cv_header_sasl_h = yes ; then
1930                 AC_CHECK_LIB(sasl, sasl_client_init,
1931                         [have_cyrus_sasl=yes], [have_cyrus_sasl=no])
1932
1933                 if test $have_cyrus_sasl != no ; then
1934                         SASL_LIBS="-lsasl"
1935                         AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
1936                         ol_link_sasl=yes
1937                 fi
1938         fi
1939
1940         if test $ol_link_sasl = no ; then
1941                 if test $ol_with_cyrus_sasl != auto ; then
1942                         AC_MSG_ERROR([Could not locate Cyrus SASL])
1943                 else
1944                         AC_MSG_WARN([Could not locate Cyrus SASL])
1945                         AC_MSG_WARN([SASL authentication not supported!])
1946                         if test $ol_link_tls = no ; then
1947                                 AC_MSG_WARN([Strong authentication not supported!])
1948                         fi
1949                 fi
1950
1951         elif test $ol_enable_spasswd != no ; then
1952                 ol_link_spasswd=yes
1953         fi
1954
1955 else
1956         AC_MSG_WARN([SASL authentication not supported!])
1957         if test $ol_link_tls = no ; then
1958                 AC_MSG_WARN([Strong authentication not supported!])
1959         fi
1960 fi
1961
1962 dnl ----------------------------------------------------------------
1963 dnl Check for entropy sources
1964 if test $cross_compiling != yes ; then
1965         dev=no
1966         if test -r /dev/urandom ; then
1967                 dev="/dev/urandom";
1968         elif test -r /idev/urandom ; then
1969                 dev="/idev/urandom";
1970         elif test -r /dev/srandom ; then
1971                 dev="/dev/srandom";
1972         elif test -r /dev/random ; then
1973                 dev="/dev/random";
1974         elif test -r /idev/random ; then
1975                 dev="/idev/random";
1976         fi
1977
1978         if test $dev != no ; then
1979                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
1980         fi
1981 fi
1982
1983 dnl ----------------------------------------------------------------
1984 dnl
1985 dnl Check for fetch URL support
1986 dnl             should be extended to support other fetch URL APIs
1987 dnl
1988 ol_link_fetch=no
1989 if test $ol_with_fetch != no ; then
1990         OL_LIB_FETCH
1991
1992         if test $ol_cv_lib_fetch != no ; then
1993                 LDIF_LIBS="$LDIF_LIBS $ol_link_fetch"
1994                 ol_link_fetch=freebsd
1995
1996         elif test $ol_with_fetch != auto ; then
1997                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
1998         fi 
1999 fi
2000
2001 dnl ----------------------------------------------------------------
2002 dnl
2003 dnl Check for GNU readline
2004 dnl
2005 ol_link_readline=no
2006 if test $ol_with_readline != no ; then
2007         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
2008
2009         if test $ac_cv_header_readline_readline_h = yes ; then
2010                 save_LIBS="$LIBS"
2011                 LIBS="$TERMCAP_LIBS $LIBS"
2012                 AC_CHECK_LIB(readline, readline, 
2013                         [have_readline=yes], [have_readline=no])
2014                 LIBS="$save_LIBS"
2015                         
2016                 if test $have_readline = yes ; then
2017                         ol_with_readline=found
2018                         ol_link_readline=yes
2019
2020                         READLINE_LIBS="-lreadline"
2021                 fi
2022         fi
2023 fi
2024
2025 if test $ol_link_readline = yes ; then
2026         AC_DEFINE(HAVE_READLINE, 1, [define if you have -lreadline])
2027 fi
2028
2029
2030 dnl ----------------------------------------------------------------
2031 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2032 if test $ol_enable_crypt != no ; then
2033         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2034                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2035                         have_crypt=yes], [have_crypt=no])])
2036
2037         if test $have_crypt = yes ; then
2038                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2039         else
2040                 AC_MSG_WARN(could not find crypt)
2041                 if test $ol_enable_crypt = yes ; then
2042                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
2043                 fi
2044
2045                 AC_MSG_WARN(disabling crypt support)
2046                 ol_enable_crypt=no
2047         fi
2048 fi
2049
2050 dnl ----------------------------------------------------------------
2051 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2052 if test $ol_enable_proctitle != no ; then
2053         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2054                 AC_CHECK_LIB(util, setproctitle,
2055                         [have_setproctitle=yes
2056                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2057                         [have_setproctitle=no
2058                         LIBOBJS="$LIBOBJS setproctitle.o"
2059                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2060
2061         if test $have_setproctitle = yes ; then
2062                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2063                         [define if setproctitle(3) is available])
2064         fi
2065 fi
2066
2067 dnl ----------------------------------------------------------------
2068 dnl Check for SLPv2 Compliant API Library
2069 if test $ol_enable_slp != no ; then
2070         AC_CHECK_HEADERS( slp.h )
2071
2072         if test $ac_cv_header_slp_h = yes ; then
2073                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2074                 if test $have_slp = yes ; then
2075                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2076                         SLAPD_SLP_LIBS=-lslp
2077                 fi
2078
2079         elif test $ol_enable_slp = yes ; then
2080                 AC_MSG_ERROR([SLP not found])
2081         fi
2082 fi
2083
2084 dnl ----------------------------------------------------------------
2085 dnl Checks for typedefs, structures, and compiler characteristics.
2086 AC_TYPE_MODE_T
2087 AC_TYPE_OFF_T
2088 AC_TYPE_PID_T
2089 AM_TYPE_PTRDIFF_T
2090 AC_TYPE_SIGNAL
2091 AC_TYPE_SIZE_T
2092
2093 AC_CHECK_TYPE(ssize_t, [signed int])
2094 AC_CHECK_TYPE(caddr_t,  [char *])
2095
2096 OL_TYPE_SOCKLEN_T
2097 AC_STRUCT_ST_BLKSIZE
2098 AC_HEADER_TIME
2099 AC_STRUCT_TM
2100 AC_TYPE_UID_T
2101 OL_TYPE_SIG_ATOMIC_T
2102
2103 dnl AC_TYPE_GETGROUPS
2104
2105 OL_STRUCT_PASSWD_PW_GECOS
2106 OL_STRUCT_PASSWD_PW_PASSWD
2107
2108 OL_C_UPPER_LOWER
2109 AC_C_CONST
2110 OL_C_VOLATILE
2111
2112 if test $cross_compiling = yes ; then
2113         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2114 else
2115         AC_C_BIGENDIAN
2116 fi
2117
2118 AC_COMPILE_CHECK_SIZEOF(short) 
2119 AC_COMPILE_CHECK_SIZEOF(int) 
2120 AC_COMPILE_CHECK_SIZEOF(long)
2121
2122 if test "$ac_cv_sizeof_int" -lt 4 ; then
2123         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2124
2125         AC_DEFINE(LBER_INT_T,long)
2126 else
2127         AC_DEFINE(LBER_INT_T,int)
2128 fi
2129
2130 AC_DEFINE(LBER_LEN_T,long)
2131 AC_DEFINE(LBER_SOCKET_T,int)
2132 AC_DEFINE(LBER_TAG_T,long)
2133
2134 dnl ----------------------------------------------------------------
2135 dnl Checks for library functions.
2136 AC_FUNC_MEMCMP
2137 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2138 AC_FUNC_STRFTIME
2139 dnl AM_FUNC_STRTOD
2140
2141 OL_FUNC_INET_ATON
2142
2143 dnl Check for NT specific routines
2144 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2145
2146 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2147         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2148 ])
2149
2150 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2151         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2152 ])
2153
2154 AC_FUNC_VPRINTF
2155
2156 if test $ac_cv_func_vprintf = yes ; then
2157         dnl check for vsnprintf
2158         AC_CHECK_FUNCS(vsnprintf vsprintf)
2159 fi
2160
2161 AC_CHECK_FUNCS(         \
2162         bcopy                   \
2163         closesocket             \
2164         chroot                  \
2165         endgrent                \
2166         endpwent                \
2167         flock                   \
2168         getdtablesize   \
2169         getgrgid                \
2170         gethostname             \
2171         getpass                 \
2172         getpassphrase   \
2173         getpwuid                \
2174         getpwnam                \
2175         getspnam                \
2176         gettimeofday    \
2177         initgroups              \
2178         lockf                   \
2179         memcpy                  \
2180         memmove                 \
2181         mkstemp                 \
2182         pipe                    \
2183         read                    \
2184         recv                    \
2185         recvfrom                \
2186         setpwfile               \
2187         setgid                  \
2188         setegid                 \
2189         setsid                  \
2190         setuid                  \
2191         seteuid                 \
2192         sigaction               \
2193         signal                  \
2194         sigset                  \
2195         snprintf                \
2196         strdup                  \
2197         strerror                \
2198         strpbrk                 \
2199         strrchr                 \
2200         strsep                  \
2201         strstr                  \
2202         strtol                  \
2203         strtoul                 \
2204         strspn                  \
2205         sysconf                 \
2206         waitpid                 \
2207         wait4                   \
2208         write                   \
2209         send                    \
2210         sendto                  \
2211 )
2212
2213 dnl We actually may need to replace more than this.
2214 AC_REPLACE_FUNCS(getopt tempnam)
2215
2216 if test "$ac_cv_func_getopt" != yes; then
2217     LIBSRCS="$LIBSRCS getopt.c"
2218 fi
2219
2220 if test "$ac_cv_func_tempnam" != yes; then
2221     LIBSRCS="$LIBSRCS tempnam.c"
2222 fi
2223
2224 dnl ----------------------------------------------------------------
2225 # Check Configuration
2226 OL_SYS_ERRLIST
2227
2228 dnl ----------------------------------------------------------------
2229 dnl Sort out defines
2230
2231 if test "$ol_enable_debug" != no ; then
2232         AC_DEFINE(LDAP_DEBUG,1,
2233                 [define this to add debugging code])
2234 fi
2235 if test "$ol_enable_syslog" = yes ; then
2236         AC_DEFINE(LDAP_SYSLOG,1,
2237                 [define this to add syslog code])
2238 fi
2239 if test "$ol_enable_cache" = no ; then
2240         AC_DEFINE(LDAP_NOCACHE,1,
2241                 [define this to remove -lldap cache support])
2242 fi
2243 if test "$ol_link_kbind" != no ; then
2244         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2245 fi
2246 if test "$ol_enable_proctitle" != no ; then
2247         AC_DEFINE(LDAP_PROCTITLE,1,
2248                 [define this for LDAP process title support])
2249 fi
2250 if test "$ol_enable_referrals" != no ; then
2251         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2252 fi
2253 if test "$ol_enable_local" != no; then
2254         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2255 fi
2256 if test "$ol_link_ipv6" != no; then
2257         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2258 fi
2259 if test "$ol_enable_cleartext" != no ; then
2260         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2261 fi
2262 if test "$ol_enable_crypt" != no ; then
2263         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2264 fi
2265 if test "$ol_link_kpasswd" != no ; then
2266         AC_DEFINE(SLAPD_KPASSWD,1,[define to support Kerberos passwords])
2267 fi
2268 if test "$ol_link_spasswd" != no ; then
2269         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2270 fi
2271 dnl if test "$ol_enable_multimaster" != no ; then
2272 dnl     AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2273 dnl fi
2274 if test "$ol_enable_phonetic" != no ; then
2275         AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic])
2276 fi
2277 if test "$ol_enable_rlookups" != no ; then
2278         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2279 fi
2280 if test "$ol_enable_aci" != no ; then
2281         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2282 fi
2283
2284 if test "$ol_link_modules" != no ; then
2285         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2286         BUILD_SLAPD=yes
2287         SLAPD_MODULES_LDFLAGS="-dlopen self"
2288 fi
2289
2290 if test "$ol_enable_bdb" != no ; then
2291         AC_DEFINE(SLAPD_BDB,1,[define to support BDB backend])
2292         BUILD_SLAPD=yes
2293         BUILD_BDB=yes
2294         if test "$ol_with_bdb_module" != static ; then
2295                 AC_DEFINE(SLAPD_BDB_DYNAMIC,1,
2296                         [define to support dynamic BDB backend])
2297                 BUILD_BDB=mod
2298                 BUILD_BDB_DYNAMIC=shared
2299                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-bdb/back_bdb.la"
2300         fi
2301 fi
2302
2303 if test "$ol_link_dnssrv" != no ; then
2304         AC_DEFINE(SLAPD_DNSSRV,1,[define to support DNS SRV backend])
2305         BUILD_SLAPD=yes
2306         BUILD_DNSSRV=yes
2307         if test "$ol_with_dnssrv_module" != static ; then
2308                 AC_DEFINE(SLAPD_DNSSRV_DYNAMIC,1,
2309                         [define to support dynamic DNS SRV backend])
2310                 BUILD_DNSSRV=mod
2311                 BUILD_DNSSRV_DYNAMIC=shared
2312                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-dnssrv/back_dnssrv.la"
2313         fi
2314 fi
2315
2316 if test "$ol_enable_ldap" != no ; then
2317         AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
2318         BUILD_SLAPD=yes
2319         BUILD_LDAP=yes
2320         if test "$ol_with_ldap_module" != static ; then
2321                 AC_DEFINE(SLAPD_LDAP_DYNAMIC,1,
2322                         [define to support dynamic LDAP backend])
2323                 BUILD_LDAP=mod
2324                 BUILD_LDAP_DYNAMIC=shared
2325                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldap/back_ldap.la"
2326         fi
2327 fi
2328
2329 if test "$ol_link_ldbm" != no ; then
2330         AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
2331         BUILD_SLAPD=yes
2332         BUILD_LDBM=yes
2333         if test "$ol_with_ldbm_module" != static ; then
2334                 AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
2335                         [define to support dynamic LDBM backend])
2336                 BUILD_LDBM=mod
2337                 BUILD_LDBM_DYNAMIC=shared
2338                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldbm/back_ldbm.la"
2339         fi
2340 fi
2341
2342 if test "$ol_enable_passwd" != no ; then
2343         AC_DEFINE(SLAPD_PASSWD,1,[define to support PASSWD backend])
2344         BUILD_SLAPD=yes
2345         BUILD_PASSWD=yes
2346         if test "$ol_with_passwd_module" != static ; then
2347                 AC_DEFINE(SLAPD_PASSWD_DYNAMIC,1,
2348                         [define to support dynamic PASSWD backend])
2349                 BUILD_PASSWD=mod
2350                 BUILD_PASSWD_DYNAMIC=shared
2351                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-passwd/back_passwd.la"
2352         fi
2353 fi
2354
2355 if test "$ol_link_perl" != no ; then
2356         AC_DEFINE(SLAPD_PERL,1,[define to support PERL backend])
2357         BUILD_SLAPD=yes
2358         BUILD_PERL=yes
2359         if test "$ol_with_perl_module" != static ; then
2360                 AC_DEFINE(SLAPD_PERL_DYNAMIC,1,
2361                         [define to support dynamic PERL backend])
2362                 BUILD_PERL=mod
2363                 BUILD_PERL_DYNAMIC=shared
2364                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-perl/back_perl.la"
2365         fi
2366 fi
2367
2368 if test "$ol_enable_shell" != no ; then
2369         AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
2370         BUILD_SLAPD=yes
2371         BUILD_SHELL=yes
2372         if test "$ol_with_shell_module" != static ; then
2373                 AC_DEFINE(SLAPD_SHELL_DYNAMIC,1,
2374                         [define to support dynamic SHELL backend])
2375                 BUILD_SHELL=mod
2376                 BUILD_SHELL_DYNAMIC=shared
2377                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-shell/back_shell.la"
2378         fi
2379 fi
2380
2381 if test "$ol_enable_tcl" != no ; then
2382         AC_DEFINE(SLAPD_TCL,1,[define to support TCL backend])
2383         BUILD_SLAPD=yes
2384         BUILD_TCL=yes
2385         if test "$ol_with_tcl_module" != static; then
2386                 AC_DEFINE(SLAPD_TCL_DYNAMIC,1,
2387                         [define to support dynamic TCL backend])
2388                 BUILD_TCL=mod
2389                 BUILD_TCL_DYNAMIC=shared
2390                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-tcl/back_tcl.la"
2391         fi
2392 fi
2393
2394 if test "$ol_link_sql" != no ; then
2395         AC_DEFINE(SLAPD_SQL,1,[define to support SQL backend])
2396         BUILD_SLAPD=yes
2397         BUILD_SQL=yes
2398         if test "$ol_with_sql_module" != static; then
2399                 AC_DEFINE(SLAPD_SQL_DYNAMIC,1,
2400                         [define to support dynamic SQL backend])
2401                 BUILD_SQL=mod
2402                 BUILD_SQL_DYNAMIC=shared
2403                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-sql/back_sql.la"
2404         fi
2405 fi
2406
2407 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2408         $BUILD_SLAPD = yes ; then
2409         BUILD_SLURPD=yes
2410 fi
2411
2412 dnl ----------------------------------------------------------------
2413
2414 if test "$LINK_BINS_DYNAMIC" = yes; then
2415     LIB_LINKAGE=DYN
2416     LT_LIB_LINKAGE=shared
2417 else
2418     LIB_LINKAGE=STAT
2419     LT_LIB_LINKAGE=static
2420 fi
2421
2422 if test "$ac_cv_mingw32" = yes ; then
2423     PLAT=NT
2424     DYN_EXT=dll
2425 else
2426     PLAT=UNIX
2427     DYN_EXT=so
2428 fi
2429
2430 AC_SUBST(LIBSRCS)
2431
2432 AC_SUBST(PLAT)
2433 AC_SUBST(LIB_LINKAGE)
2434 AC_SUBST(LT_LIB_LINKAGE)
2435 AC_SUBST(DYN_EXT)
2436
2437 AC_SUBST(BUILD_SLAPD)
2438   AC_SUBST(BUILD_BDB)
2439   AC_SUBST(BUILD_DNSSRV)
2440   AC_SUBST(BUILD_LDAP)
2441   AC_SUBST(BUILD_LDBM)
2442   AC_SUBST(BUILD_PASSWD)
2443   AC_SUBST(BUILD_PERL)
2444   AC_SUBST(BUILD_SHELL)
2445   AC_SUBST(BUILD_SQL)
2446   AC_SUBST(BUILD_TCL)
2447   AC_SUBST(BUILD_BDB_DYNAMIC)
2448   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
2449   AC_SUBST(BUILD_LDAP_DYNAMIC)
2450   AC_SUBST(BUILD_LDBM_DYNAMIC)
2451   AC_SUBST(BUILD_PASSWD_DYNAMIC)
2452   AC_SUBST(BUILD_PERL_DYNAMIC)
2453   AC_SUBST(BUILD_SHELL_DYNAMIC)
2454   AC_SUBST(BUILD_SQL_DYNAMIC)
2455   AC_SUBST(BUILD_TCL_DYNAMIC)
2456 AC_SUBST(BUILD_SLURPD)
2457
2458 AC_SUBST(LDAP_LIBS)
2459 AC_SUBST(LDIF_LIBS)
2460 AC_SUBST(SLAPD_LIBS)
2461 AC_SUBST(SLURPD_LIBS)
2462 AC_SUBST(LDBM_LIBS)
2463 AC_SUBST(LTHREAD_LIBS)
2464 AC_SUBST(LUTIL_LIBS)
2465 AC_SUBST(WRAP_LIBS)
2466 AC_SUBST(MOD_TCL_LIB)
2467 AC_SUBST(LINK_BINS_DYNAMIC)
2468
2469 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2470 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2471 AC_SUBST(SLAPD_MODULES_LIST)
2472
2473 AC_SUBST(PERL_CPPFLAGS)
2474 AC_SUBST(SLAPD_PERL_LDFLAGS)
2475 AC_SUBST(MOD_PERL_LDFLAGS)
2476
2477 AC_SUBST(KRB4_LIBS)
2478 AC_SUBST(KRB5_LIBS)
2479 AC_SUBST(READLINE_LIBS)
2480 AC_SUBST(SASL_LIBS)
2481 AC_SUBST(TERMCAP_LIBS)
2482 AC_SUBST(TLS_LIBS)
2483 AC_SUBST(MODULES_LIBS)
2484 AC_SUBST(AUTH_LIBS)
2485
2486 AC_SUBST(SLAPD_SLP_LIBS)
2487
2488 AC_SUBST(SLAPD_SQL_LDFLAGS)
2489 AC_SUBST(SLAPD_SQL_LIBS)
2490 AC_SUBST(SLAPD_SQL_INCLUDES)
2491
2492 dnl ----------------------------------------------------------------
2493 dnl final output
2494 dnl
2495
2496 AC_OUTPUT( \
2497 Makefile:build/top.mk:Makefile.in:build/dir.mk \
2498 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
2499 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
2500 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
2501 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
2502 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
2503 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
2504 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
2505 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
2506 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
2507 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
2508 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
2509 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
2510 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
2511 clients/maildap/Makefile:build/top.mk:clients/maildap/Makefile.in:build/rules.mk \
2512 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
2513 include/Makefile:build/top.mk:include/Makefile.in \
2514 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
2515 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk    \
2516 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2517 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2518 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
2519 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk  \
2520 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk  \
2521 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
2522 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
2523 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
2524 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
2525 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
2526 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
2527 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
2528 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
2529 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
2530 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
2531 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
2532 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
2533 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
2534 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
2535 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
2536 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
2537 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
2538 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
2539 contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
2540 contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
2541 contrib/web_ldap/Makefile:build/top.mk:contrib/web_ldap/Makefile.in:build/rules.mk \
2542 ,[
2543 date > stamp-h
2544 echo Please \"make depend\" to build dependencies
2545 ])