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