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