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