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