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