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