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