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