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