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