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