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