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