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