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