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