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