]> git.sur5r.net Git - openldap/blob - configure.in
Tweak prev commit, avoid referencing syncop when resetting qtask
[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 AC_CHECK_HEADERS( poll.h )
954
955 dnl ----------------------------------------------------------------
956 AC_CHECK_HEADERS( sys/epoll.h )
957 if test "${ac_cv_header_sys_epoll_h}" = yes; then
958         AC_MSG_CHECKING(for epoll system call)
959         AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
960 {
961         int epfd = epoll_create(256);
962         exit (epfd == -1 ? 1 : 0);
963 }]])],[AC_MSG_RESULT(yes)
964         AC_DEFINE(HAVE_EPOLL,1, [define if your system supports epoll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
965 fi
966
967 dnl ----------------------------------------------------------------
968 AC_CHECK_HEADERS( sys/devpoll.h )
969 dnl "/dev/poll" needs <sys/poll.h> as well...
970 if test "${ac_cv_header_sys_devpoll_h}" = yes \
971                 -a "${ac_cv_header_poll_h}" = yes ; \
972 then
973         AC_MSG_CHECKING(for /dev/poll)
974         AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(int argc, char **argv)
975 {
976         int devpollfd = open("/dev/poll", /* O_RDWR */ 2);
977         exit (devpollfd == -1 ? 1 : 0);
978 }]])],[AC_MSG_RESULT(yes)
979         AC_DEFINE(HAVE_DEVPOLL,1, [define if your system supports /dev/poll])],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
980 fi
981
982 dnl ----------------------------------------------------------------
983 # strerror checks
984 OL_STRERROR
985
986 dnl ----------------------------------------------------------------
987 dnl require POSIX regex
988 AC_CHECK_HEADERS( regex.h )
989 if test "$ac_cv_header_regex_h" != yes ; then
990         AC_MSG_ERROR([POSIX regex.h required.])
991 fi
992 AC_SEARCH_LIBS(regfree, [regex gnuregex],
993         :, AC_MSG_ERROR([POSIX regex required.]))
994
995 OL_POSIX_REGEX
996 if test "$ol_cv_c_posix_regex" = no ; then
997         AC_MSG_ERROR([broken POSIX regex!])
998 fi
999
1000 dnl ----------------------------------------------------------------
1001 dnl UUID Support
1002
1003 have_uuid=no
1004 AC_CHECK_HEADERS(sys/uuid.h)
1005 if test $ac_cv_header_sys_uuid_h = yes ; then
1006         save_LIBS="$LIBS"
1007         AC_SEARCH_LIBS(uuid_to_str, uuid, [have_uuid=yes], :)
1008         LIBS="$save_LIBS"
1009
1010         if test have_uuid = yes ; then
1011                 AC_DEFINE(HAVE_UUID_TO_STR,1,
1012                         [define if you have uuid_to_str()])
1013
1014                 test "$ac_cv_search_uuid_to_str" = "none required" || \
1015                         SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_to_str"
1016         fi
1017 fi
1018
1019 dnl For windows, check for the need of RPCRT for UUID function support
1020 if test $have_uuid = no ; then
1021         AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
1022         save_LIBS="$LIBS"
1023         LIBS="$LIBS -lrpcrt4"
1024         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1025                 int __stdcall UuidCreate(void *);
1026                 int __stdcall UuidToStringA(void *,void **);
1027                 ]], [[
1028                 UuidCreate(0);
1029                 UuidToStringA(0,0);
1030                 ]])],[need_rpcrt=yes],[need_rpcrt=no])
1031         if test $need_rpcrt = yes; then
1032                 SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
1033         fi
1034         LIBS="$save_LIBS"
1035         AC_MSG_RESULT($need_rpcrt)
1036 fi
1037
1038 dnl ----------------------------------------------------------------
1039 dnl Check for resolver routines
1040 OL_RESOLVER_LINK
1041
1042 ol_link_dnssrv=no
1043 if test "$ol_cv_lib_resolver" != no ; then
1044         AC_DEFINE(HAVE_RES_QUERY,1,
1045                 [define if you have res_query()])
1046
1047         if test "$ol_enable_dnssrv" != no ; then
1048                 ol_link_dnssrv=yes
1049         fi
1050
1051         if test "$ol_cv_lib_resolver" != yes ; then
1052                 LIBS="$ol_cv_lib_resolver $LIBS"
1053         fi
1054 fi
1055
1056 if test "$ol_enable_dnssrv" = yes || test "$ol_enable_dnssrv" = mod ; then
1057         if test "$ol_link_dnssrv" = no ; then
1058                 AC_MSG_ERROR([DNSSRV requires res_query()])
1059         fi
1060 else
1061         ol_enable_dnssrv=no
1062 fi
1063
1064 AC_CHECK_FUNCS( hstrerror )
1065
1066 dnl ----------------------------------------------------------------
1067 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1068 dnl PF_LOCAL may use getaddrinfo in available
1069 AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1070
1071 ol_link_ipv6=no
1072 if test $ac_cv_func_getaddrinfo = no || test $ac_cv_func_inet_ntop = no ; then
1073         if test $ol_enable_ipv6 = yes ; then
1074                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1075         fi
1076 elif test $ol_enable_ipv6 != no ; then
1077         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1078                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1079 #                       include <netinet/in.h>
1080 #                       ifdef INET6_ADDRSTRLEN
1081                                 __has_inet6_addrstrlen__;
1082 #                       endif
1083                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1084
1085
1086         AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1087                 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1088 #include <sys/types.h>
1089 #include <sys/socket.h>
1090 ]], [[
1091                         struct sockaddr_storage ss;
1092 ]])],[ol_cv_struct_sockaddr_storage=yes],[ol_cv_struct_sockaddr_storage=no])])
1093
1094         if test $ol_cv_inet6_addrstrlen = yes &&
1095            test $ol_cv_struct_sockaddr_storage = yes ; then
1096                 ol_link_ipv6=yes
1097         elif test $ol_enable_ipv6 = yes &&
1098              test $ol_cv_inet6_addrstrlen = no ; then
1099                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1100         elif test $ol_enable_ipv6 = yes &&
1101              test $ol_cv_struct_sockaddr_storage = no ; then
1102                 AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1103         fi
1104 fi
1105
1106 if test $ol_enable_local != no ; then
1107         AC_CHECK_HEADERS( sys/un.h )
1108
1109         if test $ol_enable_local = auto ; then
1110                 ol_enable_local=$ac_cv_header_sys_un_h
1111         elif test $ac_cv_header_sys_un_h = no ; then
1112                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1113         fi
1114 fi
1115
1116 dnl ----------------------------------------------------------------
1117 dnl Kerberos
1118 ol_link_kbind=no
1119 ol_link_krb5=no
1120 ol_link_krb4=no
1121
1122 case $ol_with_kerberos in yes | auto | k5 | k5only | k425)
1123
1124         AC_CHECK_HEADERS(krb5.h)
1125
1126         if test $ac_cv_header_krb5_h = yes ; then
1127                 dnl lazy check for Heimdal Kerberos
1128                 AC_CHECK_HEADERS(heim_err.h)
1129                 if test $ac_cv_header_heim_err_h = yes ; then
1130                         krb5_impl=heimdal
1131                 else
1132                         krb5_impl=mit
1133                 fi
1134
1135                 if test $krb5_impl = mit; then
1136                         AC_CHECK_LIB(k5crypto, main,
1137                                 [krb5crypto=k5crypto],
1138                                 [krb5crypto=crypto])
1139
1140                         AC_CHECK_LIB(krb5, main,
1141                                 [have_krb5=yes
1142                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
1143                                 [have_krb5=no],
1144                                 [-l$krb5crypto -lcom_err])
1145
1146                 elif test $krb5_impl = heimdal; then
1147                         AC_CHECK_LIB(des, main,
1148                                 [krb5crypto=des],
1149                                 [krb5crypto=crypto])
1150
1151                         AC_CHECK_LIB(krb5, main,
1152                                 [have_krb5=yes
1153                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err"],
1154                                 [have_krb5=no],
1155                                 [-l$krb5crypto -lasn1 -lroken -lcom_err])
1156
1157                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
1158                                 [define if you have HEIMDAL Kerberos])
1159
1160                 else
1161                         have_krb5=no
1162                         AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
1163                 fi
1164
1165                 if test $have_krb5 = yes ; then
1166                         ol_link_krb5=yes
1167
1168                         AC_DEFINE(HAVE_KRB5, 1,
1169                                 [define if you have Kerberos V])
1170
1171                         if test $ol_with_kerberos = k5only ; then
1172                                 ol_with_kerberos=found
1173                         fi
1174
1175                 elif test $ol_with_kerberos != auto ; then
1176                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1177                 fi
1178
1179         fi
1180         ;;
1181 esac
1182
1183 if test $ol_link_krb5 = yes &&
1184    { test $ol_with_kerberos = yes ||
1185      test $ol_with_kerberos = auto ||
1186      test $ol_with_kerberos = k425; }; then
1187
1188         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1189
1190         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1191                 if test $krb5_impl = mit; then
1192                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1193                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1194                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1195
1196                 elif test $krb5_impl = heimdal; then
1197                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1198                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1199                                 [-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err])
1200
1201                 else
1202                         have_425=no
1203                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1204                 fi
1205
1206                 if test $have_k425 = yes ; then
1207                         ol_with_kerberos=found
1208                         ol_link_krb4=yes
1209
1210                         AC_DEFINE(HAVE_KRB425, 1,
1211                                 [define if you have Kerberos V with IV support])
1212                         AC_DEFINE(HAVE_KRB4, 1,
1213                                 [define if you have Kerberos IV])
1214
1215                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1216                                 [ol_cv_var_des_debug], [
1217                                 dnl save the flags
1218                                 save_LIBS="$LIBS"
1219                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1220                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1221 #include <kerberosIV/krb.h>
1222 #include <kerberosIV/des.h>
1223 extern int des_debug;
1224 ]], [[
1225 des_debug = 1;
1226 ]])],[ol_cv_var_des_debug=yes],[ol_cv_var_des_debug=no])
1227                                 dnl restore the LIBS
1228                                 LIBS="$save_LIBS"
1229                         ])
1230
1231                         if test $ol_cv_var_des_debug = yes ; then
1232                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1233                                         [define if you have Kerberos des_debug])
1234                         fi
1235
1236                         LIBS="$save_LIBS"
1237                 fi
1238         fi
1239 fi
1240
1241 if test $ol_link_krb5 = yes ; then
1242         ol_with_kerberos=found
1243 fi
1244
1245 case $ol_with_kerberos in yes | auto | k4 | kth)
1246
1247         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1248
1249         if test $ac_cv_header_krb_h = yes ; then
1250                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1251
1252                 if test $have_k4 = yes ; then
1253                         ol_with_kerberos=found
1254                         ol_link_krb4=yes
1255
1256                         AC_DEFINE(HAVE_KRB4, 1,
1257                                 [define if you have Kerberos IV])
1258
1259                         KRB4_LIBS="-lkrb -ldes"
1260
1261                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1262                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1263                                         [define if you have Kth Kerberos])
1264                         fi
1265                 fi
1266         fi
1267         ;;
1268 esac
1269
1270 if test $ol_link_krb4 = yes && test $ol_enable_kbind != no ; then
1271         ol_link_kbind=yes
1272
1273 elif test $ol_enable_kbind = yes ; then
1274         AC_MSG_ERROR([Kerberos IV detection failed])
1275 fi
1276
1277 if test $ol_link_krb4 = yes || test $ol_link_krb5 = yes ; then
1278         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1279
1280 elif test $ol_with_kerberos != auto && test $ol_with_kerberos != no ; then
1281         AC_MSG_ERROR([Kerberos detection failed])
1282 fi
1283
1284 dnl ----------------------------------------------------------------
1285 dnl TLS/SSL
1286         
1287 if test $ol_with_tls = yes ; then
1288         ol_with_tls=auto
1289 fi
1290
1291 ol_link_tls=no
1292 if test $ol_with_tls = openssl || test $ol_with_tls = auto ; then
1293         AC_CHECK_HEADERS(openssl/ssl.h)
1294
1295         if test $ac_cv_header_openssl_ssl_h = yes ; then
1296                 AC_CHECK_LIB(ssl, SSL_library_init,
1297                         [have_openssl=yes
1298                         need_rsaref=no], [have_openssl=no],
1299                         [-lcrypto])
1300
1301                 if test $have_openssl = no ; then
1302                         AC_CHECK_LIB(ssl, ssl3_accept, 
1303                                 [have_openssl=yes
1304                                 need_rsaref=yes], [have_openssl=no],
1305                                 [-lcrypto -lRSAglue -lrsaref])
1306                 fi
1307
1308                 if test $have_openssl = yes ; then
1309                         ol_with_tls=openssl
1310                         ol_link_tls=yes
1311
1312                         AC_DEFINE(HAVE_OPENSSL, 1, 
1313                                 [define if you have OpenSSL])
1314
1315                         if test $need_rsaref = yes; then
1316                                 AC_DEFINE(HAVE_RSAREF, 1, 
1317                                         [define if OpenSSL needs RSAref])
1318
1319                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1320                         else
1321                                 TLS_LIBS="-lssl -lcrypto"
1322                         fi
1323
1324                         OL_SSL_COMPAT
1325                         if test $ol_cv_ssl_crl_compat = yes ; then
1326                                 AC_DEFINE(HAVE_OPENSSL_CRL, 1, 
1327                                         [define if you have OpenSSL with CRL checking capability])
1328                         fi
1329                 fi
1330         fi
1331 fi
1332
1333 WITH_TLS=no
1334 if test $ol_link_tls = yes ; then
1335         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1336         WITH_TLS=yes
1337 elif test $ol_with_tls = auto ; then
1338         AC_MSG_WARN([Could not locate TLS/SSL package])
1339         AC_MSG_WARN([TLS data protection not supported!])
1340 elif test $ol_with_tls != no ; then
1341         AC_MSG_ERROR([Could not locate TLS/SSL package])
1342 else
1343         AC_MSG_WARN([TLS data protection not supported!])
1344 fi
1345
1346 dnl ----------------------------------------------------------------
1347 dnl LAN Manger password checking requires DES from OpenSSL
1348 if test $ol_enable_lmpasswd != no; then
1349         if test $ol_link_tls != yes ; then
1350                 AC_MSG_ERROR([LAN Manager passwords require OpenSSL])
1351         fi
1352
1353         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1354 fi
1355
1356 dnl ----------------------------------------------------------------
1357 dnl Threads?
1358 ol_link_threads=no
1359
1360 case $ol_with_threads in auto | yes | nt)
1361
1362         OL_NT_THREADS
1363
1364         if test "$ol_cv_nt_threads" = yes ; then
1365                 ol_link_threads=nt
1366                 ol_with_threads=found
1367                 ol_with_yielding_select=yes
1368
1369                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1370                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1371         fi
1372
1373         if test $ol_with_threads = nt ; then
1374                 AC_MSG_ERROR([could not locate NT Threads])
1375         fi
1376         ;;
1377 esac
1378
1379 case $ol_with_threads in auto | yes | posix)
1380
1381         AC_CHECK_HEADERS(pthread.h)
1382
1383         if test $ac_cv_header_pthread_h = yes ; then
1384                 OL_POSIX_THREAD_VERSION
1385
1386                 if test $ol_cv_pthread_version != 0 ; then
1387                         AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1388                                 [define to pthreads API spec revision])
1389                 else
1390                         AC_MSG_ERROR([unknown pthread version])
1391                 fi
1392
1393                 # consider threads found
1394                 ol_with_threads=found
1395
1396                 OL_HEADER_LINUX_THREADS
1397                 OL_HEADER_GNU_PTH_PTHREAD_H
1398
1399                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1400                         AC_CHECK_HEADERS(sched.h)
1401                 fi
1402
1403                 dnl Now the hard part, how to link?
1404                 dnl
1405                 dnl currently supported checks:
1406                 dnl
1407                 dnl Check for no flags 
1408                 dnl     pthread_create() in $LIBS
1409                 dnl
1410                 dnl Check special pthread (final) flags
1411                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1412                 dnl     pthread_create() with -kthread (FreeBSD)
1413                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1414                 dnl     pthread_create() with -pthreads (?)
1415                 dnl     pthread_create() with -mthreads (AIX)
1416                 dnl     pthread_create() with -thread (?)
1417                 dnl
1418                 dnl Check pthread (final) libraries
1419                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1420                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1421                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1422                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1423                 dnl     pthread_create() in -lpthread (many)
1424                 dnl     pthread_create() in -lc_r (FreeBSD)
1425                 dnl
1426                 dnl Check pthread (draft4) flags (depreciated)
1427                 dnl     pthread_create() with -threads (OSF/1)
1428                 dnl
1429                 dnl Check pthread (draft4) libraries (depreciated)
1430                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1431                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1432                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1433                 dnl     pthread_create() in -lpthreads (many)
1434                 dnl
1435
1436                 dnl pthread_create in $LIBS
1437                 AC_CACHE_CHECK([for pthread_create in default libraries],
1438                         ol_cv_pthread_create,[
1439                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1440                                 [ol_cv_pthread_create=yes],
1441                                 [ol_cv_pthread_create=no],
1442                                 [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1443                                         [ol_cv_pthread_create=yes],
1444                                         [ol_cv_pthread_create=no])])])
1445
1446                 if test $ol_cv_pthread_create != no ; then
1447                         ol_link_threads=posix
1448                         ol_link_pthreads=""
1449                 fi
1450                 
1451 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1452                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1453                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1454                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1455                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1456                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1457
1458                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1459                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1460                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1461                         [ol_cv_pthread_lpthread_lmach_lexc])
1462 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1463 dnl                     [ol_cv_pthread_lpthread_lexc])
1464
1465                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1466                         [ol_cv_pthread_lib_lpthread_woff])
1467
1468                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1469                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1470
1471                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1472
1473                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1474                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1475                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1476                         [ol_cv_pthread_lpthreads_lmach_lexc])
1477                 OL_PTHREAD_TRY([-lpthreads -lexc],
1478                         [ol_cv_pthread_lpthreads_lexc])
1479
1480                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1481
1482                 if test $ol_link_threads != no ; then
1483                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1484
1485                         dnl save flags
1486                         save_CPPFLAGS="$CPPFLAGS"
1487                         save_LIBS="$LIBS"
1488                         LIBS="$LTHREAD_LIBS $LIBS"
1489
1490                         dnl All POSIX Thread (final) implementations should have
1491                         dnl sched_yield instead of pthread yield.
1492                         dnl check for both, and thr_yield for Solaris
1493                         AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1494
1495                         if test $ac_cv_func_sched_yield = no &&
1496                            test $ac_cv_func_pthread_yield = no &&
1497                            test $ac_cv_func_thr_yield = no ; then
1498                                 dnl Digital UNIX has sched_yield() in -lrt
1499                                 AC_CHECK_LIB(rt, sched_yield,
1500                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1501                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1502                                                 [Define if you have the sched_yield function.])
1503                                         ac_cv_func_sched_yield=yes],
1504                                         [ac_cv_func_sched_yield=no])
1505                         fi
1506                         if test $ac_cv_func_sched_yield = no &&
1507                            test $ac_cv_func_pthread_yield = no &&
1508                            test "$ac_cv_func_thr_yield" = no ; then
1509                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1510                         fi
1511
1512                         dnl Check functions for compatibility
1513                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1514
1515                         dnl Check for pthread_detach with <pthread.h> inclusion
1516                         dnl as it's symbol may have been mangled.
1517                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1518                                 [ol_cv_func_pthread_detach], [
1519                                 dnl save the flags
1520                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
1521 #include <pthread.h>
1522 #ifndef NULL
1523 #define NULL (void*)0
1524 #endif
1525 ]], [[pthread_detach(NULL);]])],[ol_cv_func_pthread_detach=yes],[ol_cv_func_pthread_detach=no])
1526                         ])
1527
1528                         if test $ol_cv_func_pthread_detach = no ; then
1529                                 AC_MSG_ERROR([could not locate pthread_detach()])
1530                         fi
1531
1532                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1533                                 [define if you have pthread_detach function])
1534
1535                         dnl Check for setconcurreny functions
1536                         AC_CHECK_FUNCS( \
1537                                 pthread_setconcurrency \
1538                                 pthread_getconcurrency \
1539                                 thr_setconcurrency \
1540                                 thr_getconcurrency \
1541                         )
1542
1543                         OL_SYS_LINUX_THREADS
1544                         OL_LINUX_THREADS
1545
1546                         if test $ol_cv_linux_threads = error; then
1547                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1548                         fi
1549
1550                         AC_CACHE_CHECK([if pthread_create() works],
1551                                 ol_cv_pthread_create_works,[
1552                         AC_RUN_IFELSE([OL_PTHREAD_TEST_PROGRAM],
1553                                 [ol_cv_pthread_create_works=yes],
1554                                 [ol_cv_pthread_create_works=no],
1555                                 [dnl assume yes
1556                                 ol_cv_pthread_create_works=yes])])
1557
1558                         if test $ol_cv_pthread_create_works = no ; then
1559                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1560                         fi
1561
1562                         ol_replace_broken_yield=no
1563 dnl                     case "$target" in
1564 dnl                     *-*-linux*) 
1565 dnl                             AC_CHECK_FUNCS(nanosleep)
1566 dnl                             ol_replace_broken_yield=yes
1567 dnl                     ;;
1568 dnl                     esac
1569
1570                         if test $ol_replace_broken_yield = yes ; then
1571                                 AC_DEFINE([REPLACE_BROKEN_YIELD],1,
1572                                         [define if sched_yield yields the entire process])
1573                         fi
1574
1575                         dnl Check if select causes an yield
1576                         if test $ol_with_yielding_select = auto ; then
1577                                 AC_CACHE_CHECK([if select yields when using pthreads],
1578                                         ol_cv_pthread_select_yields,[
1579                                 AC_RUN_IFELSE([AC_LANG_SOURCE([[
1580 #include <sys/types.h>
1581 #include <sys/time.h>
1582 #include <unistd.h>
1583 #include <pthread.h>
1584 #ifndef NULL
1585 #define NULL (void*) 0
1586 #endif
1587
1588 static int fildes[2];
1589
1590 static void *task(p)
1591         void *p;
1592 {
1593         int i;
1594         struct timeval tv;
1595
1596         fd_set rfds;
1597
1598         tv.tv_sec=10;
1599         tv.tv_usec=0;
1600
1601         FD_ZERO(&rfds);
1602         FD_SET(fildes[0], &rfds);
1603
1604         /* we're not interested in any fds */
1605         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1606
1607         if(i < 0) {
1608                 perror("select");
1609                 exit(10);
1610         }
1611
1612         exit(0); /* if we exit here, the select blocked the whole process */
1613 }
1614
1615 int main(argc, argv)
1616         int argc;
1617         char **argv;
1618 {
1619         pthread_t t;
1620
1621         /* create a pipe to select */
1622         if(pipe(&fildes[0])) {
1623                 perror("select");
1624                 exit(1);
1625         }
1626
1627 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1628         (void) pthread_setconcurrency(2);
1629 #else
1630 #ifdef HAVE_THR_SETCONCURRENCY
1631         /* Set Solaris LWP concurrency to 2 */
1632         thr_setconcurrency(2);
1633 #endif
1634 #endif
1635
1636 #if HAVE_PTHREADS < 6
1637         pthread_create(&t, pthread_attr_default, task, NULL);
1638 #else
1639         pthread_create(&t, NULL, task, NULL);
1640 #endif
1641
1642         /* make sure task runs first */
1643 #if HAVE_THR_YIELD
1644         thr_yield();
1645 #elif defined( HAVE_SCHED_YIELD )
1646         sched_yield();
1647 #elif defined( HAVE_PTHREAD_YIELD )
1648         pthread_yield();
1649 #endif
1650
1651         exit(2);
1652 }]])],[ol_cv_pthread_select_yields=no],[ol_cv_pthread_select_yields=yes],[ol_cv_pthread_select_yields=cross])])
1653
1654                                 if test $ol_cv_pthread_select_yields = cross ; then
1655                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1656                                 fi
1657
1658                                 if test $ol_cv_pthread_select_yields = yes ; then
1659                                         ol_with_yielding_select=yes
1660                                 fi
1661                         fi
1662
1663                         dnl restore flags
1664                         CPPFLAGS="$save_CPPFLAGS"
1665                         LIBS="$save_LIBS"
1666                 else
1667                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1668                 fi
1669         fi
1670
1671         if test $ol_with_threads = posix ; then
1672                 AC_MSG_ERROR([could not locate POSIX Threads])
1673         fi
1674         ;;
1675 esac
1676
1677 case $ol_with_threads in auto | yes | mach)
1678
1679         dnl check for Mach CThreads
1680         AC_CHECK_HEADERS(mach/cthreads.h cthreads.h)
1681         if test $ac_cv_header_mach_cthreads_h = yes ; then
1682                 ol_with_threads=found
1683
1684                 dnl check for cthreads support in current $LIBS
1685                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1686
1687                 if test $ol_link_threads = no ; then
1688                         dnl try -all_load
1689                         dnl this test needs work
1690                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1691                                 [ol_cv_cthread_all_load], [
1692                                 dnl save the flags
1693                                 save_LIBS="$LIBS"
1694                                 LIBS="-all_load $LIBS"
1695                                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <mach/cthreads.h>]], [[
1696                                         cthread_fork((void *)0, (void *)0);
1697                                         ]])],[ol_cv_cthread_all_load=yes],[ol_cv_cthread_all_load=no])
1698                                 dnl restore the LIBS
1699                                 LIBS="$save_LIBS"
1700                         ])
1701
1702                         if test $ol_cv_cthread_all_load = yes ; then
1703                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1704                                 ol_link_threads=mach
1705                                 ol_with_threads=found
1706                         fi
1707                 fi
1708
1709         elif test $ac_cv_header_cthreads_h = yes ; then
1710                 dnl Hurd variant of Mach Cthreads
1711                 dnl uses <cthreads.h> and -lthreads
1712
1713                 ol_with_threads=found
1714  
1715                 dnl save the flags
1716                 save_LIBS="$LIBS"
1717                 LIBS="$LIBS -lthreads"
1718                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1719                 LIBS="$save_LIBS"
1720
1721                 if test $ol_link_threads = yes ; then
1722                         LTHREAD_LIBS="-lthreads"
1723                         ol_link_threads=mach
1724                         ol_with_threads=found
1725                 else
1726                         AC_MSG_ERROR([could not link with Mach CThreads])
1727                 fi
1728
1729         elif test $ol_with_threads = mach ; then
1730                 AC_MSG_ERROR([could not locate Mach CThreads])
1731         fi
1732
1733         if test $ol_link_threads = mach ; then
1734                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1735                         [define if you have Mach Cthreads])
1736         elif test $ol_with_threads = found ; then
1737                 AC_MSG_ERROR([could not link with Mach CThreads])
1738         fi
1739         ;;
1740 esac
1741
1742 case $ol_with_threads in auto | yes | pth)
1743
1744         AC_CHECK_HEADERS(pth.h)
1745
1746         if test $ac_cv_header_pth_h = yes ; then
1747                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1748
1749                 if test $have_pth = yes ; then
1750                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1751                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1752                         ol_link_threads=pth
1753                         ol_with_threads=found
1754
1755                         if test $ol_with_yielding_select = auto ; then
1756                                 ol_with_yielding_select=yes
1757                         fi
1758                 fi
1759         fi
1760         ;;
1761 esac
1762
1763 case $ol_with_threads in auto | yes | lwp)
1764
1765         dnl check for SunOS5 LWP
1766         AC_CHECK_HEADERS(thread.h synch.h)
1767         if test $ac_cv_header_thread_h = yes &&
1768            test $ac_cv_header_synch_h = yes ; then
1769                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1770
1771                 if test $have_thr = yes ; then
1772                         AC_DEFINE(HAVE_THR,1,
1773                                 [if you have Solaris LWP (thr) package])
1774                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1775                         ol_link_threads=thr
1776
1777                         if test $ol_with_yielding_select = auto ; then
1778                                 ol_with_yielding_select=yes
1779                         fi
1780
1781                         dnl Check for setconcurreny functions
1782                         AC_CHECK_FUNCS( \
1783                                 thr_setconcurrency \
1784                                 thr_getconcurrency \
1785                         )
1786                 fi
1787         fi
1788
1789         dnl check for SunOS4 LWP
1790         AC_CHECK_HEADERS(lwp/lwp.h)
1791         if test $ac_cv_header_lwp_lwp_h = yes ; then
1792                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1793
1794                 if test $have_lwp = yes ; then
1795                         AC_DEFINE(HAVE_LWP,1,
1796                                 [if you have SunOS LWP package])
1797                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1798                         ol_link_threads=lwp
1799
1800                         if test $ol_with_yielding_select = auto ; then
1801                                 ol_with_yielding_select=no
1802                         fi
1803                 fi
1804         fi
1805         ;;
1806 esac
1807
1808 if test $ol_with_yielding_select = yes ; then
1809         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1810                 [define if select implicitly yields])
1811 fi
1812
1813 if test $ol_with_threads = manual ; then
1814         dnl User thinks he can manually configure threads.
1815         ol_link_threads=yes
1816
1817         AC_MSG_WARN([thread defines and link options must be set manually])
1818
1819         AC_CHECK_HEADERS(pthread.h sched.h)
1820         AC_CHECK_FUNCS(sched_yield pthread_yield)
1821         OL_HEADER_LINUX_THREADS
1822
1823         AC_CHECK_HEADERS(mach/cthreads.h)
1824         AC_CHECK_HEADERS(lwp/lwp.h)
1825         AC_CHECK_HEADERS(thread.h synch.h)
1826 fi
1827
1828 if test $ol_link_threads != no && test $ol_link_threads != nt ; then
1829         dnl needed to get reentrant/threadsafe versions
1830         dnl
1831         AC_DEFINE(REENTRANT,1)
1832         AC_DEFINE(_REENTRANT,1)
1833         AC_DEFINE(THREAD_SAFE,1)
1834         AC_DEFINE(_THREAD_SAFE,1)
1835         AC_DEFINE(THREADSAFE,1)
1836         AC_DEFINE(_THREADSAFE,1)
1837         AC_DEFINE(_SGI_MP_SOURCE,1)
1838
1839         dnl The errno declaration may dependent upon _REENTRANT.
1840         dnl If it does, we must link with thread support.
1841         AC_CACHE_CHECK([for thread specific errno],
1842                 [ol_cv_errno_thread_specific], [
1843                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <errno.h>]], [[errno = 0;]])],[ol_cv_errno_thread_specific=yes],[ol_cv_errno_thread_specific=no])
1844         ])
1845
1846         dnl The h_errno declaration may dependent upon _REENTRANT.
1847         dnl If it does, we must link with thread support.
1848         AC_CACHE_CHECK([for thread specific h_errno],
1849                 [ol_cv_h_errno_thread_specific], [
1850                 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])
1851         ])
1852
1853         if test $ol_cv_errno_thread_specific != yes ||
1854            test $ol_cv_h_errno_thread_specific != yes ; then
1855                 LIBS="$LTHREAD_LIBS $LIBS"
1856                 LTHREAD_LIBS=""
1857         fi
1858
1859 dnl When in thread environment, use 
1860 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1861 dnl                     func_r(...);
1862 dnl             #else
1863 dnl             #       if defined( HAVE_THREADS ) 
1864 dnl                             /* lock */
1865 dnl             #       endif
1866 dnl                             func(...);
1867 dnl             #       if defined( HAVE_THREADS ) 
1868 dnl                             /* unlock */
1869 dnl             #       endif
1870 dnl             #endif
1871 dnl
1872 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1873 dnl             _POSIX_REENTRANT_FUNCTIONS
1874 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1875 dnl             _POSIX_THREADSAFE_FUNCTIONS
1876 dnl
1877 dnl             and is currently defined in <ldap_pvt_thread.h>
1878 dnl
1879 dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
1880 dnl 
1881 dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1882 dnl LDAP_R_COMPILE is defined.  ie:
1883 dnl             #ifdef LDAP_R_COMPILE
1884 dnl             #       include <ldap_pvt_thread.h>
1885 dnl             #endif
1886 dnl
1887 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1888 dnl specifically for compiling the threadsafe version of
1889 dnl     the ldap library (-lldap_r).
1890 dnl             
1891 dnl     dnl check for reentrant/threadsafe functions
1892 dnl     dnl
1893 dnl     dnl note: these should only be used when linking
1894 dnl     dnl             with $LTHREAD_LIBS
1895 dnl     dnl
1896 dnl     save_CPPFLAGS="$CPPFLAGS"
1897 dnl     save_LIBS="$LIBS"
1898 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1899 dnl     AC_CHECK_FUNCS( \
1900 dnl             gmtime_r \
1901 dnl             gethostbyaddr_r gethostbyname_r \
1902 dnl             feof_unlocked unlocked_feof \
1903 dnl             putc_unlocked unlocked_putc \
1904 dnl             flockfile ftrylockfile \
1905 dnl     )
1906 dnl     CPPFLAGS="$save_CPPFLAGS"
1907 dnl     LIBS="$save_LIBS"
1908 fi  
1909
1910 if test $ol_link_threads = no ; then
1911         if test $ol_with_threads = yes ; then
1912                 AC_MSG_ERROR([no suitable thread support])
1913         fi
1914
1915         if test $ol_with_threads = auto ; then
1916                 AC_MSG_WARN([no suitable thread support, disabling threads])
1917                 ol_with_threads=no
1918         fi
1919
1920         AC_DEFINE(NO_THREADS,1,
1921                 [define if you have (or want) no threads])
1922         LTHREAD_LIBS=""
1923         BUILD_THREAD=no
1924 else
1925         BUILD_THREAD=yes
1926 fi
1927
1928 if test $ol_link_threads != no ; then
1929         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1,
1930                 [define to 1 if library is thread safe])
1931 fi
1932
1933 dnl ----------------------------------------------------------------
1934 dnl Tests for reentrant functions necessary to build -lldap_r
1935 AC_CHECK_FUNCS(         \
1936         ctime_r                 \
1937         gethostbyname_r gethostbyaddr_r \
1938 )
1939
1940 if test "$ac_cv_func_ctime_r" = no ; then
1941         ol_cv_func_ctime_r_nargs=0
1942 else
1943         OL_FUNC_CTIME_R_NARGS
1944 dnl     OL_FUNC_CTIME_R_TYPE
1945 fi
1946
1947 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1948         OL_FUNC_GETHOSTBYNAME_R_NARGS
1949 else
1950         ol_cv_func_gethostbyname_r_nargs=0
1951 fi
1952  
1953 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1954         OL_FUNC_GETHOSTBYADDR_R_NARGS
1955 else
1956         ol_cv_func_gethostbyaddr_r_nargs=0
1957 fi
1958
1959 dnl ----------------------------------------------------------------
1960 ol_link_bdb=no 
1961
1962 if test $ol_enable_bdb/$ol_enable_hdb != no/no; then
1963         OL_BERKELEY_DB
1964
1965         if test $ol_cv_berkeley_db = no ; then
1966                 AC_MSG_ERROR(BDB/HDB: BerkeleyDB not available)
1967         fi
1968
1969         AC_DEFINE(HAVE_BERKELEY_DB,1,
1970                 [define this if Berkeley DB is available])
1971
1972         dnl $ol_cv_lib_db should be yes or -ldb
1973         dnl (it could be no, but that would be an error
1974         if test $ol_cv_lib_db != yes ; then
1975                 BDB_LIBS="$BDB_LIBS $ol_cv_lib_db"
1976         fi
1977
1978         OL_BDB_COMPAT
1979
1980         if test $ol_cv_bdb_compat != yes ; then
1981                 AC_MSG_ERROR([BDB/HDB: BerkeleyDB version incompatible])
1982         fi
1983
1984         SLAPD_LIBS="$SLAPD_LIBS \$(BDB_LIBS)"
1985
1986         ol_link_bdb=yes 
1987 fi
1988
1989 dnl ----------------------------------------------------------------
1990
1991 if test $ol_enable_dynamic = yes && test $enable_shared = yes ; then
1992         BUILD_LIBS_DYNAMIC=shared
1993         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
1994         LTSTATIC=""
1995 else
1996         BUILD_LIBS_DYNAMIC=static
1997         LTSTATIC="-static"
1998 fi
1999 AC_SUBST(LTSTATIC)dnl
2000
2001 dnl ----------------------------------------------------------------
2002 if test $ol_enable_wrappers != no ; then
2003         AC_CHECK_HEADERS(tcpd.h,[
2004                 AC_MSG_CHECKING([for TCP wrappers library])
2005                 save_LIBS="$LIBS"
2006                 LIBS="$LIBS -lwrap"
2007                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2008 #include <tcpd.h>
2009 int allow_severity = 0;
2010 int deny_severity  = 0;
2011
2012 struct request_info *req;
2013                 ]], [[
2014 hosts_access(req)
2015                 ]])],[AC_MSG_RESULT([-lwrap])
2016                 have_wrappers=yes
2017                 LIBS="$save_LIBS"],[
2018                 dnl try with -lnsl
2019                 LIBS="$LIBS -lnsl"
2020                 AC_TRY_LINK([
2021 #include <tcpd.h>
2022 int allow_severity = 0;
2023 int deny_severity  = 0;
2024
2025 struct request_info *req;
2026                 ],[
2027 hosts_access(req)
2028                 ],[AC_MSG_RESULT([-lwrap -lnsl])
2029                 have_wrappers=yes
2030                 LIBS="$save_LIBS -lnsl"],[
2031                 AC_MSG_RESULT(no)
2032                 have_wrappers=no
2033                 LIBS=$save_LIBS])])],[have_wrappers=no])
2034
2035         if test $have_wrappers = yes ; then
2036                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
2037                 WRAP_LIBS="-lwrap"
2038         elif test $ol_enable_wrappers = yes ; then
2039                 AC_MSG_ERROR([could not find TCP wrappers, select apppropriate options or disable])
2040         else
2041                 AC_MSG_WARN([could not find TCP wrappers, support disabled])
2042                 WRAP_LIBS=""
2043         fi
2044 fi
2045
2046 dnl ----------------------------------------------------------------
2047 if test $ol_enable_syslog != no ; then
2048         AC_CHECK_FUNC(openlog)
2049         if test $ac_cv_func_openlog = no && test $ol_enable_syslog = yes; then
2050                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
2051         fi
2052         ol_enable_syslog=$ac_cv_func_openlog
2053 fi
2054
2055 dnl ----------------------------------------------------------------
2056 dnl SQL
2057 ol_link_sql=no
2058 if test $ol_enable_sql != no ; then
2059         AC_CHECK_HEADERS(sql.h sqlext.h,[],[
2060                 AC_MSG_ERROR([could not locate SQL headers])
2061         ])
2062
2063         sql_LIBS="$LIBS"
2064         LIBS="$LTHREAD_LIBS"
2065
2066         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
2067         if test $have_iodbc = yes ; then
2068                 ol_link_sql="-liodbc"
2069         else
2070                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
2071                 if test $have_odbc = yes ; then
2072                         ol_link_sql="-lodbc"
2073                 fi
2074         fi
2075
2076         LIBS="$sql_LIBS"
2077
2078         if test $ol_link_sql != no ; then
2079                 SLAPD_SQL_LIBS="$ol_link_sql"
2080
2081         elif test $ol_enable_sql != auto ; then
2082                 AC_MSG_ERROR([could not locate suitable ODBC library])
2083         fi
2084 fi
2085
2086 dnl ----------------------------------------------------------------
2087 dnl International Components for Unicode
2088 OL_ICU
2089 if test "$ol_icu" = no ; then
2090         AC_MSG_WARN([ICU not available])
2091 else
2092         ICU_LIBS="$ol_icu"
2093 fi
2094 dnl ----------------------------------------------------------------
2095 dnl
2096 dnl Check for Cyrus SASL
2097 dnl
2098 WITH_SASL=no
2099 ol_link_sasl=no
2100 ol_link_spasswd=no
2101 if test $ol_with_cyrus_sasl != no ; then
2102         AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
2103
2104         if test $ac_cv_header_sasl_sasl_h = yes ||
2105            test $ac_cv_header_sasl_h = yes; then
2106                 AC_CHECK_LIB(sasl2, sasl_client_init,
2107                         [ol_link_sasl="-lsasl2"],
2108                         [AC_CHECK_LIB(sasl, sasl_client_init,
2109                                 [ol_link_sasl="-lsasl"])])
2110         fi
2111
2112         if test $ol_link_sasl = no ; then
2113                 if test $ol_with_cyrus_sasl != auto ; then
2114                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2115                 else
2116                         AC_MSG_WARN([Could not locate Cyrus SASL])
2117                         AC_MSG_WARN([SASL authentication not supported!])
2118                         if test $ol_link_tls = no ; then
2119                                 AC_MSG_WARN([Strong authentication not supported!])
2120                         fi
2121                 fi
2122         else
2123                 OL_SASL_COMPAT
2124                 if test $ol_cv_sasl_compat = no ; then
2125                         ol_link_sasl=no
2126                         AC_MSG_ERROR([Cyrus SASL library located but is incompatible])
2127                 fi
2128
2129                 AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2130                 SASL_LIBS="$ol_link_sasl"
2131                 if test $ol_enable_spasswd != no ; then
2132                         ol_link_spasswd=yes
2133                 fi
2134
2135                 ac_save_LIBS="$LIBS"
2136                 LIBS="$LIBS $ol_link_sasl"
2137                 AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
2138                         [define if your SASL library has sasl_version()])])
2139                 LIBS="$ac_save_LIBS"
2140
2141                 WITH_SASL=yes
2142         fi
2143
2144 else
2145         AC_MSG_WARN([SASL authentication not supported!])
2146         if test $ol_link_tls = no ; then
2147                 AC_MSG_WARN([Strong authentication not supported!])
2148         fi
2149 fi
2150
2151 dnl ----------------------------------------------------------------
2152 dnl Check for entropy sources
2153 if test $cross_compiling != yes && test "$ac_cv_mingw32" != yes ; then
2154         dev=no
2155         if test -r /dev/urandom ; then
2156                 dev="/dev/urandom";
2157         elif test -r /idev/urandom ; then
2158                 dev="/idev/urandom";
2159         elif test -r /dev/srandom ; then
2160                 dev="/dev/srandom";
2161         elif test -r /dev/random ; then
2162                 dev="/dev/random";
2163         elif test -r /idev/random ; then
2164                 dev="/idev/random";
2165         fi
2166
2167         if test $dev != no ; then
2168                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2169         fi
2170 fi
2171
2172 dnl ----------------------------------------------------------------
2173 dnl
2174 dnl Check for fetch URL support
2175 dnl             should be extended to support other fetch URL APIs
2176 dnl
2177 ol_link_fetch=no
2178 if test $ol_with_fetch != no ; then
2179         OL_LIB_FETCH
2180
2181         if test $ol_cv_lib_fetch != no ; then
2182                 LUTIL_LIBS="$LUTIL_LIBS $ol_link_fetch"
2183                 ol_link_fetch=freebsd
2184
2185         elif test $ol_with_fetch != auto ; then
2186                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2187         fi 
2188 fi
2189
2190 dnl ----------------------------------------------------------------
2191 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2192 if test $ol_enable_crypt != no ; then
2193         save_LIBS="$LIBS"
2194         LIBS="$TLS_LIBS $LIBS"
2195
2196         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2197                 LIBS="$save_LIBS"
2198                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2199                         have_crypt=yes], [have_crypt=no])])
2200
2201         LIBS="$save_LIBS"
2202
2203         if test $have_crypt = yes ; then
2204                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2205         else
2206                 AC_MSG_WARN([could not find crypt])
2207                 if test $ol_enable_crypt = yes ; then
2208                         AC_MSG_ERROR([could not find crypt, select appropriate options or disable])
2209                 fi
2210
2211                 AC_MSG_WARN([disabling crypt support])
2212                 ol_enable_crypt=no
2213         fi
2214 fi
2215
2216 dnl ----------------------------------------------------------------
2217 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2218 if test $ol_enable_proctitle != no ; then
2219         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2220                 AC_CHECK_LIB(util, setproctitle,
2221                         [have_setproctitle=yes
2222                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2223                         [have_setproctitle=no
2224                         AC_LIBOBJ(setproctitle)
2225                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2226
2227         if test $have_setproctitle = yes ; then
2228                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2229                         [define if setproctitle(3) is available])
2230         fi
2231 fi
2232
2233 dnl ----------------------------------------------------------------
2234 if test $ol_enable_slp != no ; then
2235         AC_CHECK_HEADERS( slp.h )
2236
2237         if test $ac_cv_header_slp_h = yes ; then
2238                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2239                 if test $have_slp = yes ; then
2240                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2241                         SLAPD_SLP_LIBS=-lslp
2242                 fi
2243
2244         elif test $ol_enable_slp = yes ; then
2245                 AC_MSG_ERROR([SLP not found])
2246         fi
2247 fi
2248
2249 dnl ----------------------------------------------------------------
2250 dnl Checks for typedefs, structures, and compiler characteristics.
2251
2252 AC_CHECK_TYPE(mode_t, int)
2253 AC_CHECK_TYPE(off_t, long)
2254 AC_CHECK_TYPE(pid_t, int)
2255 AC_CHECK_TYPE(ssize_t, [signed int])
2256 AC_CHECK_TYPE(caddr_t,  [char *])
2257 AC_CHECK_TYPE(size_t, unsigned)
2258
2259 AC_CHECK_TYPES([long long])
2260 AC_CHECK_TYPES([ptrdiff_t])
2261
2262 AC_CHECK_TYPE([socklen_t],,
2263         [AC_DEFINE_UNQUOTED([socklen_t], [int],
2264                 [Define to `int' if <sys/socket.h> does not define.])],
2265         [$ac_includes_default
2266 #ifdef HAVE_SYS_SOCKET_H
2267 #include <sys/socket.h>
2268 #endif
2269         ])
2270
2271 AC_TYPE_SIGNAL
2272
2273 AC_CHECK_TYPE([sig_atomic_t],,
2274         [AC_DEFINE_UNQUOTED([sig_atomic_t], [int],
2275                 [Define to `int' if <signal.h> does not define.])],
2276         [$ac_includes_default
2277 #include <signal.h>
2278         ])
2279
2280 AC_TYPE_UID_T
2281
2282 AC_HEADER_TIME
2283 AC_STRUCT_TM
2284 AC_CHECK_MEMBERS([struct stat.st_blksize])
2285 AC_CHECK_MEMBERS([struct passwd.pw_gecos],,,[$ac_includes_default
2286 #include <pwd.h>])
2287 AC_CHECK_MEMBERS([struct passwd.pw_passwd],,,[$ac_includes_default
2288 #include <pwd.h>])
2289
2290 OL_C_UPPER_LOWER
2291 AC_C_CONST
2292 OL_C_VOLATILE
2293
2294 if test $cross_compiling = yes ; then
2295         AC_MSG_WARN([Crossing compiling... all bets are off!])
2296         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2297 else
2298         AC_C_BIGENDIAN
2299 fi
2300
2301 AC_CHECK_SIZEOF(short) 
2302 AC_CHECK_SIZEOF(int) 
2303 AC_CHECK_SIZEOF(long)
2304 AC_CHECK_SIZEOF(long long)
2305 AC_CHECK_SIZEOF(wchar_t)
2306
2307 if test "$ac_cv_sizeof_int" -lt 4 ; then
2308         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2309
2310         AC_DEFINE(LBER_INT_T,long,[define to 32-bit or greater integer type])
2311 else
2312         AC_DEFINE(LBER_INT_T,int,[define to 32-bit or greater integer type])
2313 fi
2314
2315 AC_DEFINE(LBER_LEN_T,long,[define to large integer type])
2316 AC_DEFINE(LBER_SOCKET_T,int,[define to socket descriptor type])
2317 AC_DEFINE(LBER_TAG_T,long,[define to large integer type])
2318
2319 dnl ----------------------------------------------------------------
2320 dnl Check for multiple precision support
2321 if test $ol_with_mp = longlong || test $ol_with_mp = auto ; then
2322         if test $ac_cv_sizeof_long_long -gt 4 ; then
2323                 ol_with_mp=longlong
2324                 AC_DEFINE(USE_MP_LONG_LONG,1,[define to use 'long long' for MP])
2325         elif test $ol_with_mp = longlong ; then
2326                 AC_MSG_ERROR([long long unusable for multiple precision])
2327         fi
2328 fi
2329 if test $ol_with_mp = long || test $ol_with_mp = auto ; then
2330         if test $ac_cv_sizeof_long -gt 4 ; then
2331                 ol_with_mp=long
2332                 AC_DEFINE(USE_MP_LONG,1,[define to use 'long' for MP])
2333         elif test $ol_with_mp = long ; then
2334                 AC_MSG_ERROR([long unusable for multiple precision])
2335         fi
2336 fi
2337 if test $ol_with_mp = bignum || test $ol_with_mp = auto ; then
2338         AC_CHECK_HEADERS(openssl/bn.h)
2339         AC_CHECK_HEADERS(openssl/crypto.h)
2340         if test "$ac_cv_header_openssl_bn_h" = "yes" &&
2341                 test "$ac_cv_header_openssl_crypto_h" = "yes" &&
2342                 test "$ol_with_tls" = "found" ; then
2343                 ol_with_mp=bignum
2344                 AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP])
2345         elif test $ol_with_mp = bignum ; then
2346                 AC_MSG_ERROR([bignum not available])
2347         fi
2348 fi
2349 if test $ol_with_mp = gmp || test $ol_with_mp = auto ; then
2350         AC_CHECK_HEADERS(gmp.h)
2351         AC_CHECK_LIB(gmp, __gmpz_add_ui)
2352         if test $ac_cv_header_gmp_h = yes && test $ac_cv_lib_gmp___gmpz_add_ui = yes ; then
2353                 AC_DEFINE(USE_MP_GMP,1,[define to use GMP for MP])
2354                 ol_with_mp=gmp
2355         elif test $ol_with_mp = gmp ; then
2356                 AC_MSG_ERROR([gmp not available])
2357         fi
2358 fi
2359 if test $ol_with_mp = auto ; then
2360         ol_with_mp=no
2361 fi
2362
2363 dnl ----------------------------------------------------------------
2364 dnl Checks for library functions.
2365 AC_FUNC_MEMCMP
2366
2367 if test $ac_cv_func_memcmp_working = no ; then
2368         AC_DEFINE(NEED_MEMCMP_REPLACEMENT,1,
2369                 [define if memcmp is not 8-bit clean or is otherwise broken])
2370 fi
2371
2372 AC_FUNC_STRFTIME
2373
2374 OL_FUNC_INET_ATON
2375
2376 dnl Check for NT specific routines
2377 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2378
2379 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2380         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2381 ])
2382
2383 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2384         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2385 ])
2386
2387 AC_FUNC_VPRINTF
2388
2389 if test $ac_cv_func_vprintf = yes ; then
2390         dnl check for vsnprintf
2391         AC_CHECK_FUNCS(snprintf vsnprintf)
2392 fi
2393
2394 AC_CHECK_FUNCS(                 \
2395         bcopy                   \
2396         closesocket             \
2397         chroot                  \
2398         endgrent                \
2399         endpwent                \
2400         fcntl                   \
2401         flock                   \
2402         fstat                   \
2403         getdtablesize           \
2404         getgrgid                \
2405         gethostname             \
2406         getpass                 \
2407         getpassphrase           \
2408         getpwuid                \
2409         getpwnam                \
2410         getspnam                \
2411         gettimeofday            \
2412         initgroups              \
2413         inet_ntoa_b             \
2414         ioctl                   \
2415         lockf                   \
2416         memcpy                  \
2417         memmove                 \
2418         memrchr                 \
2419         mkstemp                 \
2420         mktemp                  \
2421         pipe                    \
2422         read                    \
2423         recv                    \
2424         recvfrom                \
2425         setpwfile               \
2426         setgid                  \
2427         setegid                 \
2428         setsid                  \
2429         setuid                  \
2430         seteuid                 \
2431         signal                  \
2432         strdup                  \
2433         strpbrk                 \
2434         strrchr                 \
2435         strsep                  \
2436         strstr                  \
2437         strtol                  \
2438         strtoul                 \
2439         strtoq                  \
2440         strtouq                 \
2441         strtoll                 \
2442         strspn                  \
2443         sysconf                 \
2444         waitpid                 \
2445         wait4                   \
2446         write                   \
2447         send                    \
2448         sendmsg                 \
2449         sendto                  \
2450 )
2451
2452 dnl We actually may need to replace more than this.
2453 AC_REPLACE_FUNCS(getopt getpeereid)
2454
2455 if test "$ac_cv_func_getopt" != yes; then
2456         LIBSRCS="$LIBSRCS getopt.c"
2457 fi
2458
2459 if test "$ac_cv_func_getpeereid" != yes; then
2460         AC_CHECK_FUNCS( getpeerucred )
2461         if test "$ac_cv_func_getpeerucred" != yes ; then
2462                 AC_CHECK_MEMBERS([struct msghdr.msg_accrightslen],,,
2463                         [$ac_includes_default
2464 #ifdef HAVE_SYS_SOCKET_H
2465 #include <sys/socket.h>
2466 #endif])
2467                 if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
2468                         AC_CHECK_MEMBERS([struct msghdr.msg_control],,,
2469                                 [$ac_includes_default
2470 #ifdef HAVE_SYS_SOCKET_H
2471 #include <sys/socket.h>
2472 #endif])
2473                 fi
2474         fi
2475         LIBSRCS="$LIBSRCS getpeereid.c"
2476 fi
2477
2478 if test "$ac_cv_func_snprintf" != yes ||
2479    test "$ac_cv_func_vsnprintf" != yes; then
2480         if test "$ac_cv_func_snprintf" != yes; then
2481                 AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2482         fi
2483         if test "$ac_cv_func_vsnprintf" != yes; then
2484                 AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2485         fi
2486 fi
2487
2488 dnl ----------------------------------------------------------------
2489 dnl Sort out defines
2490
2491 if test "$ol_enable_slapi" != no ; then
2492         dnl This check is done also if --enable-modules is used;
2493         dnl it is duplicated here, 'cause it'd be cached anyway
2494         AC_CHECK_HEADERS(ltdl.h)
2495
2496         if test $ac_cv_header_ltdl_h != yes ; then
2497                 AC_MSG_ERROR([could not locate <ltdl.h>])
2498         fi
2499         AC_CHECK_LIB(ltdl, lt_dlinit, [
2500                 SLAPI_LIBS=-lltdl
2501                 LIBSLAPI=libslapi.a
2502                 LIBSLAPITOOLS=../libslapi.a
2503                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2504         ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2505
2506         AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2507 fi
2508
2509 if test "$ol_enable_debug" != no ; then
2510         if test "$ol_enable_debug" = traditional; then
2511                 AC_DEFINE(OLD_DEBUG,1,
2512                         [define to use the original debug style])
2513         fi
2514         AC_DEFINE(LDAP_DEBUG,1,
2515                 [define this to add debugging code])
2516 fi
2517 if test "$ol_enable_syslog" = yes ; then
2518         AC_DEFINE(LDAP_SYSLOG,1,
2519                 [define this to add syslog code])
2520 fi
2521 if test "$ol_link_kbind" != no ; then
2522         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION,
2523                 [define to LDAP VENDOR VERSION])
2524 fi
2525 if test "$ol_enable_proctitle" != no ; then
2526         AC_DEFINE(LDAP_PROCTITLE,1,
2527                 [define this for LDAP process title support])
2528 fi
2529 if test "$ol_enable_referrals" != no ; then
2530         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION,
2531                 [define to LDAP VENDOR VERSION])
2532 fi
2533 if test "$ol_enable_local" != no; then
2534         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2535 fi
2536 if test "$ol_link_ipv6" != no; then
2537         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2538 fi
2539 if test "$ol_enable_cleartext" != no ; then
2540         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2541 fi
2542 if test "$ol_enable_crypt" != no ; then
2543         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2544 fi
2545 if test "$ol_link_spasswd" != no ; then
2546         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2547 fi
2548 if test "$ol_enable_rlookups" != no ; then
2549         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2550 fi
2551 if test "$ol_enable_aci" != no ; then
2552         if test $ol_enable_dynacl = no ; then
2553                 ol_enable_dynacl=yes
2554                 AC_MSG_WARN([ACIs need dynacl])
2555         fi
2556         if test "$ol_enable_aci" = mod ; then
2557                 MFLAG=SLAPD_MOD_DYNAMIC
2558                 dnl remove this after moving servers/slapd/aci.c in contrib/slapd-modules/acl
2559                 AC_MSG_ERROR([ACI build as dynamic module not supported (yet)])
2560         else 
2561                 MFLAG=SLAPD_MOD_STATIC
2562         fi
2563         WITH_ACI_ENABLED=$ol_enable_aci
2564         AC_DEFINE_UNQUOTED(SLAPD_ACI_ENABLED,$MFLAG,[define to support per-object ACIs])
2565 else
2566         WITH_ACI_ENABLED=no
2567 fi
2568 if test "$ol_enable_dynacl" != no ; then
2569         AC_DEFINE(SLAP_DYNACL,1,[define to support run-time loadable ACL])
2570 fi
2571
2572 if test "$ol_link_modules" != no ; then
2573         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2574         BUILD_SLAPD=yes
2575         SLAPD_MODULES_LDFLAGS="-dlopen self"
2576 fi
2577
2578 AC_DEFINE(SLAPD_MOD_STATIC,1,[statically linked module])
2579 AC_DEFINE(SLAPD_MOD_DYNAMIC,2,[dynamically linked module])
2580
2581 dnl back-monitor goes first (well, after back-config)
2582 if test "$ol_enable_monitor" != no ; then
2583         BUILD_SLAPD=yes
2584         BUILD_MONITOR=$ol_enable_monitor
2585         if test "$ol_enable_monitor" = mod ; then
2586                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-monitor"
2587                 MFLAG=SLAPD_MOD_DYNAMIC
2588         else
2589                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-monitor"
2590                 MFLAG=SLAPD_MOD_STATIC
2591         fi
2592         AC_DEFINE_UNQUOTED(SLAPD_MONITOR,$MFLAG,[define to support cn=Monitor backend])
2593 fi
2594
2595 if test "$ol_enable_bdb" != no ; then
2596         BUILD_SLAPD=yes
2597         BUILD_BDB=$ol_enable_bdb
2598         if test "$ol_enable_bdb" = mod ; then
2599                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-bdb"
2600                 MFLAG=SLAPD_MOD_DYNAMIC
2601         else
2602                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-bdb"
2603                 MFLAG=SLAPD_MOD_STATIC
2604         fi
2605         AC_DEFINE_UNQUOTED(SLAPD_BDB,$MFLAG,[define to support BDB backend])
2606 fi
2607
2608 if test "$ol_enable_dnssrv" != no ; then
2609         BUILD_SLAPD=yes
2610         BUILD_DNSSRV=$ol_enable_dnssrv
2611         if test "$ol_enable_dnssrv" = mod ; then
2612                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2613                 MFLAG=SLAPD_MOD_DYNAMIC
2614         else
2615                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2616                 MFLAG=SLAPD_MOD_STATIC
2617         fi
2618         AC_DEFINE_UNQUOTED(SLAPD_DNSSRV,$MFLAG,[define to support DNS SRV backend])
2619 fi
2620
2621 if test "$ol_enable_hdb" != no ; then
2622         BUILD_SLAPD=yes
2623         BUILD_HDB=$ol_enable_hdb
2624         if test "$ol_enable_hdb" = mod ; then
2625                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
2626                 MFLAG=SLAPD_MOD_DYNAMIC
2627         else
2628                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
2629                 MFLAG=SLAPD_MOD_STATIC
2630         fi
2631         AC_DEFINE_UNQUOTED(SLAPD_HDB,$MFLAG,[define to support HDB backend])
2632 fi
2633
2634 if test "$ol_enable_ldap" != no ; then
2635         BUILD_SLAPD=yes
2636         BUILD_LDAP=$ol_enable_ldap
2637         if test "$ol_enable_ldap" = mod ; then
2638                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2639                 MFLAG=SLAPD_MOD_DYNAMIC
2640         else
2641                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2642                 MFLAG=SLAPD_MOD_STATIC
2643         fi
2644         AC_DEFINE_UNQUOTED(SLAPD_LDAP,$MFLAG,[define to support LDAP backend])
2645 fi
2646
2647 if test "$ol_enable_meta" != no ; then
2648         BUILD_SLAPD=yes
2649         BUILD_META=$ol_enable_meta
2650         BUILD_REWRITE=yes
2651         if test "$ol_enable_meta" = mod ; then
2652                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2653                 MFLAG=SLAPD_MOD_DYNAMIC
2654         else
2655                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2656                 MFLAG=SLAPD_MOD_STATIC
2657         fi
2658         AC_DEFINE_UNQUOTED(SLAPD_META,$MFLAG,[define to support LDAP Metadirectory backend])
2659 fi
2660
2661 if test "$ol_enable_null" != no ; then
2662         BUILD_SLAPD=yes
2663         BUILD_NULL=$ol_enable_null
2664         if test "$ol_enable_null" = mod ; then
2665                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2666                 MFLAG=SLAPD_MOD_DYNAMIC
2667         else
2668                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2669                 MFLAG=SLAPD_MOD_STATIC
2670         fi
2671         AC_DEFINE_UNQUOTED(SLAPD_NULL,$MFLAG,[define to support NULL backend])
2672 fi
2673
2674 if test "$ol_enable_passwd" != no ; then
2675         BUILD_SLAPD=yes
2676         BUILD_PASSWD=$ol_enable_passwd
2677         if test "$ol_enable_passwd" = mod ; then
2678                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2679                 MFLAG=SLAPD_MOD_DYNAMIC
2680         else
2681                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2682                 MFLAG=SLAPD_MOD_STATIC
2683         fi
2684         AC_DEFINE_UNQUOTED(SLAPD_PASSWD,$MFLAG,[define to support PASSWD backend])
2685 fi
2686
2687 if test "$ol_link_perl" != no ; then
2688         BUILD_SLAPD=yes
2689         BUILD_PERL=$ol_enable_perl
2690         if test "$ol_enable_perl" = mod ; then
2691                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2692                 MFLAG=SLAPD_MOD_DYNAMIC
2693         else
2694                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2695                 MFLAG=SLAPD_MOD_STATIC
2696         fi
2697         AC_DEFINE_UNQUOTED(SLAPD_PERL,$MFLAG,[define to support PERL backend])
2698 fi
2699
2700 if test "$ol_enable_relay" != no ; then
2701         BUILD_SLAPD=yes
2702         BUILD_RELAY=$ol_enable_relay
2703         if test "$ol_enable_relay" = mod ; then
2704                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-relay"
2705                 MFLAG=SLAPD_MOD_DYNAMIC
2706         else
2707                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-relay"
2708                 MFLAG=SLAPD_MOD_STATIC
2709         fi
2710         AC_DEFINE_UNQUOTED(SLAPD_RELAY,$MFLAG,[define to support relay backend])
2711 fi
2712
2713 if test "$ol_enable_shell" != no ; then
2714         if test "$ol_link_threads" != no ; then
2715                 AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
2716         fi
2717         BUILD_SLAPD=yes
2718         BUILD_SHELL=$ol_enable_shell
2719         if test "$ol_enable_shell" = mod ; then
2720                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-shell"
2721                 MFLAG=SLAPD_MOD_DYNAMIC
2722         else
2723                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-shell"
2724                 MFLAG=SLAPD_MOD_STATIC
2725         fi
2726         AC_DEFINE_UNQUOTED(SLAPD_SHELL,$MFLAG,[define to support SHELL backend])
2727 fi
2728
2729 if test "$ol_link_sql" != no ; then
2730         BUILD_SLAPD=yes
2731         BUILD_SQL=$ol_enable_sql
2732         if test "$ol_enable_sql" = mod; then
2733                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2734                 MFLAG=SLAPD_MOD_DYNAMIC
2735         else
2736                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2737                 MFLAG=SLAPD_MOD_STATIC
2738         fi
2739         AC_DEFINE_UNQUOTED(SLAPD_SQL,$MFLAG,[define to support SQL backend])
2740 fi
2741
2742 if test "$ol_enable_accesslog" != no ; then
2743         BUILD_ACCESSLOG=$ol_enable_accesslog
2744         if test "$ol_enable_accesslog" = mod ; then
2745                 MFLAG=SLAPD_MOD_DYNAMIC
2746                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS accesslog.la"
2747         else
2748                 MFLAG=SLAPD_MOD_STATIC
2749                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS accesslog.o"
2750         fi
2751         AC_DEFINE_UNQUOTED(SLAPD_OVER_ACCESSLOG,$MFLAG,[define for In-Directory Access Logging overlay])
2752 fi
2753
2754 if test "$ol_enable_auditlog" != no ; then
2755         BUILD_AUDITLOG=$ol_enable_auditlog
2756         if test "$ol_enable_auditlog" = mod ; then
2757                 MFLAG=SLAPD_MOD_DYNAMIC
2758                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS auditlog.la"
2759         else
2760                 MFLAG=SLAPD_MOD_STATIC
2761                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS auditlog.o"
2762         fi
2763         AC_DEFINE_UNQUOTED(SLAPD_OVER_AUDITLOG,$MFLAG,[define for Audit Logging overlay])
2764 fi
2765
2766 if test "$ol_enable_constraint" != no ; then
2767         BUILD_CONSTRAINT=$ol_enable_constraint
2768         if test "$ol_enable_constraint" = mod ; then
2769                 MFLAG=SLAPD_MOD_DYNAMIC
2770                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS constraint.la"
2771         else
2772                 MFLAG=SLAPD_MOD_STATIC
2773                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS constraint.o"
2774         fi
2775         AC_DEFINE_UNQUOTED(SLAPD_OVER_CONSTRAINT,$MFLAG,[define for Attribute Constraint overlay])
2776 fi
2777
2778 if test "$ol_enable_dds" != no ; then
2779         BUILD_DDS=$ol_enable_dds
2780         if test "$ol_enable_dds" = mod ; then
2781                 MFLAG=SLAPD_MOD_DYNAMIC
2782                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dds.la"
2783         else
2784                 MFLAG=SLAPD_MOD_STATIC
2785                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dds.o"
2786         fi
2787         AC_DEFINE_UNQUOTED(SLAPD_OVER_DDS,$MFLAG,[define for Dynamic Directory Services overlay])
2788 fi
2789
2790 if test "$ol_enable_denyop" != no ; then
2791         BUILD_DENYOP=$ol_enable_denyop
2792         if test "$ol_enable_denyop" = mod ; then
2793                 MFLAG=SLAPD_MOD_DYNAMIC
2794                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS denyop.la"
2795         else
2796                 MFLAG=SLAPD_MOD_STATIC
2797                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS denyop.o"
2798         fi
2799         AC_DEFINE_UNQUOTED(SLAPD_OVER_DENYOP,$MFLAG,[define for Deny Operation overlay])
2800 fi
2801
2802 if test "$ol_enable_dyngroup" != no ; then
2803         BUILD_DYNGROUP=$ol_enable_dyngroup
2804         if test "$ol_enable_dyngroup" = mod ; then
2805                 MFLAG=SLAPD_MOD_DYNAMIC
2806                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dyngroup.la"
2807         else
2808                 MFLAG=SLAPD_MOD_STATIC
2809                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dyngroup.o"
2810         fi
2811         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNGROUP,$MFLAG,[define for Dynamic Group overlay])
2812 fi
2813
2814 if test "$ol_enable_dynlist" != no ; then
2815         BUILD_DYNLIST=$ol_enable_dynlist
2816         if test "$ol_enable_dynlist" = mod ; then
2817                 MFLAG=SLAPD_MOD_DYNAMIC
2818                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dynlist.la"
2819         else
2820                 MFLAG=SLAPD_MOD_STATIC
2821                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS dynlist.o"
2822         fi
2823         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNLIST,$MFLAG,[define for Dynamic List overlay])
2824 fi
2825
2826 if test "$ol_enable_lastmod" != no ; then
2827         BUILD_LASTMOD=$ol_enable_lastmod
2828         if test "$ol_enable_lastmod" = mod ; then
2829                 MFLAG=SLAPD_MOD_DYNAMIC
2830                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS lastmod.la"
2831         else
2832                 MFLAG=SLAPD_MOD_STATIC
2833                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS lastmod.o"
2834         fi
2835         AC_DEFINE_UNQUOTED(SLAPD_OVER_LASTMOD,$MFLAG,[define for Last Modification overlay])
2836 fi
2837
2838 if test "$ol_enable_ppolicy" != no ; then
2839         BUILD_PPOLICY=$ol_enable_ppolicy
2840         if test "$ol_enable_ppolicy" = mod ; then
2841                 MFLAG=SLAPD_MOD_DYNAMIC
2842                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS ppolicy.la"
2843         else
2844                 MFLAG=SLAPD_MOD_STATIC
2845                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS ppolicy.o"
2846         fi
2847         AC_DEFINE_UNQUOTED(SLAPD_OVER_PPOLICY,$MFLAG,[define for Password Policy overlay])
2848 fi
2849
2850 if test "$ol_enable_proxycache" != no ; then
2851         BUILD_PROXYCACHE=$ol_enable_proxycache
2852         if test "$ol_enable_proxycache" = mod ; then
2853                 MFLAG=SLAPD_MOD_DYNAMIC
2854                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS pcache.la"
2855         else
2856                 MFLAG=SLAPD_MOD_STATIC
2857                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS pcache.o"
2858         fi
2859         AC_DEFINE_UNQUOTED(SLAPD_OVER_PROXYCACHE,$MFLAG,[define for Proxy Cache overlay])
2860 fi
2861
2862 if test "$ol_enable_refint" != no ; then
2863         BUILD_REFINT=$ol_enable_refint
2864         if test "$ol_enable_refint" = mod ; then
2865                 MFLAG=SLAPD_MOD_DYNAMIC
2866                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS refint.la"
2867         else
2868                 MFLAG=SLAPD_MOD_STATIC
2869                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS refint.o"
2870         fi
2871         AC_DEFINE_UNQUOTED(SLAPD_OVER_REFINT,$MFLAG,[define for Referential Integrity overlay])
2872 fi
2873
2874 if test "$ol_enable_retcode" != no ; then
2875         BUILD_RETCODE=$ol_enable_retcode
2876         if test "$ol_enable_retcode" = mod ; then
2877                 MFLAG=SLAPD_MOD_DYNAMIC
2878                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS retcode.la"
2879         else
2880                 MFLAG=SLAPD_MOD_STATIC
2881                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS retcode.o"
2882         fi
2883         AC_DEFINE_UNQUOTED(SLAPD_OVER_RETCODE,$MFLAG,[define for Referential Integrity overlay])
2884 fi
2885
2886 if test "$ol_enable_rwm" != no ; then
2887         BUILD_REWRITE=yes
2888         BUILD_RWM=$ol_enable_rwm
2889         if test "$ol_enable_rwm" = mod ; then
2890                 MFLAG=SLAPD_MOD_DYNAMIC
2891                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS rwm.la"
2892         else
2893                 MFLAG=SLAPD_MOD_STATIC
2894                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS rwm_x.o"
2895         fi
2896         AC_DEFINE_UNQUOTED(SLAPD_OVER_RWM,$MFLAG,[define for Rewrite/Remap overlay])
2897 fi
2898
2899 if test "$ol_enable_seqmod" != no ; then
2900         BUILD_SEQMOD=$ol_enable_seqmod
2901         if test "$ol_enable_seqmod" = mod ; then
2902                 MFLAG=SLAPD_MOD_DYNAMIC
2903                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS seqmod.la"
2904         else
2905                 MFLAG=SLAPD_MOD_STATIC
2906                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS seqmod.o"
2907         fi
2908         AC_DEFINE_UNQUOTED(SLAPD_OVER_SEQMOD,$MFLAG,[define for Sequential Modify overlay])
2909 fi
2910
2911 if test "$ol_enable_syncprov" != no ; then
2912         BUILD_SYNCPROV=$ol_enable_syncprov
2913         if test "$ol_enable_syncprov" = mod ; then
2914                 MFLAG=SLAPD_MOD_DYNAMIC
2915                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS syncprov.la"
2916         else
2917                 MFLAG=SLAPD_MOD_STATIC
2918                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS syncprov.o"
2919         fi
2920         AC_DEFINE_UNQUOTED(SLAPD_OVER_SYNCPROV,$MFLAG,[define for Syncrepl Provider overlay])
2921 fi
2922
2923 if test "$ol_enable_translucent" != no ; then
2924         BUILD_TRANSLUCENT=$ol_enable_translucent
2925         if test "$ol_enable_translucent" = mod ; then
2926                 MFLAG=SLAPD_MOD_DYNAMIC
2927                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS translucent.la"
2928         else
2929                 MFLAG=SLAPD_MOD_STATIC
2930                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS translucent.o"
2931         fi
2932         AC_DEFINE_UNQUOTED(SLAPD_OVER_TRANSLUCENT,$MFLAG,[define for Translucent Proxy overlay])
2933 fi
2934
2935 if test "$ol_enable_unique" != no ; then
2936         BUILD_UNIQUE=$ol_enable_unique
2937         if test "$ol_enable_unique" = mod ; then
2938                 MFLAG=SLAPD_MOD_DYNAMIC
2939                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS unique.la"
2940         else
2941                 MFLAG=SLAPD_MOD_STATIC
2942                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS unique.o"
2943         fi
2944         AC_DEFINE_UNQUOTED(SLAPD_OVER_UNIQUE,$MFLAG,[define for Attribute Uniqueness overlay])
2945 fi
2946
2947 if test "$ol_enable_valsort" != no ; then
2948         BUILD_VALSORT=$ol_enable_valsort
2949         if test "$ol_enable_valsort" = mod ; then
2950                 MFLAG=SLAPD_MOD_DYNAMIC
2951                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS valsort.la"
2952         else
2953                 MFLAG=SLAPD_MOD_STATIC
2954                 SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS valsort.o"
2955         fi
2956         AC_DEFINE_UNQUOTED(SLAPD_OVER_VALSORT,$MFLAG,[define for Value Sorting overlay])
2957 fi
2958
2959 if test "$ol_enable_slurpd" != no &&
2960    test "$ol_link_threads" != no &&
2961    test $BUILD_SLAPD = yes ; then
2962         BUILD_SLURPD=yes
2963 fi
2964
2965 if test "$ol_enable_rewrite" != no ; then
2966         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2967         BUILD_REWRITE=yes
2968 fi
2969
2970 if test "$ol_enable_slapi" != no ; then
2971         AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
2972         BUILD_SLAPI=yes
2973         SLAPD_SLAPI_DEPEND=libslapi.a
2974 fi
2975
2976 dnl ----------------------------------------------------------------
2977
2978 dnl
2979 dnl For Windows build, we don't want to include -dlopen flags.
2980 dnl They hurt more than they help.
2981 dnl
2982
2983 if test "$ac_cv_mingw32" = yes ; then
2984         PLAT=NT
2985         SLAPD_MODULES_LDFLAGS=
2986 else
2987         PLAT=UNIX
2988 fi
2989
2990 AC_SUBST(LIBSRCS)
2991 AC_SUBST(PLAT)
2992 AC_SUBST(WITH_SASL)
2993 AC_SUBST(WITH_TLS)
2994 AC_SUBST(WITH_MODULES_ENABLED)
2995 AC_SUBST(WITH_ACI_ENABLED)
2996 AC_SUBST(BUILD_THREAD)
2997 AC_SUBST(BUILD_LIBS_DYNAMIC)
2998
2999 AC_SUBST(BUILD_SLAPD)
3000 dnl slapi
3001   AC_SUBST(BUILD_SLAPI)
3002   AC_SUBST(SLAPD_SLAPI_DEPEND)
3003 dnl backends
3004   AC_SUBST(BUILD_BDB)
3005   AC_SUBST(BUILD_DNSSRV)
3006   AC_SUBST(BUILD_HDB)
3007   AC_SUBST(BUILD_LDAP)
3008   AC_SUBST(BUILD_META)
3009   AC_SUBST(BUILD_MONITOR)
3010   AC_SUBST(BUILD_NULL)
3011   AC_SUBST(BUILD_PASSWD)
3012   AC_SUBST(BUILD_RELAY)
3013   AC_SUBST(BUILD_PERL)
3014   AC_SUBST(BUILD_SHELL)
3015   AC_SUBST(BUILD_SQL)
3016 dnl overlays
3017   AC_SUBST(BUILD_ACCESSLOG)
3018   AC_SUBST(BUILD_AUDITLOG)
3019   AC_SUBST(BUILD_CONSTRAINT)
3020   AC_SUBST(BUILD_DDS)
3021   AC_SUBST(BUILD_DENYOP)
3022   AC_SUBST(BUILD_DYNGROUP)
3023   AC_SUBST(BUILD_DYNLIST)
3024   AC_SUBST(BUILD_LASTMOD)
3025   AC_SUBST(BUILD_PPOLICY)
3026   AC_SUBST(BUILD_PROXYCACHE)
3027   AC_SUBST(BUILD_REFINT)
3028   AC_SUBST(BUILD_RETCODE)
3029   AC_SUBST(BUILD_RWM)
3030   AC_SUBST(BUILD_SEQMOD)
3031   AC_SUBST(BUILD_SYNCPROV)
3032   AC_SUBST(BUILD_TRANSLUCENT)
3033   AC_SUBST(BUILD_UNIQUE)
3034   AC_SUBST(BUILD_VALSORT)
3035 AC_SUBST(BUILD_SLURPD)
3036
3037 AC_SUBST(LDAP_LIBS)
3038 AC_SUBST(SLAPD_LIBS)
3039 AC_SUBST(SLURPD_LIBS)
3040 AC_SUBST(BDB_LIBS)
3041 AC_SUBST(LTHREAD_LIBS)
3042 AC_SUBST(LUTIL_LIBS)
3043 AC_SUBST(WRAP_LIBS)
3044
3045 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
3046 AC_SUBST(SLAPD_MODULES_LDFLAGS)
3047
3048 AC_SUBST(SLAPD_NO_STATIC)
3049 AC_SUBST(SLAPD_STATIC_BACKENDS)
3050 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
3051 AC_SUBST(SLAPD_STATIC_OVERLAYS)
3052 AC_SUBST(SLAPD_DYNAMIC_OVERLAYS)
3053
3054 AC_SUBST(PERL_CPPFLAGS)
3055 AC_SUBST(SLAPD_PERL_LDFLAGS)
3056 AC_SUBST(MOD_PERL_LDFLAGS)
3057
3058 AC_SUBST(KRB4_LIBS)
3059 AC_SUBST(KRB5_LIBS)
3060 AC_SUBST(SASL_LIBS)
3061 AC_SUBST(TLS_LIBS)
3062 AC_SUBST(MODULES_LIBS)
3063 AC_SUBST(SLAPI_LIBS)
3064 AC_SUBST(LIBSLAPI)
3065 AC_SUBST(LIBSLAPITOOLS)
3066 AC_SUBST(AUTH_LIBS)
3067 AC_SUBST(ICU_LIBS)
3068
3069 AC_SUBST(SLAPD_SLP_LIBS)
3070 AC_SUBST(SLAPD_GMP_LIBS)
3071
3072 AC_SUBST(SLAPD_SQL_LDFLAGS)
3073 AC_SUBST(SLAPD_SQL_LIBS)
3074 AC_SUBST(SLAPD_SQL_INCLUDES)
3075
3076 dnl ----------------------------------------------------------------
3077 dnl final help output
3078 AC_ARG_WITH(xxinstall,[
3079 See INSTALL file for further details.])
3080
3081 dnl ----------------------------------------------------------------
3082 dnl final output
3083 dnl
3084
3085 AC_CONFIG_FILES([Makefile:build/top.mk:Makefile.in:build/dir.mk]
3086 [doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk]
3087 [doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk]
3088 [doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk]
3089 [doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk]
3090 [doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk]
3091 [doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk]
3092 [clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk]
3093 [clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk]
3094 [include/Makefile:build/top.mk:include/Makefile.in]
3095 [libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk]
3096 [libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk]
3097 [libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk]
3098 [libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk]
3099 [libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk]
3100 [libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk]
3101 [libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk]
3102 [servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk]
3103 [servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk]
3104 [servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk]
3105 [servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk]
3106 [servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk]
3107 [servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk]
3108 [servers/slapd/back-ldif/Makefile:build/top.mk:servers/slapd/back-ldif/Makefile.in:build/mod.mk]
3109 [servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk]
3110 [servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk]
3111 [servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk]
3112 [servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk]
3113 [servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk]
3114 [servers/slapd/back-relay/Makefile:build/top.mk:servers/slapd/back-relay/Makefile.in:build/mod.mk]
3115 [servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk]
3116 [servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk]
3117 [servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk]
3118 [servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk]
3119 [servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk]
3120 [servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk]
3121 [tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk]
3122 [tests/run]
3123 [tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk])
3124
3125 AC_CONFIG_COMMANDS([default],[[
3126 chmod +x tests/run
3127 date > stamp-h
3128 BACKENDSC="servers/slapd/backends.c"
3129 echo "Making $BACKENDSC"
3130 rm -f $BACKENDSC
3131 cat > $BACKENDSC << ENDX
3132 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3133  *
3134  * Copyright 1998-2006 The OpenLDAP Foundation.
3135  * All rights reserved.
3136  *
3137  * Redistribution and use in source and binary forms, with or without
3138  * modification, are permitted only as authorized by the OpenLDAP
3139  * Public License.
3140  *
3141  * A copy of this license is available in the file LICENSE in the
3142  * top-level directory of the distribution or, alternatively, at
3143  * <http://www.OpenLDAP.org/license.html>.
3144  */
3145 /* This file is automatically generated by configure; please do not edit. */
3146
3147 #include "portable.h"
3148 #include "slap.h"
3149
3150 ENDX
3151 if test "${STATIC_BACKENDS}"; then
3152         for b in config ${STATIC_BACKENDS}; do
3153                 bb=`echo "${b}" | sed -e 's/back-//'`
3154                 cat >> $BACKENDSC << ENDX
3155 extern BI_init ${bb}_back_initialize;
3156 ENDX
3157         done
3158
3159         cat >> $BACKENDSC << ENDX
3160
3161 BackendInfo slap_binfo[] = {
3162 ENDX
3163
3164         for b in config ${STATIC_BACKENDS}; do
3165                 bb=`echo "${b}" | sed -e 's/back-//'`
3166                 echo "    Add ${bb} ..."
3167                 cat >> $BACKENDSC << ENDX
3168         { "${bb}", ${bb}_back_initialize },
3169 ENDX
3170         done
3171
3172         cat >> $BACKENDSC << ENDX
3173         { NULL, NULL },
3174 };
3175
3176 /* end of generated file */
3177 ENDX
3178 fi
3179 OVERLAYSC="servers/slapd/overlays/statover.c"
3180 echo "Making $OVERLAYSC"
3181 rm -f $OVERLAYSC
3182 cat > $OVERLAYSC << ENDX
3183 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
3184  *
3185  * Copyright 1998-2006 The OpenLDAP Foundation.
3186  * All rights reserved.
3187  *
3188  * Redistribution and use in source and binary forms, with or without
3189  * modification, are permitted only as authorized by the OpenLDAP
3190  * Public License.
3191  *
3192  * A copy of this license is available in the file LICENSE in the
3193  * top-level directory of the distribution or, alternatively, at
3194  * <http://www.OpenLDAP.org/license.html>.
3195  */
3196 /* This file is automatically generated by configure; please do not edit. */
3197
3198 #include "portable.h"
3199 #include "slap.h"
3200
3201 ENDX
3202 if test "${STATIC_OVERLAYS}"; then
3203         for o in ${STATIC_OVERLAYS}; do
3204                 oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3205                 cat >> $OVERLAYSC << ENDX
3206 extern OV_init ${oo}_initialize;
3207 ENDX
3208         done
3209 fi
3210
3211 cat >> $OVERLAYSC << ENDX
3212
3213 OverlayInit slap_oinfo[] = {
3214 ENDX
3215
3216 if test "${STATIC_OVERLAYS}"; then
3217         for o in ${STATIC_OVERLAYS}; do
3218                 oo=`echo "${o}" | sed -e 's/.o$//' -e 's/_x$//'`
3219                 echo "    Add ${oo} ..."
3220                 cat >> $OVERLAYSC << ENDX
3221         { "${oo}", ${oo}_initialize },
3222 ENDX
3223         done
3224 fi
3225
3226         cat >> $OVERLAYSC << ENDX
3227         { NULL, NULL },
3228 };
3229
3230 /* end of generated file */
3231 ENDX
3232
3233 echo Please run \"make depend\" to build dependencies
3234 ]],[[
3235 STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS"
3236 STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS"
3237 ]])
3238 AC_OUTPUT