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