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