]> git.sur5r.net Git - openldap/blob - configure.in
Remove __db_lock.share file
[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
1732                 if( -e __db_lock.share ) rm -f __db_lock.share
1733         fi
1734
1735         if test $ol_cv_berkeley_db != no ; then
1736                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1737                         [define this if Berkeley DB is available])
1738
1739                 ol_link_ldbm=berkeley
1740                 ol_with_ldbm_api=db
1741
1742                 if test $ol_with_ldbm_type = hash ; then
1743                         AC_DEFINE(LDBM_USE_DBHASH,1,
1744                                 [define this to use DBHASH w/ LDBM backend])
1745                 else
1746                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1747                                 [define this to use DBBTREE w/ LDBM backend])
1748                 fi
1749
1750                 dnl $ol_cv_lib_db should be yes or -ldb
1751                 dnl (it could be no, but that would be an error
1752                 if test $ol_cv_lib_db != yes ; then
1753                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1754                 fi
1755         fi
1756 fi
1757
1758 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1759         AC_MSG_WARN(Could not find LDBM with BTREE support)
1760         ol_with_ldbm_api=none
1761 fi
1762
1763 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1764         OL_MDBM
1765
1766         if test $ol_cv_mdbm = yes ; then
1767                 ol_link_ldbm=mdbm
1768                 ol_with_ldbm_api=mdbm
1769                 if test $ol_cv_lib_mdbm != yes ; then
1770                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1771                 fi
1772         fi
1773 fi
1774
1775 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
1776         OL_GDBM
1777
1778         if test $ol_cv_gdbm = yes ; then
1779                 ol_link_ldbm=gdbm
1780                 ol_with_ldbm_api=gdbm
1781
1782                 if test $ol_cv_lib_gdbm != yes ; then
1783                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
1784                 fi
1785         fi
1786 fi
1787
1788 if test $ol_with_ldbm_api = ndbm ; then
1789         OL_NDBM
1790
1791         if test $ol_cv_ndbm = yes ; then
1792                 ol_link_ldbm=ndbm
1793                 ol_with_ldbm_api=ndbm
1794
1795                 if test $ol_cv_lib_ndbm != yes ; then
1796                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
1797                 fi
1798         fi
1799 fi
1800
1801 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
1802         AC_MSG_WARN(could not find suitable LDBM backend)
1803         if test $ol_enable_ldbm = yes ; then
1804                 AC_MSG_ERROR(select appropriate LDBM options or disable)
1805         fi
1806
1807         AC_MSG_WARN(disabling LDBM)
1808         ol_enable_ldbm=no
1809 fi
1810
1811 dnl ----------------------------------------------------------------
1812 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
1813         LINK_BINS_DYNAMIC="yes"
1814 else
1815         LINK_BINS_DYNAMIC="no"
1816 fi
1817
1818 dnl ----------------------------------------------------------------
1819 if test $ol_enable_wrappers != no ; then
1820         AC_CHECK_HEADERS(tcpd.h)
1821
1822         if test $ac_cv_header_tcpd_h != yes ; then
1823                 have_wrappers=no
1824         else
1825                 AC_TRY_COMPILE([
1826 int allow_severity = 0;
1827 int deny_severity  = 0;
1828                 ],[hosts_access()],[have_wrappers=yes],[have_wrappers=no])
1829         fi
1830
1831         if test $have_wrappers = yes ; then
1832                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1833                 WRAP_LIBS="-lwrap"
1834
1835                 dnl We add another check for -lnsl since some libwrap's
1836                 dnl need it, but it isn't always included from above
1837                 AC_CHECK_LIB(nsl, main)
1838         else
1839                 AC_MSG_WARN(could not find -lwrap)
1840                 if test $ol_enable_wrappers = yes ; then
1841                         AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
1842                 fi
1843
1844                 AC_MSG_WARN(disabling wrappers support)
1845                 ol_enable_wrappers=no
1846                 WRAP_LIBS=""
1847         fi
1848 fi
1849
1850 dnl ----------------------------------------------------------------
1851 if test $ol_enable_syslog != no ; then
1852         AC_CHECK_FUNC(openlog)
1853         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
1854                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1855         fi
1856         ol_enable_syslog=$ac_cv_func_openlog
1857 fi
1858
1859 dnl ----------------------------------------------------------------
1860 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
1861 dnl if test $ol_enable_dmalloc != no ; then
1862 dnl     AC_CHECK_HEADERS(dmalloc.h)
1863 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
1864 dnl fi
1865
1866 dnl ----------------------------------------------------------------
1867 dnl SQL
1868 ol_link_sql=no
1869 if test $ol_enable_sql != no ; then
1870         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
1871         if test $have_iodbc = yes ; then
1872                 ol_link_sql="-liodbc"
1873         else
1874                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
1875                 if test $have_odbc = yes ; then
1876                         ol_link_sql="-lodbc"
1877                 fi
1878         fi
1879
1880         if test $ol_link_sql != no ; then
1881                 SLAPD_SQL_LIBS="$ol_link_sql"
1882
1883         elif test $ol_enable_sql != auto ; then
1884                 AC_MSG_ERROR([could not locate suitable ODBC library])
1885         fi
1886 fi
1887
1888 dnl ----------------------------------------------------------------
1889 dnl TCL
1890 if test $ol_enable_tcl != no ; then
1891         AC_CHECK_HEADERS(tcl.h)
1892
1893         if test $ac_cv_header_tcl_h != yes ; then
1894                 have_tcl=no
1895         else
1896                 for lib in tcl tcl7.6 tcl8.0 tcl8.2 ; do
1897                         AC_CHECK_LIB($lib,main,
1898                           [have_tcl=yes
1899                            if test x"$ol_with_tcl_module" = "xstatic" ; then
1900                                SLAPD_LIBS="$SLAPD_LIBS -l${lib}"
1901                            else
1902                                MOD_TCL_LIB="-l${lib}"
1903                            fi;break],[have_tcl=no])
1904                 done
1905         fi
1906
1907         if test $have_tcl != yes ; then
1908                 AC_MSG_WARN([could not find -ltcl])
1909                 if test $ol_enable_tcl = yes ; then
1910                         AC_MSG_ERROR([could not find tcl, select appropriate options or disable])
1911                 fi
1912
1913                 ol_enable_tcl=no
1914         fi
1915 fi
1916
1917 dnl ----------------------------------------------------------------
1918 dnl ud needs termcap (should insert check here)
1919 ol_link_termcap=no
1920 AC_CHECK_HEADERS(termcap.h ncurses.h)
1921
1922 if test $ol_link_termcap = no ; then
1923         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
1924         if test $have_termcap = yes ; then
1925                 AC_DEFINE(HAVE_TERMCAP, 1, [define if you have -ltermcap])
1926                 ol_link_termcap=yes
1927                 TERMCAP_LIBS=-ltermcap
1928         fi
1929 fi
1930
1931 if test $ol_link_termcap = no ; then
1932         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
1933         if test $have_ncurses = yes ; then
1934                 AC_DEFINE(HAVE_NCURSES, 1, [define if you have -lncurses])
1935                 ol_link_termcap=yes
1936                 TERMCAP_LIBS=-lncurses
1937         fi
1938 fi
1939
1940 if test $ol_link_termcap = no ; then
1941         AC_DEFINE(NO_TERMCAP,1, [define if you have no termcap support])
1942         TERMCAP_LIBS=
1943 fi
1944
1945 dnl ----------------------------------------------------------------
1946 dnl
1947 dnl Check for Cyrus SASL
1948 dnl
1949 ol_link_sasl=no
1950 ol_link_spasswd=no
1951 if test $ol_with_cyrus_sasl != no ; then
1952         AC_CHECK_HEADERS(sasl.h)
1953
1954         if test $ac_cv_header_sasl_h = yes ; then
1955                 AC_CHECK_LIB(sasl, sasl_client_init,
1956                         [have_cyrus_sasl=yes], [have_cyrus_sasl=no])
1957
1958                 if test $have_cyrus_sasl != no ; then
1959                         SASL_LIBS="-lsasl"
1960                         AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
1961                         ol_link_sasl=yes
1962                 fi
1963         fi
1964
1965         if test $ol_link_sasl = no ; then
1966                 if test $ol_with_cyrus_sasl != auto ; then
1967                         AC_MSG_ERROR([Could not locate Cyrus SASL])
1968                 else
1969                         AC_MSG_WARN([Could not locate Cyrus SASL])
1970                         AC_MSG_WARN([SASL authentication not supported!])
1971                         if test $ol_link_tls = no ; then
1972                                 AC_MSG_WARN([Strong authentication not supported!])
1973                         fi
1974                 fi
1975
1976         elif test $ol_enable_spasswd != no ; then
1977                 ol_link_spasswd=yes
1978         fi
1979
1980 else
1981         AC_MSG_WARN([SASL authentication not supported!])
1982         if test $ol_link_tls = no ; then
1983                 AC_MSG_WARN([Strong authentication not supported!])
1984         fi
1985 fi
1986
1987 dnl ----------------------------------------------------------------
1988 dnl Check for entropy sources
1989 if test $cross_compiling != yes ; then
1990         dev=no
1991         if test -r /dev/urandom ; then
1992                 dev="/dev/urandom";
1993         elif test -r /idev/urandom ; then
1994                 dev="/idev/urandom";
1995         elif test -r /dev/srandom ; then
1996                 dev="/dev/srandom";
1997         elif test -r /dev/random ; then
1998                 dev="/dev/random";
1999         elif test -r /idev/random ; then
2000                 dev="/idev/random";
2001         fi
2002
2003         if test $dev != no ; then
2004                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2005         fi
2006 fi
2007
2008 dnl ----------------------------------------------------------------
2009 dnl
2010 dnl Check for fetch URL support
2011 dnl             should be extended to support other fetch URL APIs
2012 dnl
2013 ol_link_fetch=no
2014 if test $ol_with_fetch != no ; then
2015         OL_LIB_FETCH
2016
2017         if test $ol_cv_lib_fetch != no ; then
2018                 LDIF_LIBS="$LDIF_LIBS $ol_link_fetch"
2019                 ol_link_fetch=freebsd
2020
2021         elif test $ol_with_fetch != auto ; then
2022                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2023         fi 
2024 fi
2025
2026 dnl ----------------------------------------------------------------
2027 dnl
2028 dnl Check for GNU readline
2029 dnl
2030 ol_link_readline=no
2031 if test $ol_with_readline != no ; then
2032         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
2033
2034         if test $ac_cv_header_readline_readline_h = yes ; then
2035                 save_LIBS="$LIBS"
2036                 LIBS="$TERMCAP_LIBS $LIBS"
2037                 AC_CHECK_LIB(readline, readline, 
2038                         [have_readline=yes], [have_readline=no])
2039                 LIBS="$save_LIBS"
2040                         
2041                 if test $have_readline = yes ; then
2042                         ol_with_readline=found
2043                         ol_link_readline=yes
2044
2045                         READLINE_LIBS="-lreadline"
2046                 fi
2047         fi
2048 fi
2049
2050 if test $ol_link_readline = yes ; then
2051         AC_DEFINE(HAVE_READLINE, 1, [define if you have -lreadline])
2052 fi
2053
2054
2055 dnl ----------------------------------------------------------------
2056 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2057 if test $ol_enable_crypt != no ; then
2058         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2059                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2060                         have_crypt=yes], [have_crypt=no])])
2061
2062         if test $have_crypt = yes ; then
2063                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2064         else
2065                 AC_MSG_WARN(could not find crypt)
2066                 if test $ol_enable_crypt = yes ; then
2067                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
2068                 fi
2069
2070                 AC_MSG_WARN(disabling crypt support)
2071                 ol_enable_crypt=no
2072         fi
2073 fi
2074
2075 dnl ----------------------------------------------------------------
2076 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2077 if test $ol_enable_proctitle != no ; then
2078         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2079                 AC_CHECK_LIB(util, setproctitle,
2080                         [have_setproctitle=yes
2081                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2082                         [have_setproctitle=no
2083                         LIBOBJS="$LIBOBJS setproctitle.o"
2084                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2085
2086         if test $have_setproctitle = yes ; then
2087                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2088                         [define if setproctitle(3) is available])
2089         fi
2090 fi
2091
2092 dnl ----------------------------------------------------------------
2093 dnl Check for SLPv2 Compliant API Library
2094 if test $ol_enable_slp != no ; then
2095         AC_CHECK_HEADERS( slp.h )
2096
2097         if test $ac_cv_header_slp_h = yes ; then
2098                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2099                 if test $have_slp = yes ; then
2100                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2101                         SLAPD_SLP_LIBS=-lslp
2102                 fi
2103
2104         elif test $ol_enable_slp = yes ; then
2105                 AC_MSG_ERROR([SLP not found])
2106         fi
2107 fi
2108
2109 dnl ----------------------------------------------------------------
2110 dnl Checks for typedefs, structures, and compiler characteristics.
2111 AC_TYPE_MODE_T
2112 AC_TYPE_OFF_T
2113 AC_TYPE_PID_T
2114 AM_TYPE_PTRDIFF_T
2115 AC_TYPE_SIGNAL
2116 AC_TYPE_SIZE_T
2117
2118 AC_CHECK_TYPE(ssize_t, [signed int])
2119 AC_CHECK_TYPE(caddr_t,  [char *])
2120
2121 OL_TYPE_SOCKLEN_T
2122 AC_STRUCT_ST_BLKSIZE
2123 AC_HEADER_TIME
2124 AC_STRUCT_TM
2125 AC_TYPE_UID_T
2126 OL_TYPE_SIG_ATOMIC_T
2127
2128 dnl AC_TYPE_GETGROUPS
2129
2130 OL_STRUCT_PASSWD_PW_GECOS
2131 OL_STRUCT_PASSWD_PW_PASSWD
2132
2133 OL_C_UPPER_LOWER
2134 AC_C_CONST
2135 OL_C_VOLATILE
2136
2137 if test $cross_compiling = yes ; then
2138         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2139 else
2140         AC_C_BIGENDIAN
2141 fi
2142
2143 AC_COMPILE_CHECK_SIZEOF(short) 
2144 AC_COMPILE_CHECK_SIZEOF(int) 
2145 AC_COMPILE_CHECK_SIZEOF(long)
2146
2147 if test "$ac_cv_sizeof_int" -lt 4 ; then
2148         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2149
2150         AC_DEFINE(LBER_INT_T,long)
2151 else
2152         AC_DEFINE(LBER_INT_T,int)
2153 fi
2154
2155 AC_DEFINE(LBER_LEN_T,long)
2156 AC_DEFINE(LBER_SOCKET_T,int)
2157 AC_DEFINE(LBER_TAG_T,long)
2158
2159 dnl ----------------------------------------------------------------
2160 dnl Checks for library functions.
2161 AC_FUNC_MEMCMP
2162 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2163 AC_FUNC_STRFTIME
2164 dnl AM_FUNC_STRTOD
2165
2166 OL_FUNC_INET_ATON
2167
2168 dnl Check for NT specific routines
2169 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2170
2171 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2172         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2173 ])
2174
2175 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2176         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2177 ])
2178
2179 AC_FUNC_VPRINTF
2180
2181 if test $ac_cv_func_vprintf = yes ; then
2182         dnl check for vsnprintf
2183         AC_CHECK_FUNCS(vsnprintf vsprintf)
2184 fi
2185
2186 AC_CHECK_FUNCS(         \
2187         bcopy                   \
2188         closesocket             \
2189         chroot                  \
2190         endgrent                \
2191         endpwent                \
2192         fcntl                   \
2193         flock                   \
2194         getdtablesize   \
2195         getgrgid                \
2196         gethostname             \
2197         getpass                 \
2198         getpassphrase   \
2199         getpwuid                \
2200         getpwnam                \
2201         getspnam                \
2202         gettimeofday    \
2203         initgroups              \
2204         lockf                   \
2205         memcpy                  \
2206         memmove                 \
2207         mkstemp                 \
2208         pipe                    \
2209         read                    \
2210         recv                    \
2211         recvfrom                \
2212         setpwfile               \
2213         setgid                  \
2214         setegid                 \
2215         setsid                  \
2216         setuid                  \
2217         seteuid                 \
2218         sigaction               \
2219         signal                  \
2220         sigset                  \
2221         snprintf                \
2222         strdup                  \
2223         strerror                \
2224         strpbrk                 \
2225         strrchr                 \
2226         strsep                  \
2227         strstr                  \
2228         strtol                  \
2229         strtoul                 \
2230         strspn                  \
2231         sysconf                 \
2232         waitpid                 \
2233         wait4                   \
2234         write                   \
2235         send                    \
2236         sendto                  \
2237 )
2238
2239 dnl We actually may need to replace more than this.
2240 AC_REPLACE_FUNCS(getopt tempnam)
2241
2242 if test "$ac_cv_func_getopt" != yes; then
2243     LIBSRCS="$LIBSRCS getopt.c"
2244 fi
2245
2246 if test "$ac_cv_func_tempnam" != yes; then
2247     LIBSRCS="$LIBSRCS tempnam.c"
2248 fi
2249
2250 dnl ----------------------------------------------------------------
2251 # Check Configuration
2252 OL_SYS_ERRLIST
2253
2254 dnl ----------------------------------------------------------------
2255 dnl Sort out defines
2256
2257 if test "$ol_enable_debug" != no ; then
2258         AC_DEFINE(LDAP_DEBUG,1,
2259                 [define this to add debugging code])
2260 fi
2261 if test "$ol_enable_syslog" = yes ; then
2262         AC_DEFINE(LDAP_SYSLOG,1,
2263                 [define this to add syslog code])
2264 fi
2265 if test "$ol_enable_cache" = no ; then
2266         AC_DEFINE(LDAP_NOCACHE,1,
2267                 [define this to remove -lldap cache support])
2268 fi
2269 if test "$ol_link_kbind" != no ; then
2270         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2271 fi
2272 if test "$ol_enable_proctitle" != no ; then
2273         AC_DEFINE(LDAP_PROCTITLE,1,
2274                 [define this for LDAP process title support])
2275 fi
2276 if test "$ol_enable_referrals" != no ; then
2277         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2278 fi
2279 if test "$ol_enable_local" != no; then
2280         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2281 fi
2282 if test "$ol_link_ipv6" != no; then
2283         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2284 fi
2285 if test "$ol_enable_cleartext" != no ; then
2286         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2287 fi
2288 if test "$ol_enable_crypt" != no ; then
2289         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2290 fi
2291 if test "$ol_link_kpasswd" != no ; then
2292         AC_DEFINE(SLAPD_KPASSWD,1,[define to support Kerberos passwords])
2293 fi
2294 if test "$ol_link_spasswd" != no ; then
2295         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2296 fi
2297 dnl if test "$ol_enable_multimaster" != no ; then
2298 dnl     AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2299 dnl fi
2300 if test "$ol_enable_phonetic" != no ; then
2301         AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic])
2302 fi
2303 if test "$ol_enable_rlookups" != no ; then
2304         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2305 fi
2306 if test "$ol_enable_aci" != no ; then
2307         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2308 fi
2309
2310 if test "$ol_link_modules" != no ; then
2311         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2312         BUILD_SLAPD=yes
2313         SLAPD_MODULES_LDFLAGS="-dlopen self"
2314 fi
2315
2316 if test "$ol_enable_bdb" != no ; then
2317         AC_DEFINE(SLAPD_BDB,1,[define to support BDB backend])
2318         BUILD_SLAPD=yes
2319         BUILD_BDB=yes
2320         if test "$ol_with_bdb_module" != static ; then
2321                 AC_DEFINE(SLAPD_BDB_DYNAMIC,1,
2322                         [define to support dynamic BDB backend])
2323                 BUILD_BDB=mod
2324                 BUILD_BDB_DYNAMIC=shared
2325                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-bdb/back_bdb.la"
2326         fi
2327 fi
2328
2329 if test "$ol_link_dnssrv" != no ; then
2330         AC_DEFINE(SLAPD_DNSSRV,1,[define to support DNS SRV backend])
2331         BUILD_SLAPD=yes
2332         BUILD_DNSSRV=yes
2333         if test "$ol_with_dnssrv_module" != static ; then
2334                 AC_DEFINE(SLAPD_DNSSRV_DYNAMIC,1,
2335                         [define to support dynamic DNS SRV backend])
2336                 BUILD_DNSSRV=mod
2337                 BUILD_DNSSRV_DYNAMIC=shared
2338                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-dnssrv/back_dnssrv.la"
2339         fi
2340 fi
2341
2342 if test "$ol_enable_ldap" != no ; then
2343         AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
2344         BUILD_SLAPD=yes
2345         BUILD_LDAP=yes
2346         if test "$ol_with_ldap_module" != static ; then
2347                 AC_DEFINE(SLAPD_LDAP_DYNAMIC,1,
2348                         [define to support dynamic LDAP backend])
2349                 BUILD_LDAP=mod
2350                 BUILD_LDAP_DYNAMIC=shared
2351                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldap/back_ldap.la"
2352         fi
2353 fi
2354
2355 if test "$ol_link_ldbm" != no ; then
2356         AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
2357         BUILD_SLAPD=yes
2358         BUILD_LDBM=yes
2359         if test "$ol_with_ldbm_module" != static ; then
2360                 AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
2361                         [define to support dynamic LDBM backend])
2362                 BUILD_LDBM=mod
2363                 BUILD_LDBM_DYNAMIC=shared
2364                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldbm/back_ldbm.la"
2365         fi
2366 fi
2367
2368 if test "$ol_enable_meta" != no ; then
2369         if test "$ol_enable_ldap" = no ; then
2370                 AC_MSG_ERROR([need --enable-ldap to use --enable-meta])
2371         fi
2372         if test "$ol_enable_rewrite" = no ; then
2373                 AC_MSG_ERROR([need --enable-rewrite to use --enable-meta])
2374         fi
2375         AC_DEFINE(SLAPD_META,1,[define to support LDAP Metadirectory backend])
2376         BUILD_SLAPD=yes
2377         BUILD_META=yes
2378         if test "$ol_with_meta_module" != static ; then
2379                 AC_DEFINE(SLAPD_META_DYNAMIC,1,
2380                         [define to support dynamic LDAP Metadirectory backend])
2381                 BUILD_META=mod
2382                 BUILD_META_DYNAMIC=shared
2383                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-meta/back_meta.la"
2384         fi
2385 fi
2386
2387 if test "$ol_enable_passwd" != no ; then
2388         AC_DEFINE(SLAPD_PASSWD,1,[define to support PASSWD backend])
2389         BUILD_SLAPD=yes
2390         BUILD_PASSWD=yes
2391         if test "$ol_with_passwd_module" != static ; then
2392                 AC_DEFINE(SLAPD_PASSWD_DYNAMIC,1,
2393                         [define to support dynamic PASSWD backend])
2394                 BUILD_PASSWD=mod
2395                 BUILD_PASSWD_DYNAMIC=shared
2396                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-passwd/back_passwd.la"
2397         fi
2398 fi
2399
2400 if test "$ol_link_perl" != no ; then
2401         AC_DEFINE(SLAPD_PERL,1,[define to support PERL backend])
2402         BUILD_SLAPD=yes
2403         BUILD_PERL=yes
2404         if test "$ol_with_perl_module" != static ; then
2405                 AC_DEFINE(SLAPD_PERL_DYNAMIC,1,
2406                         [define to support dynamic PERL backend])
2407                 BUILD_PERL=mod
2408                 BUILD_PERL_DYNAMIC=shared
2409                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-perl/back_perl.la"
2410         fi
2411 fi
2412
2413 if test "$ol_enable_shell" != no ; then
2414         AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
2415         BUILD_SLAPD=yes
2416         BUILD_SHELL=yes
2417         if test "$ol_with_shell_module" != static ; then
2418                 AC_DEFINE(SLAPD_SHELL_DYNAMIC,1,
2419                         [define to support dynamic SHELL backend])
2420                 BUILD_SHELL=mod
2421                 BUILD_SHELL_DYNAMIC=shared
2422                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-shell/back_shell.la"
2423         fi
2424 fi
2425
2426 if test "$ol_enable_tcl" != no ; then
2427         AC_DEFINE(SLAPD_TCL,1,[define to support TCL backend])
2428         BUILD_SLAPD=yes
2429         BUILD_TCL=yes
2430         if test "$ol_with_tcl_module" != static; then
2431                 AC_DEFINE(SLAPD_TCL_DYNAMIC,1,
2432                         [define to support dynamic TCL backend])
2433                 BUILD_TCL=mod
2434                 BUILD_TCL_DYNAMIC=shared
2435                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-tcl/back_tcl.la"
2436         fi
2437 fi
2438
2439 if test "$ol_link_sql" != no ; then
2440         AC_DEFINE(SLAPD_SQL,1,[define to support SQL backend])
2441         BUILD_SLAPD=yes
2442         BUILD_SQL=yes
2443         if test "$ol_with_sql_module" != static; then
2444                 AC_DEFINE(SLAPD_SQL_DYNAMIC,1,
2445                         [define to support dynamic SQL backend])
2446                 BUILD_SQL=mod
2447                 BUILD_SQL_DYNAMIC=shared
2448                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-sql/back_sql.la"
2449         fi
2450 fi
2451
2452 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2453         $BUILD_SLAPD = yes ; then
2454         BUILD_SLURPD=yes
2455 fi
2456
2457 if test "$ol_enable_rewrite" != no ; then
2458         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2459         BUILD_REWRITE=yes
2460         SLAPD_LIBS="$SLAPD_LIBS -lrewrite"
2461 fi
2462
2463 dnl ----------------------------------------------------------------
2464
2465 if test "$LINK_BINS_DYNAMIC" = yes; then
2466     LIB_LINKAGE=DYN
2467     LT_LIB_LINKAGE=shared
2468 else
2469     LIB_LINKAGE=STAT
2470     LT_LIB_LINKAGE=static
2471 fi
2472
2473 if test "$ac_cv_mingw32" = yes ; then
2474     PLAT=NT
2475     DYN_EXT=dll
2476 else
2477     PLAT=UNIX
2478     DYN_EXT=so
2479 fi
2480
2481 AC_SUBST(LIBSRCS)
2482
2483 AC_SUBST(PLAT)
2484 AC_SUBST(LIB_LINKAGE)
2485 AC_SUBST(LT_LIB_LINKAGE)
2486 AC_SUBST(DYN_EXT)
2487
2488 AC_SUBST(BUILD_SLAPD)
2489   AC_SUBST(BUILD_BDB)
2490   AC_SUBST(BUILD_DNSSRV)
2491   AC_SUBST(BUILD_LDAP)
2492   AC_SUBST(BUILD_LDBM)
2493   AC_SUBST(BUILD_META)
2494   AC_SUBST(BUILD_PASSWD)
2495   AC_SUBST(BUILD_PERL)
2496   AC_SUBST(BUILD_SHELL)
2497   AC_SUBST(BUILD_SQL)
2498   AC_SUBST(BUILD_TCL)
2499   AC_SUBST(BUILD_BDB_DYNAMIC)
2500   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
2501   AC_SUBST(BUILD_LDAP_DYNAMIC)
2502   AC_SUBST(BUILD_LDBM_DYNAMIC)
2503   AC_SUBST(BUILD_META_DYNAMIC)
2504   AC_SUBST(BUILD_PASSWD_DYNAMIC)
2505   AC_SUBST(BUILD_PERL_DYNAMIC)
2506   AC_SUBST(BUILD_SHELL_DYNAMIC)
2507   AC_SUBST(BUILD_SQL_DYNAMIC)
2508   AC_SUBST(BUILD_TCL_DYNAMIC)
2509 AC_SUBST(BUILD_SLURPD)
2510
2511 AC_SUBST(LDAP_LIBS)
2512 AC_SUBST(LDIF_LIBS)
2513 AC_SUBST(SLAPD_LIBS)
2514 AC_SUBST(SLURPD_LIBS)
2515 AC_SUBST(LDBM_LIBS)
2516 AC_SUBST(LTHREAD_LIBS)
2517 AC_SUBST(LUTIL_LIBS)
2518 AC_SUBST(WRAP_LIBS)
2519 AC_SUBST(MOD_TCL_LIB)
2520 AC_SUBST(LINK_BINS_DYNAMIC)
2521
2522 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2523 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2524 AC_SUBST(SLAPD_MODULES_LIST)
2525
2526 AC_SUBST(PERL_CPPFLAGS)
2527 AC_SUBST(SLAPD_PERL_LDFLAGS)
2528 AC_SUBST(MOD_PERL_LDFLAGS)
2529
2530 AC_SUBST(KRB4_LIBS)
2531 AC_SUBST(KRB5_LIBS)
2532 AC_SUBST(READLINE_LIBS)
2533 AC_SUBST(SASL_LIBS)
2534 AC_SUBST(TERMCAP_LIBS)
2535 AC_SUBST(TLS_LIBS)
2536 AC_SUBST(MODULES_LIBS)
2537 AC_SUBST(AUTH_LIBS)
2538
2539 AC_SUBST(SLAPD_SLP_LIBS)
2540
2541 AC_SUBST(SLAPD_SQL_LDFLAGS)
2542 AC_SUBST(SLAPD_SQL_LIBS)
2543 AC_SUBST(SLAPD_SQL_INCLUDES)
2544
2545 dnl ----------------------------------------------------------------
2546 dnl final output
2547 dnl
2548
2549 AC_OUTPUT( \
2550 Makefile:build/top.mk:Makefile.in:build/dir.mk \
2551 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
2552 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
2553 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
2554 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
2555 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
2556 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
2557 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
2558 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
2559 clients/fax500/Makefile:build/top.mk:clients/fax500/Makefile.in:build/rules.mk \
2560 clients/gopher/Makefile:build/top.mk:clients/gopher/Makefile.in:build/rules.mk \
2561 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
2562 clients/rcpt500/Makefile:build/top.mk:clients/rcpt500/Makefile.in:build/rules.mk \
2563 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
2564 clients/maildap/Makefile:build/top.mk:clients/maildap/Makefile.in:build/rules.mk \
2565 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
2566 include/Makefile:build/top.mk:include/Makefile.in \
2567 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
2568 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk    \
2569 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2570 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2571 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
2572 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk  \
2573 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk  \
2574 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
2575 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
2576 libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk    \
2577 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
2578 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
2579 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
2580 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
2581 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
2582 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
2583 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
2584 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
2585 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
2586 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
2587 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
2588 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
2589 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
2590 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
2591 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
2592 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
2593 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
2594 contrib/Makefile:build/top.mk:contrib/Makefile.in:build/dir.mk \
2595 contrib/saucer/Makefile:build/top.mk:contrib/saucer/Makefile.in:build/rules.mk \
2596 contrib/web_ldap/Makefile:build/top.mk:contrib/web_ldap/Makefile.in:build/rules.mk \
2597 ,[
2598 date > stamp-h
2599 echo Please \"make depend\" to build dependencies
2600 ])