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