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