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