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