]> git.sur5r.net Git - openldap/blob - configure.in
Add check for epoll(), sys/epoll.h
[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 AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL,1,
891                         [define if you have epoll]))
892 AC_CHECK_HEADERS( sys/epoll.h )
893
894 dnl ----------------------------------------------------------------
895 # strerror checks
896 OL_STRERROR
897
898 dnl ----------------------------------------------------------------
899 dnl require POSIX regex
900 AC_CHECK_HEADERS( regex.h )
901 if test "$ac_cv_header_regex_h" != yes ; then
902         AC_MSG_ERROR([POSIX regex.h required.])
903 fi
904 AC_SEARCH_LIBS(regfree, [regex gnuregex],
905         :, AC_MSG_ERROR([POSIX regex required.]))
906
907 OL_POSIX_REGEX
908 if test "$ol_cv_c_posix_regex" = no ; then
909         AC_MSG_ERROR([broken POSIX regex!])
910 fi
911
912 dnl ----------------------------------------------------------------
913 dnl UUID Support
914
915 have_uuid=no
916 AC_CHECK_HEADERS(sys/uuid.h)
917 if test $ac_cv_header_sys_uuid_h = yes ; then
918         save_LIBS="$LIBS"
919         AC_SEARCH_LIBS(uuid_to_str, uuid, [have_uuid=yes], :)
920         LIBS="$save_LIBS"
921
922         if test have_uuid = yes ; then
923                 AC_DEFINE(HAVE_UUID_TO_STR,1,
924                         [define if you have uuid_to_str()])
925
926                 test "$ac_cv_search_uuid_to_str" = "none required" || \
927                         SLAPD_LIBS="$SLAPD_LIBS $ac_cv_search_uuid_to_str"
928         fi
929 fi
930
931 dnl For windows, check for the need of RPCRT for UUID function support
932 if test $have_uuid = no ; then
933         AC_MSG_CHECKING(to see if -lrpcrt4 is needed for win32 UUID support)
934         save_LIBS="$LIBS"
935         LIBS="$LIBS -lrpcrt4"
936         AC_TRY_LINK([
937                 int __stdcall UuidCreate(void *);
938                 int __stdcall UuidToStringA(void *,void **);
939                 ],
940                 [
941                 UuidCreate(0);
942                 UuidToStringA(0,0);
943                 ],
944                 need_rpcrt=yes, need_rpcrt=no)
945         if test $need_rpcrt = yes; then
946                 SLAPD_LIBS="$SLAPD_LIBS -lrpcrt4"
947         fi
948         LIBS="$save_LIBS"
949         AC_MSG_RESULT($need_rpcrt)
950 fi
951
952 dnl ----------------------------------------------------------------
953 dnl Check for resolver routines
954 dnl       need to check for both res_query and __res_query
955 dnl   need to check -lc, -lbind, and -lresolv
956 ol_link_dnssrv=no
957 AC_CHECK_FUNC(res_query,:)
958 if test $ac_cv_func_res_query = no ; then 
959         AC_CHECK_FUNC(__res_query,:)
960         ac_cv_func_res_query=$ac_cv_func___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(bind, __res_query)
970         ac_cv_func_res_query=$ac_cv_lib_bind___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_query)
980         ac_cv_func_res_query=$ac_cv_lib_resolv___res_query
981 fi
982
983 if test $ac_cv_func_res_query = no ; then 
984         AC_CHECK_LIB(resolv, _res_9_query)
985         ac_cv_func_res_query=$ac_cv_lib_resolv_res_9_query
986 fi
987
988 if test "$ac_cv_func_res_query" = yes ; then
989         AC_DEFINE(HAVE_RES_QUERY,1,
990                 [define if you have res_query()])
991
992         if test $ol_enable_dnssrv != no ; then
993                 ol_link_dnssrv=yes
994         fi
995 fi
996
997 if test "$ol_enable_dnssrv" != no -a "$ol_link_dnssrv" = no ; then
998         AC_MSG_ERROR([DNSSRV requires res_query()])
999 fi
1000
1001 AC_CHECK_FUNCS( hstrerror )
1002
1003 dnl ----------------------------------------------------------------
1004 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
1005 dnl PF_LOCAL may use getaddrinfo in available
1006 AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
1007
1008 ol_link_ipv6=no
1009 if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
1010         if test $ol_enable_ipv6 = yes ; then
1011                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
1012         fi
1013 elif test $ol_enable_ipv6 != no ; then
1014         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
1015                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
1016 #                       include <netinet/in.h>
1017 #                       ifdef INET6_ADDRSTRLEN
1018                                 __has_inet6_addrstrlen__;
1019 #                       endif
1020                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
1021
1022
1023         AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
1024                 AC_TRY_COMPILE([
1025 #include <sys/types.h>
1026 #include <sys/socket.h>
1027 ],[
1028                         struct sockaddr_storage ss;
1029 ],                      [ol_cv_struct_sockaddr_storage=yes],
1030                         [ol_cv_struct_sockaddr_storage=no])])
1031
1032         if test $ol_cv_inet6_addrstrlen = yes \
1033                 -a $ol_cv_struct_sockaddr_storage = yes ; then
1034                 ol_link_ipv6=yes
1035         elif test $ol_enable_ipv6 = yes \
1036                         -a $ol_cv_inet6_addrstrlen = no ; then
1037                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
1038         elif test $ol_enable_ipv6 = yes \
1039                         -a $ol_cv_struct_sockaddr_storage = no ; then
1040                 AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
1041         fi
1042 fi
1043
1044 if test $ol_enable_local != no ; then
1045         AC_CHECK_HEADERS( sys/un.h )
1046
1047         if test $ol_enable_local = auto ; then
1048                 ol_enable_local=$ac_cv_header_sys_un_h
1049         elif test $ac_cv_header_sys_un_h = no ; then
1050                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
1051         fi
1052 fi
1053
1054 dnl ----------------------------------------------------------------
1055 dnl Kerberos
1056 ol_link_kbind=no
1057 ol_link_krb5=no
1058 ol_link_krb4=no
1059
1060 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1061         -o $ol_with_kerberos = k5 -o $ol_with_kerberos = k5only \
1062         -o $ol_with_kerberos = k425 ; then
1063
1064         AC_CHECK_HEADERS(krb5.h)
1065
1066         if test $ac_cv_header_krb5_h = yes ; then
1067                 dnl lazy check for Heimdal Kerberos
1068                 AC_CHECK_HEADERS(heim_err.h)
1069                 if test $ac_cv_header_heim_err_h = yes ; then
1070                         krb5_impl=heimdal
1071                 else
1072                         krb5_impl=mit
1073                 fi
1074
1075                 if test $krb5_impl = mit; then
1076                         AC_CHECK_LIB(k5crypto, main,
1077                                 [krb5crypto=k5crypto],
1078                                 [krb5crypto=crypto])
1079
1080                         AC_CHECK_LIB(krb5, main,
1081                                 [have_krb5=yes
1082                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
1083                                 [have_krb5=no],
1084                                 [-l$krb5crypto -lcom_err])
1085
1086                 elif test $krb5_impl = heimdal; then
1087                         AC_CHECK_LIB(des, main,
1088                                 [krb5crypto=des],
1089                                 [krb5crypto=crypto])
1090
1091                         AC_CHECK_LIB(krb5, main,
1092                                 [have_krb5=yes
1093                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err"],
1094                                 [have_krb5=no],
1095                                 [-l$krb5crypto -lasn1 -lroken -lcom_err])
1096
1097                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
1098                                 [define if you have HEIMDAL Kerberos])
1099
1100                 else
1101                         have_krb5=no
1102                         AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
1103                 fi
1104
1105                 if test $have_krb5 = yes ; then
1106                         ol_link_krb5=yes
1107
1108                         AC_DEFINE(HAVE_KRB5, 1,
1109                                 [define if you have Kerberos V])
1110
1111                         if test $ol_with_kerberos = k5only ; then
1112                                 ol_with_kerberos=found
1113                         fi
1114
1115                 elif test $ol_with_kerberos != auto ; then
1116                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1117                 fi
1118
1119         fi
1120 fi
1121
1122 if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
1123         $ol_with_kerberos = auto -o $ol_with_kerberos = k425 \) ; then
1124
1125         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1126
1127         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1128                 if test $krb5_impl = mit; then
1129                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1130                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1131                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1132
1133                 elif test $krb5_impl = heimdal; then
1134                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1135                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1136                                 [-lkrb5 -l$krb5crypto -lasn1 -lroken -lcom_err])
1137
1138                 else
1139                         have_425=no
1140                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1141                 fi
1142
1143                 if test $have_k425 = yes ; then
1144                         ol_with_kerberos=found
1145                         ol_link_krb4=yes
1146
1147                         AC_DEFINE(HAVE_KRB425, 1,
1148                                 [define if you have Kerberos V with IV support])
1149                         AC_DEFINE(HAVE_KRB4, 1,
1150                                 [define if you have Kerberos IV])
1151
1152                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1153                                 [ol_cv_var_des_debug], [
1154                                 dnl save the flags
1155                                 save_LIBS="$LIBS"
1156                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1157                                 AC_TRY_LINK([
1158 #include <kerberosIV/krb.h>
1159 #include <kerberosIV/des.h>
1160 extern int des_debug;
1161 ],[
1162 des_debug = 1;
1163 ],                              ol_cv_var_des_debug=yes, ol_cv_var_des_debug=no)
1164                                 dnl restore the LIBS
1165                                 LIBS="$save_LIBS"
1166                         ])
1167
1168                         if test $ol_cv_var_des_debug = yes ; then
1169                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1170                                         [define if you have Kerberos des_debug])
1171                         fi
1172
1173                         LIBS="$save_LIBS"
1174                 fi
1175         fi
1176 fi
1177
1178 if test $ol_link_krb5 = yes ; then
1179         ol_with_kerberos=found
1180 fi
1181
1182 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1183         -o $ol_with_kerberos = k4 -o $ol_with_kerberos = kth ; then
1184
1185         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1186
1187         if test $ac_cv_header_krb_h = yes ; then
1188                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1189
1190                 if test $have_k4 = yes ; then
1191                         ol_with_kerberos=found
1192                         ol_link_krb4=yes
1193
1194                         AC_DEFINE(HAVE_KRB4, 1,
1195                                 [define if you have Kerberos IV])
1196
1197                         KRB4_LIBS="-lkrb -ldes"
1198
1199                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1200                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1201                                         [define if you have Kth Kerberos])
1202                         fi
1203                 fi
1204         fi
1205 fi
1206
1207 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
1208         ol_link_kbind=yes
1209
1210 elif test $ol_enable_kbind = yes ; then
1211         AC_MSG_ERROR([Kerberos IV detection failed])
1212 fi
1213
1214 if test $ol_link_krb4 = yes -o $ol_link_krb5 = yes ; then
1215         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1216
1217 elif test $ol_with_kerberos != auto -a $ol_with_kerberos != no ; then
1218         AC_MSG_ERROR([Kerberos detection failed])
1219 fi
1220
1221 dnl ----------------------------------------------------------------
1222 dnl TLS/SSL
1223         
1224 ol_link_tls=no
1225 if test $ol_with_tls != no ; then
1226         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1227
1228         if test $ac_cv_header_openssl_ssl_h = yes \
1229                 -o $ac_cv_header_ssl_h = yes ; then
1230                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1231                         [have_ssleay=yes
1232                         need_rsaref=no],
1233                         [have_ssleay=no],
1234                         [-lcrypto])
1235                         
1236                 if test $have_ssleay = no ; then
1237                         AC_CHECK_LIB(ssl, SSL_library_init,
1238                                 [have_ssleay=yes
1239                                 need_rsaref=no], [have_ssleay=no],
1240                                 [-lcrypto])
1241                 fi
1242
1243                 if test $have_ssleay = no ; then
1244                         AC_CHECK_LIB(ssl, ssl3_accept, 
1245                                 [have_ssleay=yes
1246                                 need_rsaref=yes], [have_ssleay=no],
1247                                 [-lcrypto -lRSAglue -lrsaref])
1248                 fi
1249
1250                 if test $have_ssleay = yes ; then
1251                         ol_with_tls=found
1252                         ol_link_tls=yes
1253
1254                         AC_DEFINE(HAVE_SSLEAY, 1, 
1255                                 [define if you have SSLeay or OpenSSL])
1256
1257                         if test $need_rsaref = yes; then
1258                                 AC_DEFINE(HAVE_RSAREF, 1, 
1259                                         [define if you have RSAref])
1260
1261                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1262                         else
1263                                 TLS_LIBS="-lssl -lcrypto"
1264                         fi
1265                 fi
1266                 OL_SSL_COMPAT
1267                 if test $ol_cv_ssl_crl_compat = no ; then
1268                         ol_link_ssl=no
1269                 else 
1270                         AC_DEFINE(HAVE_OPENSSL_CRL, 1, 
1271                                 [define if you have OpenSSL with CRL checking capability])
1272                 fi
1273         fi
1274
1275 else
1276         AC_WARN([TLS data protection not supported!])
1277 fi
1278
1279 WITH_TLS=no
1280 if test $ol_link_tls = yes ; then
1281         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1282         WITH_TLS=yes
1283
1284 elif test $ol_with_tls = auto ; then
1285         AC_WARN([Could not locate TLS/SSL package])
1286         AC_WARN([TLS data protection not supported!])
1287
1288 elif test $ol_with_tls != no ; then
1289         AC_ERROR([Could not locate TLS/SSL package])
1290 fi
1291
1292 dnl ----------------------------------------------------------------
1293 dnl LAN Manger password checking requires DES from OpenSSL
1294 if test $ol_enable_lmpasswd != no; then
1295         if test $ol_link_tls != yes ; then
1296                 AC_ERROR([LAN Manager passwords require OpenSSL])
1297         fi
1298
1299         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1300 fi
1301
1302 dnl ----------------------------------------------------------------
1303 dnl Threads?
1304 ol_link_threads=no
1305
1306 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1307         -o $ol_with_threads = nt ; then
1308
1309         OL_NT_THREADS
1310
1311         if test "$ol_cv_nt_threads" = yes ; then
1312                 ol_link_threads=nt
1313                 ol_with_threads=found
1314                 ol_with_yielding_select=yes
1315
1316                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1317                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1318         fi
1319
1320         if test $ol_with_threads = nt ; then
1321                 AC_MSG_ERROR([could not locate NT Threads])
1322         fi
1323 fi
1324
1325 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1326         -o $ol_with_threads = posix ; then
1327
1328         AC_CHECK_HEADERS(pthread.h)
1329
1330         if test $ac_cv_header_pthread_h = yes ; then
1331                 OL_POSIX_THREAD_VERSION
1332
1333                 if test $ol_cv_pthread_version != 0 ; then
1334                         AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
1335                                 [define to pthreads API spec revision])
1336                 else
1337                         AC_MSG_ERROR([unknown pthread version])
1338                 fi
1339
1340                 # consider threads found
1341                 ol_with_threads=found
1342
1343                 OL_HEADER_LINUX_THREADS
1344                 OL_HEADER_GNU_PTH_PTHREAD_H
1345
1346                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1347                         AC_CHECK_HEADERS(sched.h)
1348                 fi
1349
1350                 dnl Now the hard part, how to link?
1351                 dnl
1352                 dnl currently supported checks:
1353                 dnl
1354                 dnl Check for no flags 
1355                 dnl     pthread_create() in $LIBS
1356                 dnl
1357                 dnl Check special pthread (final) flags
1358                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1359                 dnl     pthread_create() with -kthread (FreeBSD)
1360                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1361                 dnl     pthread_create() with -pthreads (?)
1362                 dnl     pthread_create() with -mthreads (AIX)
1363                 dnl     pthread_create() with -thread (?)
1364                 dnl
1365                 dnl Check pthread (final) libraries
1366                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1367                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1368                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1369                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1370                 dnl     pthread_create() in -lpthread (many)
1371                 dnl     pthread_create() in -lc_r (FreeBSD)
1372                 dnl
1373                 dnl Check pthread (draft4) flags (depreciated)
1374                 dnl     pthread_create() with -threads (OSF/1)
1375                 dnl
1376                 dnl Check pthread (draft4) libraries (depreciated)
1377                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1378                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1379                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1380                 dnl     pthread_create() in -lpthreads (many)
1381                 dnl
1382
1383                 dnl pthread_create in $LIBS
1384                 AC_CACHE_CHECK([for pthread_create in default libraries],
1385                         ol_cv_pthread_create,[
1386                 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1387                         [ol_cv_pthread_create=yes],
1388                         [ol_cv_pthread_create=no],
1389                         [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1390                                 [ol_cv_pthread_create=yes],
1391                                 [ol_cv_pthread_create=no])])])
1392
1393                 if test $ol_cv_pthread_create != no ; then
1394                         ol_link_threads=posix
1395                         ol_link_pthreads=""
1396                 fi
1397                 
1398 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1399                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1400                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1401                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1402                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1403                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1404
1405                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1406                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1407                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1408                         [ol_cv_pthread_lpthread_lmach_lexc])
1409 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1410 dnl                     [ol_cv_pthread_lpthread_lexc])
1411
1412                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1413                         [ol_cv_pthread_lib_lpthread_woff])
1414
1415                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1416                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1417
1418                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1419
1420                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1421                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1422                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1423                         [ol_cv_pthread_lpthreads_lmach_lexc])
1424                 OL_PTHREAD_TRY([-lpthreads -lexc],
1425                         [ol_cv_pthread_lpthreads_lexc])
1426
1427                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1428
1429                 if test $ol_link_threads != no ; then
1430                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1431
1432                         dnl save flags
1433                         save_CPPFLAGS="$CPPFLAGS"
1434                         save_LIBS="$LIBS"
1435                         LIBS="$LTHREAD_LIBS $LIBS"
1436
1437                         dnl All POSIX Thread (final) implementations should have
1438                         dnl sched_yield instead of pthread yield.
1439                         dnl check for both, and thr_yield for Solaris
1440                         AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
1441
1442                         if test $ac_cv_func_sched_yield = no -a \
1443                                 $ac_cv_func_pthread_yield = no -a \
1444                                 $ac_cv_func_thr_yield = no ; then
1445                                 dnl Digital UNIX has sched_yield() in -lrt
1446                                 AC_CHECK_LIB(rt, sched_yield,
1447                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1448                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1449                                                 [Define if you have the sched_yield function.])
1450                                         ac_cv_func_sched_yield=yes],
1451                                         [ac_cv_func_sched_yield=no])
1452                         fi
1453                         if test $ac_cv_func_sched_yield = no -a \
1454                                 $ac_cv_func_pthread_yield = no -a \
1455                                 "$ac_cv_func_thr_yield" = no ; then
1456                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1457                         fi
1458
1459                         dnl Check functions for compatibility
1460                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1461
1462                         dnl Check for pthread_detach with <pthread.h> inclusion
1463                         dnl as it's symbol may have been mangled.
1464                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1465                                 [ol_cv_func_pthread_detach], [
1466                                 dnl save the flags
1467                                 AC_TRY_LINK([
1468 #include <pthread.h>
1469 #ifndef NULL
1470 #define NULL (void*)0
1471 #endif
1472 ],
1473                                         [pthread_detach(NULL);],
1474                                         [ol_cv_func_pthread_detach=yes],
1475                                         [ol_cv_func_pthread_detach=no])
1476                         ])
1477
1478                         if test $ol_cv_func_pthread_detach = no ; then
1479                                 AC_MSG_ERROR([could not locate pthread_detach()])
1480                         fi
1481
1482                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1483                                 [define if you have pthread_detach function])
1484
1485                         dnl Check for setconcurreny functions
1486                         AC_CHECK_FUNCS( \
1487                                 pthread_setconcurrency \
1488                                 pthread_getconcurrency \
1489                                 thr_setconcurrency \
1490                                 thr_getconcurrency \
1491                         )
1492
1493                         OL_SYS_LINUX_THREADS
1494                         OL_LINUX_THREADS
1495
1496                         if test $ol_cv_linux_threads = error; then
1497                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1498                         fi
1499
1500                         AC_CACHE_CHECK([if pthread_create() works],
1501                                 ol_cv_pthread_create_works,[
1502                         AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1503                                 [ol_cv_pthread_create_works=yes],
1504                                 [ol_cv_pthread_create_works=no],
1505                                 [dnl assume yes
1506                                 ol_cv_pthread_create_works=yes])])
1507
1508                         if test $ol_cv_pthread_create_works = no ; then
1509                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1510                         fi
1511
1512                         dnl Check if select causes an yield
1513                         if test $ol_with_yielding_select = auto ; then
1514                                 AC_CACHE_CHECK([if select yields when using pthreads],
1515                                         ol_cv_pthread_select_yields,[
1516                                 AC_TRY_RUN([
1517 #include <sys/types.h>
1518 #include <sys/time.h>
1519 #include <unistd.h>
1520 #include <pthread.h>
1521 #ifndef NULL
1522 #define NULL (void*) 0
1523 #endif
1524
1525 static int fildes[2];
1526
1527 static void *task(p)
1528         void *p;
1529 {
1530         int i;
1531         struct timeval tv;
1532
1533         fd_set rfds;
1534
1535         tv.tv_sec=10;
1536         tv.tv_usec=0;
1537
1538         FD_ZERO(&rfds);
1539         FD_SET(fildes[0], &rfds);
1540
1541         /* we're not interested in any fds */
1542         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1543
1544         if(i < 0) {
1545                 perror("select");
1546                 exit(10);
1547         }
1548
1549         exit(0); /* if we exit here, the select blocked the whole process */
1550 }
1551
1552 int main(argc, argv)
1553         int argc;
1554         char **argv;
1555 {
1556         pthread_t t;
1557
1558         /* create a pipe to select */
1559         if(pipe(&fildes[0])) {
1560                 perror("select");
1561                 exit(1);
1562         }
1563
1564 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1565         (void) pthread_setconcurrency(2);
1566 #else
1567 #ifdef HAVE_THR_SETCONCURRENCY
1568         /* Set Solaris LWP concurrency to 2 */
1569         thr_setconcurrency(2);
1570 #endif
1571 #endif
1572
1573 #if HAVE_PTHREADS < 6
1574         pthread_create(&t, pthread_attr_default, task, NULL);
1575 #else
1576         pthread_create(&t, NULL, task, NULL);
1577 #endif
1578
1579         /* make sure task runs first */
1580 #if HAVE_THR_YIELD
1581         thr_yield();
1582 #elif defined( HAVE_SCHED_YIELD )
1583         sched_yield();
1584 #elif defined( HAVE_PTHREAD_YIELD )
1585         pthread_yield();
1586 #endif
1587
1588         exit(2);
1589 }],
1590                                 [ol_cv_pthread_select_yields=no],
1591                                 [ol_cv_pthread_select_yields=yes],
1592                                 [ol_cv_pthread_select_yields=cross])])
1593
1594                                 if test $ol_cv_pthread_select_yields = cross ; then
1595                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1596                                 fi
1597
1598                                 if test $ol_cv_pthread_select_yields = yes ; then
1599                                         ol_with_yielding_select=yes
1600                                 fi
1601                         fi
1602
1603                         dnl restore flags
1604                         CPPFLAGS="$save_CPPFLAGS"
1605                         LIBS="$save_LIBS"
1606                 else
1607                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1608                 fi
1609         fi
1610
1611         if test $ol_with_threads = posix ; then
1612                 AC_MSG_ERROR([could not locate POSIX Threads])
1613         fi
1614 fi
1615
1616 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1617         -o $ol_with_threads = mach ; then
1618
1619         dnl check for Mach CThreads
1620         AC_CHECK_HEADERS(mach/cthreads.h cthreads.h)
1621         if test $ac_cv_header_mach_cthreads_h = yes ; then
1622                 ol_with_threads=found
1623
1624                 dnl check for cthreads support in current $LIBS
1625                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1626
1627                 if test $ol_link_threads = no ; then
1628                         dnl try -all_load
1629                         dnl this test needs work
1630                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1631                                 [ol_cv_cthread_all_load], [
1632                                 dnl save the flags
1633                                 save_LIBS="$LIBS"
1634                                 LIBS="-all_load $LIBS"
1635                                 AC_TRY_LINK([#include <mach/cthreads.h>],[
1636                                         cthread_fork((void *)0, (void *)0);
1637                                         ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no)
1638                                 dnl restore the LIBS
1639                                 LIBS="$save_LIBS"
1640                         ])
1641
1642                         if test $ol_cv_cthread_all_load = yes ; then
1643                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1644                                 ol_link_threads=mach
1645                                 ol_with_threads=found
1646                         fi
1647                 fi
1648
1649         elif test $ac_cv_header_cthreads_h = yes ; then
1650                 dnl Hurd variant of Mach Cthreads
1651                 dnl uses <cthreads.h> and -lthreads
1652
1653                 ol_with_threads=found
1654  
1655                 dnl save the flags
1656                 save_LIBS="$LIBS"
1657                 LIBS="$LIBS -lthreads"
1658                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1659                 LIBS="$save_LIBS"
1660
1661                 if test $ol_link_threads = yes ; then
1662                         LTHREAD_LIBS="-lthreads"
1663                         ol_link_threads=mach
1664                         ol_with_threads=found
1665                 else
1666                         AC_MSG_ERROR([could not link with Mach CThreads])
1667                 fi
1668
1669         elif test $ol_with_threads = mach ; then
1670                 AC_MSG_ERROR([could not locate Mach CThreads])
1671         fi
1672
1673         if test $ol_link_threads = mach ; then
1674                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1675                         [define if you have Mach Cthreads])
1676         elif test $ol_with_threads = found ; then
1677                 AC_MSG_ERROR([could not link with Mach CThreads])
1678         fi
1679 fi
1680
1681 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1682         -o $ol_with_threads = pth ; then
1683
1684         AC_CHECK_HEADERS(pth.h)
1685
1686         if test $ac_cv_header_pth_h = yes ; then
1687                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1688
1689                 if test $have_pth = yes ; then
1690                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1691                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1692                         ol_link_threads=pth
1693                         ol_with_threads=found
1694
1695                         if test $ol_with_yielding_select = auto ; then
1696                                 ol_with_yielding_select=yes
1697                         fi
1698                 fi
1699         fi
1700 fi
1701
1702 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1703         -o $ol_with_threads = lwp ; then
1704
1705         dnl check for SunOS5 LWP
1706         AC_CHECK_HEADERS(thread.h synch.h)
1707         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
1708                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1709
1710                 if test $have_thr = yes ; then
1711                         AC_DEFINE(HAVE_THR,1,
1712                                 [if you have Solaris LWP (thr) package])
1713                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1714                         ol_link_threads=thr
1715
1716                         if test $ol_with_yielding_select = auto ; then
1717                                 ol_with_yielding_select=yes
1718                         fi
1719
1720                         dnl Check for setconcurreny functions
1721                         AC_CHECK_FUNCS( \
1722                                 thr_setconcurrency \
1723                                 thr_getconcurrency \
1724                         )
1725                 fi
1726         fi
1727
1728         dnl check for SunOS4 LWP
1729         AC_CHECK_HEADERS(lwp/lwp.h)
1730         if test $ac_cv_header_lwp_lwp_h = yes ; then
1731                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1732
1733                 if test $have_lwp = yes ; then
1734                         AC_DEFINE(HAVE_LWP,1,
1735                                 [if you have SunOS LWP package])
1736                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1737                         ol_link_threads=lwp
1738
1739                         if test $ol_with_yielding_select = auto ; then
1740                                 ol_with_yielding_select=no
1741                         fi
1742                 fi
1743         fi
1744 fi
1745
1746 if test $ol_with_yielding_select = yes ; then
1747         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1748                 [define if select implicitly yields])
1749 fi
1750
1751 if test $ol_with_threads = manual ; then
1752         dnl User thinks he can manually configure threads.
1753         ol_link_threads=yes
1754
1755         AC_MSG_WARN([thread defines and link options must be set manually])
1756
1757         AC_CHECK_HEADERS(pthread.h sched.h)
1758         AC_CHECK_FUNCS(sched_yield pthread_yield)
1759         OL_HEADER_LINUX_THREADS
1760
1761         AC_CHECK_HEADERS(mach/cthreads.h)
1762         AC_CHECK_HEADERS(lwp/lwp.h)
1763         AC_CHECK_HEADERS(thread.h synch.h)
1764 fi
1765
1766 if test $ol_link_threads != no -a $ol_link_threads != nt ; then  
1767         dnl needed to get reentrant/threadsafe versions
1768         dnl
1769         AC_DEFINE(REENTRANT,1)
1770         AC_DEFINE(_REENTRANT,1)
1771         AC_DEFINE(THREAD_SAFE,1)
1772         AC_DEFINE(_THREAD_SAFE,1)
1773         AC_DEFINE(THREADSAFE,1)
1774         AC_DEFINE(_THREADSAFE,1)
1775         AC_DEFINE(_SGI_MP_SOURCE,1)
1776
1777         dnl The errno declaration may dependent upon _REENTRANT.
1778         dnl If it does, we must link with thread support.
1779         AC_CACHE_CHECK([for thread specific errno],
1780                 [ol_cv_errno_thread_specific], [
1781                 AC_TRY_LINK([#include <errno.h>], [errno = 0;],
1782                         [ol_cv_errno_thread_specific=yes],
1783                         [ol_cv_errno_thread_specific=no])
1784         ])
1785
1786         dnl The h_errno declaration may dependent upon _REENTRANT.
1787         dnl If it does, we must link with thread support.
1788         AC_CACHE_CHECK([for thread specific h_errno],
1789                 [ol_cv_h_errno_thread_specific], [
1790                 AC_TRY_LINK([#include <netdb.h>], [h_errno = 0;],
1791                         [ol_cv_h_errno_thread_specific=yes],
1792                         [ol_cv_h_errno_thread_specific=no])
1793         ])
1794
1795         if test $ol_cv_errno_thread_specific != yes \
1796                 -o $ol_cv_h_errno_thread_specific != yes ; then
1797                 LIBS="$LTHREAD_LIBS $LIBS"
1798                 LTHREAD_LIBS=""
1799         fi
1800
1801 dnl When in thread environment, use 
1802 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
1803 dnl                     func_r(...);
1804 dnl             #else
1805 dnl             #       if defined( HAVE_THREADS ) 
1806 dnl                             /* lock */
1807 dnl             #       endif
1808 dnl                             func(...);
1809 dnl             #       if defined( HAVE_THREADS ) 
1810 dnl                             /* unlock */
1811 dnl             #       endif
1812 dnl             #endif
1813 dnl
1814 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1815 dnl             _POSIX_REENTRANT_FUNCTIONS
1816 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1817 dnl             _POSIX_THREADSAFE_FUNCTIONS
1818 dnl
1819 dnl             and is currently defined in <ldap_pvt_thread.h>
1820 dnl
1821 dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
1822 dnl 
1823 dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
1824 dnl LDAP_R_COMPILE is defined.  ie:
1825 dnl             #ifdef LDAP_R_COMPILE
1826 dnl             #       include <ldap_pvt_thread.h>
1827 dnl             #endif
1828 dnl
1829 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1830 dnl specifically for compiling the threadsafe version of
1831 dnl     the ldap library (-lldap_r).
1832 dnl             
1833 dnl     dnl check for reentrant/threadsafe functions
1834 dnl     dnl
1835 dnl     dnl note: these should only be used when linking
1836 dnl     dnl             with $LTHREAD_LIBS
1837 dnl     dnl
1838 dnl     save_CPPFLAGS="$CPPFLAGS"
1839 dnl     save_LIBS="$LIBS"
1840 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1841 dnl     AC_CHECK_FUNCS( \
1842 dnl             gmtime_r \
1843 dnl             gethostbyaddr_r gethostbyname_r \
1844 dnl             feof_unlocked unlocked_feof \
1845 dnl             putc_unlocked unlocked_putc \
1846 dnl             flockfile ftrylockfile \
1847 dnl     )
1848 dnl     CPPFLAGS="$save_CPPFLAGS"
1849 dnl     LIBS="$save_LIBS"
1850 fi  
1851
1852 if test $ol_link_threads = no ; then
1853         if test $ol_with_threads = yes ; then
1854                 AC_MSG_ERROR([no suitable thread support])
1855         fi
1856
1857         if test $ol_with_threads = auto ; then
1858                 AC_MSG_WARN([no suitable thread support, disabling threads])
1859                 ol_with_threads=no
1860         fi
1861
1862         AC_DEFINE(NO_THREADS,1,
1863                 [define if you have (or want) no threads])
1864         LTHREAD_LIBS=""
1865 fi
1866
1867 if test $ol_link_threads != no ; then
1868         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
1869 fi
1870
1871 dnl ----------------------------------------------------------------
1872 dnl Tests for reentrant functions necessary to build -lldap_r
1873 AC_CHECK_FUNCS(         \
1874         ctime_r                 \
1875         gethostbyname_r gethostbyaddr_r \
1876 )
1877
1878 if test "$ac_cv_func_ctime_r" = no ; then
1879         ol_cv_func_ctime_r_nargs=0
1880 else
1881         OL_FUNC_CTIME_R_NARGS
1882 dnl     OL_FUNC_CTIME_R_TYPE
1883 fi
1884
1885 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1886         OL_FUNC_GETHOSTBYNAME_R_NARGS
1887 else
1888         ol_cv_func_gethostbyname_r_nargs=0
1889 fi
1890  
1891 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1892         OL_FUNC_GETHOSTBYADDR_R_NARGS
1893 else
1894         ol_cv_func_gethostbyaddr_r_nargs=0
1895 fi
1896
1897 dnl ----------------------------------------------------------------
1898 ol_link_ldbm=no 
1899
1900 if test $ol_with_ldbm_api = auto \
1901         -o $ol_with_ldbm_api = berkeley \
1902         -o $ol_with_ldbm_api = bcompat ; then
1903
1904         if test $ol_with_ldbm_api = bcompat; then \
1905                 OL_BERKELEY_COMPAT_DB
1906         else
1907                 OL_BERKELEY_DB
1908         fi
1909
1910         if test $ol_cv_berkeley_db != no ; then
1911                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1912                         [define this if Berkeley DB is available])
1913
1914                 ol_link_ldbm=berkeley
1915                 ol_with_ldbm_api=berkeley
1916
1917                 if test $ol_with_ldbm_type = hash ; then
1918                         AC_DEFINE(LDBM_USE_DBHASH,1,
1919                                 [define this to use DBHASH w/ LDBM backend])
1920                 else
1921                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1922                                 [define this to use DBBTREE w/ LDBM backend])
1923                 fi
1924
1925                 dnl $ol_cv_lib_db should be yes or -ldb
1926                 dnl (it could be no, but that would be an error
1927                 if test $ol_cv_lib_db != yes ; then
1928                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1929                 fi
1930         fi
1931 fi
1932
1933 if test $ol_enable_bdb != no -o $ol_enable_hdb != no; then
1934         if test $ol_link_ldbm != berkeley ; then
1935                 AC_MSG_ERROR(BDB/HDB: BerkeleyDB not available)
1936         else
1937                 OL_BDB_COMPAT
1938
1939                 if test $ol_cv_bdb_compat != yes ; then
1940                         AC_MSG_ERROR([BDB/HDB: BerkeleyDB version incompatible])
1941                 fi
1942         fi
1943 fi
1944
1945 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1946         AC_MSG_WARN([Could not find LDBM with BTREE support])
1947         ol_with_ldbm_api=none
1948 fi
1949
1950 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1951         OL_MDBM
1952
1953         if test $ol_cv_mdbm = yes ; then
1954                 ol_link_ldbm=mdbm
1955                 ol_with_ldbm_api=mdbm
1956                 if test $ol_cv_lib_mdbm != yes ; then
1957                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1958                 fi
1959         fi
1960 fi
1961
1962 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
1963         OL_GDBM
1964
1965         if test $ol_cv_gdbm = yes ; then
1966                 ol_link_ldbm=gdbm
1967                 ol_with_ldbm_api=gdbm
1968
1969                 if test $ol_cv_lib_gdbm != yes ; then
1970                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
1971                 fi
1972         fi
1973 fi
1974
1975 if test $ol_with_ldbm_api = ndbm ; then
1976         OL_NDBM
1977
1978         if test $ol_cv_ndbm = yes ; then
1979                 ol_link_ldbm=ndbm
1980                 ol_with_ldbm_api=ndbm
1981
1982                 if test $ol_cv_lib_ndbm != yes ; then
1983                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
1984                 fi
1985         fi
1986 fi
1987
1988 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
1989         AC_MSG_ERROR([could not find suitable LDBM backend])
1990 fi
1991
1992 if test $ol_enable_bdb = yes -o \
1993         $ol_enable_hdb = yes -o \
1994         $ol_enable_ldbm = yes ; then
1995         SLAPD_LIBS="$SLAPD_LIBS \$(LDBM_LIBS)"
1996 fi
1997
1998 dnl ----------------------------------------------------------------
1999
2000 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
2001         BUILD_LIBS_DYNAMIC=shared
2002         AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
2003         LTSTATIC=""
2004 else
2005         BUILD_LIBS_DYNAMIC=static
2006         LTSTATIC="-static"
2007 fi
2008 AC_SUBST(LTSTATIC)dnl
2009
2010 dnl ----------------------------------------------------------------
2011 if test $ol_enable_wrappers != no ; then
2012         AC_CHECK_HEADERS(tcpd.h,[
2013                 AC_MSG_CHECKING([for TCP wrappers library])
2014                 save_LIBS="$LIBS"
2015                 LIBS="$LIBS -lwrap"
2016                 AC_TRY_LINK([
2017 #include <tcpd.h>
2018 int allow_severity = 0;
2019 int deny_severity  = 0;
2020
2021 struct request_info *req;
2022                 ],[
2023 hosts_access(req)
2024                 ],[AC_MSG_RESULT([-lwrap])
2025                 have_wrappers=yes
2026                 LIBS="$save_LIBS"],[
2027                 dnl try with -lnsl
2028                 LIBS="$LIBS -lnsl"
2029                 AC_TRY_LINK([
2030 #include <tcpd.h>
2031 int allow_severity = 0;
2032 int deny_severity  = 0;
2033
2034 struct request_info *req;
2035                 ],[
2036 hosts_access(req)
2037                 ],[AC_MSG_RESULT([-lwrap -lnsl])
2038                 have_wrappers=yes
2039                 LIBS="$save_LIBS -lnsl"],[
2040                 AC_MSG_RESULT(no)
2041                 have_wrappers=no
2042                 LIBS=$save_LIBS])],[
2043                 have_wrappers=no])],[have_wrappers=no])
2044
2045         if test $have_wrappers = yes ; then
2046                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
2047                 WRAP_LIBS="-lwrap"
2048         elif test $ol_enable_wrappers = yes ; then
2049                 AC_MSG_ERROR([could not find TCP wrappers, select apppropriate options or disable])
2050         else
2051                 AC_MSG_WARN([could not find TCP wrappers, support disabled])
2052                 WRAP_LIBS=""
2053         fi
2054 fi
2055
2056 dnl ----------------------------------------------------------------
2057 if test $ol_enable_syslog != no ; then
2058         AC_CHECK_FUNC(openlog)
2059         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
2060                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
2061         fi
2062         ol_enable_syslog=$ac_cv_func_openlog
2063 fi
2064
2065 dnl ----------------------------------------------------------------
2066 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
2067 dnl if test $ol_enable_dmalloc != no ; then
2068 dnl     AC_CHECK_HEADERS(dmalloc.h)
2069 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
2070 dnl fi
2071
2072 dnl ----------------------------------------------------------------
2073 dnl SQL
2074 ol_link_sql=no
2075 if test $ol_enable_sql != no ; then
2076         AC_CHECK_HEADERS(sql.h sqlext.h,[],[
2077                 AC_MSG_ERROR([could not locate SQL headers])
2078         ])
2079
2080         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
2081         if test $have_iodbc = yes ; then
2082                 ol_link_sql="-liodbc"
2083         else
2084                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
2085                 if test $have_odbc = yes ; then
2086                         ol_link_sql="-lodbc"
2087                 fi
2088         fi
2089
2090         if test $ol_link_sql != no ; then
2091                 SLAPD_SQL_LIBS="$ol_link_sql"
2092
2093         elif test $ol_enable_sql != auto ; then
2094                 AC_MSG_ERROR([could not locate suitable ODBC library])
2095         fi
2096 fi
2097
2098 dnl ----------------------------------------------------------------
2099 dnl
2100 dnl Check for Cyrus SASL
2101 dnl
2102 WITH_SASL=no
2103 ol_link_sasl=no
2104 ol_link_spasswd=no
2105 if test $ol_with_cyrus_sasl != no ; then
2106         AC_CHECK_HEADERS(sasl/sasl.h sasl.h)
2107
2108         if test $ac_cv_header_sasl_sasl_h = yes -o $ac_cv_header_sasl_h = yes; then
2109                 AC_CHECK_LIB(sasl2, sasl_client_init,
2110                         [ol_link_sasl="-lsasl2"],
2111                         [AC_CHECK_LIB(sasl, sasl_client_init,
2112                                 [ol_link_sasl="-lsasl"])])
2113         fi
2114
2115         if test $ol_link_sasl = no ; then
2116                 if test $ol_with_cyrus_sasl != auto ; then
2117                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2118                 else
2119                         AC_MSG_WARN([Could not locate Cyrus SASL])
2120                         AC_MSG_WARN([SASL authentication not supported!])
2121                         if test $ol_link_tls = no ; then
2122                                 AC_MSG_WARN([Strong authentication not supported!])
2123                         fi
2124                 fi
2125         else
2126                 OL_SASL_COMPAT
2127                 if test $ol_cv_sasl_compat = no ; then
2128                         ol_link_sasl=no
2129                         AC_MSG_ERROR([Cyrus SASL library located but is incompatible])
2130                 fi
2131
2132                 AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2133                 SASL_LIBS="$ol_link_sasl"
2134                 if test $ol_enable_spasswd != no ; then
2135                         ol_link_spasswd=yes
2136                 fi
2137
2138                 ac_save_LIBS="$LIBS"
2139                 LIBS="$LIBS $ol_link_sasl"
2140                 AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
2141                         [define if your SASL library has sasl_version()])])
2142                 LIBS="$ac_save_LIBS"
2143
2144                 WITH_SASL=yes
2145         fi
2146
2147 else
2148         AC_MSG_WARN([SASL authentication not supported!])
2149         if test $ol_link_tls = no ; then
2150                 AC_MSG_WARN([Strong authentication not supported!])
2151         fi
2152 fi
2153
2154 dnl ----------------------------------------------------------------
2155 dnl Check for entropy sources
2156 if test $cross_compiling != yes -a "$ac_cv_mingw32" != yes ; then
2157         dev=no
2158         if test -r /dev/urandom ; then
2159                 dev="/dev/urandom";
2160         elif test -r /idev/urandom ; then
2161                 dev="/idev/urandom";
2162         elif test -r /dev/srandom ; then
2163                 dev="/dev/srandom";
2164         elif test -r /dev/random ; then
2165                 dev="/dev/random";
2166         elif test -r /idev/random ; then
2167                 dev="/idev/random";
2168         fi
2169
2170         if test $dev != no ; then
2171                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2172         fi
2173 fi
2174
2175 dnl ----------------------------------------------------------------
2176 dnl
2177 dnl Check for fetch URL support
2178 dnl             should be extended to support other fetch URL APIs
2179 dnl
2180 ol_link_fetch=no
2181 if test $ol_with_fetch != no ; then
2182         OL_LIB_FETCH
2183
2184         if test $ol_cv_lib_fetch != no ; then
2185                 LUTIL_LIBS="$LUTIL_LIBS $ol_link_fetch"
2186                 ol_link_fetch=freebsd
2187
2188         elif test $ol_with_fetch != auto ; then
2189                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2190         fi 
2191 fi
2192
2193 dnl ----------------------------------------------------------------
2194 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2195 if test $ol_enable_crypt != no ; then
2196         save_LIBS="$LIBS"
2197         LIBS="$TLS_LIBS $LIBS"
2198
2199         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2200                 LIBS="$save_LIBS"
2201                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2202                         have_crypt=yes], [have_crypt=no])])
2203
2204         LIBS="$save_LIBS"
2205
2206         if test $have_crypt = yes ; then
2207                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2208         else
2209                 AC_MSG_WARN([could not find crypt])
2210                 if test $ol_enable_crypt = yes ; then
2211                         AC_MSG_ERROR([could not find crypt, select appropriate options or disable])
2212                 fi
2213
2214                 AC_MSG_WARN([disabling crypt support])
2215                 ol_enable_crypt=no
2216         fi
2217 fi
2218
2219 dnl ----------------------------------------------------------------
2220 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2221 if test $ol_enable_proctitle != no ; then
2222         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2223                 AC_CHECK_LIB(util, setproctitle,
2224                         [have_setproctitle=yes
2225                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2226                         [have_setproctitle=no
2227                         LIBOBJS="$LIBOBJS setproctitle.o"
2228                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2229
2230         if test $have_setproctitle = yes ; then
2231                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2232                         [define if setproctitle(3) is available])
2233         fi
2234 fi
2235
2236 dnl ----------------------------------------------------------------
2237 dnl Check for SLPv2 Compliant API Library
2238 if test $ol_enable_slp != no ; then
2239         AC_CHECK_HEADERS( slp.h )
2240
2241         if test $ac_cv_header_slp_h = yes ; then
2242                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2243                 if test $have_slp = yes ; then
2244                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2245                         SLAPD_SLP_LIBS=-lslp
2246                 fi
2247
2248         elif test $ol_enable_slp = yes ; then
2249                 AC_MSG_ERROR([SLP not found])
2250         fi
2251 fi
2252
2253 dnl ----------------------------------------------------------------
2254 dnl Check for multiple precision support
2255 if test "$ol_with_multiple_precision" != "no" ; then
2256         ol_have_bignum=no
2257         ol_have_gmp=no
2258
2259         AC_CHECK_HEADERS(openssl/bn.h bn.h)
2260         AC_CHECK_HEADERS(openssl/crypto.h crypto.h)
2261         AC_CHECK_HEADERS( gmp.h )
2262
2263         if test "$ol_with_tls" = "found" ; then
2264                 ol_have_bn_h=no
2265                 ol_have_crypto_h=no
2266
2267                 if test "$ac_cv_header_openssl_bn_h" = "yes" \
2268                                 -o "$ac_cv_header_bn_h" = "yes" ; then
2269                         ol_have_bn_h=yes
2270                 fi
2271
2272                 if test "$ac_cv_header_openssl_crypto_h" = "yes" \
2273                                 -o "$ac_cv_header_crypto_h" = "yes" ; then
2274                         ol_have_crypto_h=yes
2275                 fi
2276
2277                 if test "$ol_have_bn_h" = "yes" \
2278                                 -a "$ol_have_crypto_h" = "yes" ; then
2279                         ol_have_bignum=yes
2280                 fi
2281         fi
2282
2283         if test $ac_cv_header_gmp_h = yes ; then
2284                 AC_CHECK_LIB(gmp, __gmpz_add_ui, [have_gmp=yes], [have_gmp=no])
2285                 if test $have_gmp = yes ; then
2286                         ol_have_gmp=yes
2287                 fi
2288         fi
2289
2290         AC_MSG_CHECKING([for multiple precision support])
2291
2292         ol_mp_support="none"
2293         case "$ol_with_multiple_precision" in
2294         auto)
2295                 dnl preferred sequence:
2296                 dnl - OpenSSL's BIGNUM (if libssl is already linked)
2297                 dnl - GNU's MP
2298                 dnl - unsigned long
2299                 if test "$ol_have_bignum" = "yes" ; then
2300                         ol_mp_support="bignum"
2301                 else
2302                         if test "$ol_have_gmp" = "yes" ; then
2303                                 ol_mp_support="gmp"
2304                         fi
2305                 fi
2306                 ;;
2307         bignum)
2308                 if test "$ol_have_bignum" != "yes" ; then
2309                         AC_MSG_ERROR([OpenSSL's BIGNUM not available])
2310                 fi
2311                 ol_mp_support="bignum"
2312                 ;;
2313         gmp)
2314                 if test "$ol_have_gmp" != "yes" ; then
2315                         AC_MSG_ERROR([GMP not available])
2316                 fi
2317                 ol_mp_support="gmp"
2318                 ;;
2319         yes)
2320                 if test "$ol_have_bignum" = "yes" ; then
2321                         ol_mp_support="bignum"
2322                 elif test "$ol_have_gmp" = "yes" ; then
2323                         ol_mp_support="gmp"
2324                 else
2325                         AC_MSG_ERROR([not available])
2326                 fi
2327                 ;;
2328         esac
2329
2330         case "$ol_mp_support" in
2331         bignum)
2332                 AC_DEFINE(HAVE_BIGNUM, 1,
2333                         [define if you have SSLeay or OpenSSL's BIGNUM])
2334                 ;;
2335         gmp)
2336                 AC_DEFINE(HAVE_GMP, 1, [define if you have -lgmp])
2337                 SLAPD_GMP_LIBS=-lgmp
2338                 ;;
2339         none)
2340                 ;;
2341         esac
2342
2343         AC_MSG_RESULT($ol_mp_support)
2344 fi
2345
2346 dnl ----------------------------------------------------------------
2347 dnl Checks for typedefs, structures, and compiler characteristics.
2348
2349 dnl Checks for long long
2350 AC_CACHE_CHECK([long long], ol_cv_type_long_long, [
2351         AC_TRY_COMPILE([], [long long x;],
2352                 [ol_cv_type_long_long=yes],
2353                 [ol_cv_type_long_long=no])])
2354 if test $ol_cv_type_long_long = yes; then
2355         AC_DEFINE(HAVE_LONG_LONG, 1, [define if you have 'long long'])
2356 fi
2357
2358 AC_TYPE_MODE_T
2359 AC_TYPE_OFF_T
2360 AC_TYPE_PID_T
2361 AM_TYPE_PTRDIFF_T
2362 AC_TYPE_SIGNAL
2363 AC_TYPE_SIZE_T
2364
2365 AC_CHECK_TYPE(ssize_t, [signed int])
2366 AC_CHECK_TYPE(caddr_t,  [char *])
2367
2368 OL_TYPE_SOCKLEN_T
2369 AC_STRUCT_ST_BLKSIZE
2370 AC_HEADER_TIME
2371 AC_STRUCT_TM
2372 AC_TYPE_UID_T
2373 OL_TYPE_SIG_ATOMIC_T
2374
2375 dnl AC_TYPE_GETGROUPS
2376
2377 OL_STRUCT_PASSWD_PW_GECOS
2378 OL_STRUCT_PASSWD_PW_PASSWD
2379
2380 OL_C_UPPER_LOWER
2381 AC_C_CONST
2382 OL_C_VOLATILE
2383
2384 if test $cross_compiling = yes ; then
2385         AC_MSG_WARN([Crossing compiling... all bets are off!])
2386         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2387 else
2388         AC_C_BIGENDIAN
2389 fi
2390
2391 AC_COMPILE_CHECK_SIZEOF(short) 
2392 AC_COMPILE_CHECK_SIZEOF(int) 
2393 AC_COMPILE_CHECK_SIZEOF(long)
2394 AC_COMPILE_CHECK_SIZEOF(wchar_t)
2395
2396 if test "$ac_cv_sizeof_int" -lt 4 ; then
2397         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2398
2399         AC_DEFINE(LBER_INT_T,long)
2400 else
2401         AC_DEFINE(LBER_INT_T,int)
2402 fi
2403
2404 AC_DEFINE(LBER_LEN_T,long)
2405 AC_DEFINE(LBER_SOCKET_T,int)
2406 AC_DEFINE(LBER_TAG_T,long)
2407
2408 dnl ----------------------------------------------------------------
2409 dnl Checks for library functions.
2410 AC_FUNC_MEMCMP
2411 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2412 AC_FUNC_STRFTIME
2413 dnl AM_FUNC_STRTOD
2414
2415 OL_FUNC_INET_ATON
2416
2417 dnl Check for NT specific routines
2418 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2419
2420 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2421         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2422 ])
2423
2424 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2425         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2426 ])
2427
2428 AC_FUNC_VPRINTF
2429
2430 if test $ac_cv_func_vprintf = yes ; then
2431         dnl check for vsnprintf
2432         AC_CHECK_FUNCS(snprintf vsnprintf)
2433 fi
2434
2435 AC_CHECK_FUNCS(         \
2436         bcopy                   \
2437         closesocket             \
2438         chroot                  \
2439         endgrent                \
2440         endpwent                \
2441         fcntl                   \
2442         flock                   \
2443         fstat                   \
2444         getdtablesize   \
2445         getgrgid                \
2446         gethostname             \
2447         getpass                 \
2448         getpassphrase   \
2449         getpwuid                \
2450         getpwnam                \
2451         getspnam                \
2452         gettimeofday    \
2453         initgroups              \
2454         lockf                   \
2455         memcpy                  \
2456         memmove                 \
2457         mkstemp                 \
2458         mktemp                  \
2459         pipe                    \
2460         read                    \
2461         recv                    \
2462         recvfrom                \
2463         setpwfile               \
2464         setgid                  \
2465         setegid                 \
2466         setsid                  \
2467         setuid                  \
2468         seteuid                 \
2469         sigaction               \
2470         signal                  \
2471         sigset                  \
2472         strdup                  \
2473         strpbrk                 \
2474         strrchr                 \
2475         strsep                  \
2476         strstr                  \
2477         strtol                  \
2478         strtoul                 \
2479         strtoq                  \
2480         strtouq                 \
2481         strtoll                 \
2482         strspn                  \
2483         sysconf                 \
2484         usleep                  \
2485         waitpid                 \
2486         wait4                   \
2487         write                   \
2488         send                    \
2489         sendmsg                 \
2490         sendto                  \
2491 )
2492
2493 dnl We actually may need to replace more than this.
2494 AC_REPLACE_FUNCS(getopt getpeereid)
2495
2496 if test "$ac_cv_func_getopt" != yes; then
2497         LIBSRCS="$LIBSRCS getopt.c"
2498 fi
2499 if test "$ac_cv_func_getpeereid" != yes; then
2500         OL_MSGHDR_MSG_ACCRIGHTS
2501         LIBSRCS="$LIBSRCS getpeereid.c"
2502 fi
2503 if test "$ac_cv_func_snprintf" != yes -o "$ac_cv_func_vsnprintf" != yes; then
2504         if test "$ac_cv_func_snprintf" != yes; then
2505                 AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
2506         fi
2507         if test "$ac_cv_func_vsnprintf" != yes; then
2508                 AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
2509         fi
2510 fi
2511
2512 dnl ----------------------------------------------------------------
2513 dnl Sort out defines
2514
2515 if test "$ol_enable_slapi" != no ; then
2516         dnl This check is done also if --enable-modules is used;
2517         dnl it is duplicated here, 'cause it'd be cached anyway
2518         AC_CHECK_HEADERS(ltdl.h)
2519
2520         if test $ac_cv_header_ltdl_h != yes ; then
2521                 AC_MSG_ERROR([could not locate <ltdl.h>])
2522         fi
2523         AC_CHECK_LIB(ltdl, lt_dlinit, [
2524                 SLAPI_LIBS=-lltdl
2525                 LIBSLAPI=libslapi.a
2526                 LIBSLAPITOOLS=../libslapi.a
2527                 AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
2528         ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
2529
2530         AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
2531 fi
2532
2533 if test "$ol_enable_debug" != no ; then
2534         AC_DEFINE(LDAP_DEBUG,1,
2535                 [define this to add debugging code])
2536 fi
2537 if test "$ol_enable_syslog" = yes ; then
2538         AC_DEFINE(LDAP_SYSLOG,1,
2539                 [define this to add syslog code])
2540 fi
2541 if test "$ol_link_kbind" != no ; then
2542         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2543 fi
2544 if test "$ol_enable_proctitle" != no ; then
2545         AC_DEFINE(LDAP_PROCTITLE,1,
2546                 [define this for LDAP process title support])
2547 fi
2548 if test "$ol_enable_referrals" != no ; then
2549         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2550 fi
2551 if test "$ol_enable_local" != no; then
2552         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2553 fi
2554 if test "$ol_link_ipv6" != no; then
2555         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2556 fi
2557 if test "$ol_enable_cleartext" != no ; then
2558         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2559 fi
2560 if test "$ol_enable_crypt" != no ; then
2561         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2562 fi
2563 if test "$ol_link_spasswd" != no ; then
2564         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2565 fi
2566 if test "$ol_enable_multimaster" != no ; then
2567         AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2568 fi
2569 if test "$ol_enable_rlookups" != no ; then
2570         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2571 fi
2572 if test "$ol_enable_aci" != no ; then
2573         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2574 fi
2575
2576 if test "$ol_link_modules" != no ; then
2577         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2578         BUILD_SLAPD=yes
2579         SLAPD_MODULES_LDFLAGS="-dlopen self"
2580 fi
2581
2582 AC_DEFINE(SLAPD_MOD_STATIC,1,[statically linked module])
2583 AC_DEFINE(SLAPD_MOD_DYNAMIC,2,[dynamically linked module])
2584
2585 if test "$ol_enable_bdb" != no ; then
2586         BUILD_SLAPD=yes
2587         BUILD_BDB=$ol_enable_bdb
2588         if test "$ol_enable_bdb" = mod ; then
2589                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-bdb"
2590                 MFLAG=SLAPD_MOD_DYNAMIC
2591         else
2592                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-bdb"
2593                 MFLAG=SLAPD_MOD_STATIC
2594         fi
2595         AC_DEFINE_UNQUOTED(SLAPD_BDB,$MFLAG,[define to support BDB backend])
2596 fi
2597
2598 if test "$ol_enable_dnssrv" != no ; then
2599         BUILD_SLAPD=yes
2600         BUILD_DNSSRV=$ol_enable_dnssrv
2601         if test "$ol_enable_dnssrv" = mod ; then
2602                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-dnssrv"
2603                 MFLAG=SLAPD_MOD_DYNAMIC
2604         else
2605                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-dnssrv"
2606                 MFLAG=SLAPD_MOD_STATIC
2607         fi
2608         AC_DEFINE_UNQUOTED(SLAPD_DNSSRV,$MFLAG,[define to support DNS SRV backend])
2609 fi
2610
2611 if test "$ol_enable_hdb" != no ; then
2612         BUILD_SLAPD=yes
2613         BUILD_HDB=$ol_enable_hdb
2614         if test "$ol_enable_hdb" = mod ; then
2615                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
2616                 MFLAG=SLAPD_MOD_DYNAMIC
2617         else
2618                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
2619                 MFLAG=SLAPD_MOD_STATIC
2620         fi
2621         AC_DEFINE_UNQUOTED(SLAPD_HDB,$MFLAG,[define to support HDB backend])
2622 fi
2623
2624 if test "$ol_enable_ldap" != no ; then
2625         BUILD_SLAPD=yes
2626         BUILD_LDAP=$ol_enable_ldap
2627         if test "$ol_enable_ldap" = mod ; then
2628                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldap"
2629                 MFLAG=SLAPD_MOD_DYNAMIC
2630         else
2631                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldap"
2632                 MFLAG=SLAPD_MOD_STATIC
2633         fi
2634         AC_DEFINE_UNQUOTED(SLAPD_LDAP,$MFLAG,[define to support LDAP backend])
2635 fi
2636
2637 if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
2638         BUILD_SLAPD=yes
2639         BUILD_LDBM=$ol_enable_ldbm
2640         if test "$ol_enable_ldbm" = mod ; then
2641                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-ldbm"
2642                 MFLAG=SLAPD_MOD_DYNAMIC
2643         else
2644                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-ldbm"
2645                 MFLAG=SLAPD_MOD_STATIC
2646         fi
2647         AC_DEFINE_UNQUOTED(SLAPD_LDBM,$MFLAG,[define to support LDBM backend])
2648 fi
2649
2650 if test "$ol_enable_meta" != no ; then
2651         BUILD_SLAPD=yes
2652         BUILD_META=$ol_enable_meta
2653         BUILD_REWRITE=yes
2654         if test "$ol_enable_meta" = mod ; then
2655                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-meta"
2656                 MFLAG=SLAPD_MOD_DYNAMIC
2657         else
2658                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-meta"
2659                 MFLAG=SLAPD_MOD_STATIC
2660         fi
2661         AC_DEFINE_UNQUOTED(SLAPD_META,$MFLAG,[define to support LDAP Metadirectory backend])
2662 fi
2663
2664 if test "$ol_enable_monitor" != no ; then
2665         BUILD_SLAPD=yes
2666         BUILD_MONITOR=$ol_enable_monitor
2667         if test "$ol_enable_monitor" = mod ; then
2668                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-monitor"
2669                 MFLAG=SLAPD_MOD_DYNAMIC
2670         else
2671                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-monitor"
2672                 MFLAG=SLAPD_MOD_STATIC
2673         fi
2674         AC_DEFINE_UNQUOTED(SLAPD_MONITOR,$MFLAG,[define to support cn=Monitor backend])
2675 fi
2676
2677 if test "$ol_enable_null" != no ; then
2678         BUILD_SLAPD=yes
2679         BUILD_NULL=$ol_enable_null
2680         if test "$ol_enable_null" = mod ; then
2681                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-null"
2682                 MFLAG=SLAPD_MOD_DYNAMIC
2683         else
2684                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-null"
2685                 MFLAG=SLAPD_MOD_STATIC
2686         fi
2687         AC_DEFINE_UNQUOTED(SLAPD_NULL,$MFLAG,[define to support NULL backend])
2688 fi
2689
2690 if test "$ol_enable_passwd" != no ; then
2691         BUILD_SLAPD=yes
2692         BUILD_PASSWD=$ol_enable_passwd
2693         if test "$ol_enable_passwd" = mod ; then
2694                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-passwd"
2695                 MFLAG=SLAPD_MOD_DYNAMIC
2696         else
2697                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-passwd"
2698                 MFLAG=SLAPD_MOD_STATIC
2699         fi
2700         AC_DEFINE_UNQUOTED(SLAPD_PASSWD,$MFLAG,[define to support PASSWD backend])
2701 fi
2702
2703 if test "$ol_link_perl" != no ; then
2704         BUILD_SLAPD=yes
2705         BUILD_PERL=$ol_enable_perl
2706         if test "$ol_enable_perl" = mod ; then
2707                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-perl"
2708                 MFLAG=SLAPD_MOD_DYNAMIC
2709         else
2710                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-perl"
2711                 MFLAG=SLAPD_MOD_STATIC
2712         fi
2713         AC_DEFINE_UNQUOTED(SLAPD_PERL,$MFLAG,[define to support PERL backend])
2714 fi
2715
2716 if test "$ol_enable_relay" != no ; then
2717         BUILD_SLAPD=yes
2718         BUILD_RELAY=$ol_enable_relay
2719         if test "$ol_enable_relay" = mod ; then
2720                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-relay"
2721                 MFLAG=SLAPD_MOD_DYNAMIC
2722         else
2723                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-relay"
2724                 MFLAG=SLAPD_MOD_STATIC
2725         fi
2726         AC_DEFINE_UNQUOTED(SLAPD_RELAY,$MFLAG,[define to support relay backend])
2727 fi
2728
2729 if test "$ol_enable_shell" != no ; then
2730         if test "$ol_link_thread" != no ; then
2731                 AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
2732         fi
2733         BUILD_SLAPD=yes
2734         BUILD_SHELL=$ol_enable_shell
2735         if test "$ol_enable_shell" = mod ; then
2736                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-shell"
2737                 MFLAG=SLAPD_MOD_DYNAMIC
2738         else
2739                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-shell"
2740                 MFLAG=SLAPD_MOD_STATIC
2741         fi
2742         AC_DEFINE_UNQUOTED(SLAPD_SHELL,$MFLAG,[define to support SHELL backend])
2743 fi
2744
2745 if test "$ol_link_sql" != no ; then
2746         BUILD_SLAPD=yes
2747         BUILD_SQL=$ol_enable_sql
2748         if test "$ol_enable_sql" = mod; then
2749                 SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-sql"
2750                 MFLAG=SLAPD_MOD_DYNAMIC
2751         else
2752                 SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-sql"
2753                 MFLAG=SLAPD_MOD_STATIC
2754         fi
2755         AC_DEFINE_UNQUOTED(SLAPD_SQL,$MFLAG,[define to support SQL backend])
2756 fi
2757
2758 if test "$ol_enable_chain" != no ; then
2759         BUILD_CHAIN=$ol_enable_chain
2760         if test "$ol_enable_chain" = mod ; then
2761                 MFLAG=SLAPD_MOD_DYNAMIC
2762                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS chain.la"
2763         else
2764                 MFLAG=SLAPD_MOD_STATIC
2765         fi
2766         AC_DEFINE_UNQUOTED(SLAPD_OVER_CHAIN,$MFLAG,[define for Dynamic Group overlay])
2767 fi
2768
2769 if test "$ol_enable_denyop" != no ; then
2770         BUILD_DENYOP=$ol_enable_denyop
2771         if test "$ol_enable_denyop" = mod ; then
2772                 MFLAG=SLAPD_MOD_DYNAMIC
2773                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS denyop.la"
2774         else
2775                 MFLAG=SLAPD_MOD_STATIC
2776         fi
2777         AC_DEFINE_UNQUOTED(SLAPD_OVER_DENYOP,$MFLAG,[define for Dynamic Group overlay])
2778 fi
2779
2780 if test "$ol_enable_dyngroup" != no ; then
2781         BUILD_DYNGROUP=$ol_enable_dyngroup
2782         if test "$ol_enable_dyngroup" = mod ; then
2783                 MFLAG=SLAPD_MOD_DYNAMIC
2784                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS dyngroup.la"
2785         else
2786                 MFLAG=SLAPD_MOD_STATIC
2787         fi
2788         AC_DEFINE_UNQUOTED(SLAPD_OVER_DYNGROUP,$MFLAG,[define for Dynamic Group overlay])
2789 fi
2790
2791 if test "$ol_enable_lastmod" != no ; then
2792         BUILD_LASTMOD=$ol_enable_lastmod
2793         if test "$ol_enable_lastmod" = mod ; then
2794                 MFLAG=SLAPD_MOD_DYNAMIC
2795                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS lastmod.la"
2796         else
2797                 MFLAG=SLAPD_MOD_STATIC
2798         fi
2799         AC_DEFINE_UNQUOTED(SLAPD_OVER_LASTMOD,$MFLAG,[define for Last Modification overlay])
2800 fi
2801
2802 if test "$ol_enable_ppolicy" != no ; then
2803         BUILD_PPOLICY=$ol_enable_ppolicy
2804         if test "$ol_enable_ppolicy" = mod ; then
2805                 MFLAG=SLAPD_MOD_DYNAMIC
2806                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS ppolicy.la"
2807         else
2808                 MFLAG=SLAPD_MOD_STATIC
2809         fi
2810         AC_DEFINE_UNQUOTED(SLAPD_OVER_PPOLICY,$MFLAG,[define for Password Policy overlay])
2811 fi
2812
2813 if test "$ol_enable_proxycache" != no ; then
2814         BUILD_PROXYCACHE=$ol_enable_proxycache
2815         if test "$ol_enable_proxycache" = mod ; then
2816                 MFLAG=SLAPD_MOD_DYNAMIC
2817                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS pcache.la"
2818         else
2819                 MFLAG=SLAPD_MOD_STATIC
2820         fi
2821         AC_DEFINE_UNQUOTED(SLAPD_OVER_PROXYCACHE,$MFLAG,[define for Proxy Cache overlay])
2822 fi
2823
2824 if test "$ol_enable_refint" != no ; then
2825         BUILD_REFINT=$ol_enable_refint
2826         if test "$ol_enable_refint" = mod ; then
2827                 MFLAG=SLAPD_MOD_DYNAMIC
2828                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS refint.la"
2829         else
2830                 MFLAG=SLAPD_MOD_STATIC
2831         fi
2832         AC_DEFINE_UNQUOTED(SLAPD_OVER_REFINT,$MFLAG,[define for Referential Integrity overlay])
2833 fi
2834
2835 if test "$ol_enable_rwm" != no ; then
2836         BUILD_REWRITE=yes
2837         BUILD_RWM=$ol_enable_rwm
2838         if test "$ol_enable_rwm" = mod ; then
2839                 MFLAG=SLAPD_MOD_DYNAMIC
2840                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS rwm.la"
2841         else
2842                 MFLAG=SLAPD_MOD_STATIC
2843         fi
2844         AC_DEFINE_UNQUOTED(SLAPD_OVER_RWM,$MFLAG,[define for Rewrite/Remap overlay])
2845 fi
2846
2847 if test "$ol_enable_unique" != no ; then
2848         BUILD_UNIQUE=$ol_enable_unique
2849         if test "$ol_enable_unique" = mod ; then
2850                 MFLAG=SLAPD_MOD_DYNAMIC
2851                 SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS unique.la"
2852         else
2853                 MFLAG=SLAPD_MOD_STATIC
2854         fi
2855         AC_DEFINE_UNQUOTED(SLAPD_OVER_UNIQUE,$MFLAG,[define for Attribute Uniqueness overlay])
2856 fi
2857
2858 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2859         $BUILD_SLAPD = yes ; then
2860         BUILD_SLURPD=yes
2861 fi
2862
2863 if test "$ol_enable_rewrite" != no ; then
2864         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2865         BUILD_REWRITE=yes
2866 fi
2867
2868 if test "$ol_enable_slapi" != no ; then
2869         AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
2870         BUILD_SLAPI=yes
2871         SLAPD_SLAPI_DEPEND=libslapi.a
2872 fi
2873
2874 dnl ----------------------------------------------------------------
2875
2876 dnl
2877 dnl For Windows build, we don't want to include -dlopen flags.
2878 dnl They hurt more than they help.
2879 dnl
2880
2881 if test "$ac_cv_mingw32" = yes ; then
2882         PLAT=NT
2883         SLAPD_MODULES_LDFLAGS=
2884 else
2885         PLAT=UNIX
2886 fi
2887
2888 if test -z "$SLAPD_STATIC_BACKENDS"; then
2889         SLAPD_NO_STATIC='#'
2890 else
2891         SLAPD_NO_STATIC=
2892 fi
2893
2894 dnl Generate static backend header file
2895 BACKEND_HEADER=servers/slapd/backend.h
2896 cat > $BACKEND_HEADER << EOF
2897 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
2898  *
2899  * Copyright 1998-2004 The OpenLDAP Foundation.
2900  * All rights reserved.
2901  *
2902  * Redistribution and use in source and binary forms, with or without
2903  * modification, are permitted only as authorized by the OpenLDAP
2904  * Public License.
2905  *
2906  * A copy of this license is available in the file LICENSE in the
2907  * top-level directory of the distribution or, alternatively, at
2908  * <http://www.OpenLDAP.org/license.html>.
2909  */
2910 /* This file is automatically generated by configure; please do not edit.
2911  */
2912
2913 EOF
2914
2915 for b in $SLAPD_STATIC_BACKENDS; do
2916         bb=`echo "$b" | sed -e 's;back-;;'`
2917         
2918         cat >> $BACKEND_HEADER << EOF
2919 extern BI_init ${bb}_back_initialize;
2920 EOF
2921 done
2922
2923 cat >> $BACKEND_HEADER << EOF
2924
2925 static BackendInfo binfo[[]] = {
2926 EOF
2927
2928 for b in $SLAPD_STATIC_BACKENDS; do
2929         bb=`echo "$b" | sed -e 's;back-;;'`
2930         
2931         cat >> $BACKEND_HEADER << EOF
2932         { "$bb", ${bb}_back_initialize },
2933 EOF
2934 done
2935
2936 cat >> $BACKEND_HEADER << EOF
2937         { NULL, NULL }
2938 };
2939
2940 /* end of generated file */
2941 EOF
2942 dnl done generating static backend header file
2943
2944 AC_SUBST(LIBSRCS)
2945 AC_SUBST(PLAT)
2946 AC_SUBST(WITH_SASL)
2947 AC_SUBST(WITH_TLS)
2948 AC_SUBST(WITH_MODULES_ENABLED)
2949 AC_SUBST(BUILD_LIBS_DYNAMIC)
2950
2951 AC_SUBST(BUILD_SLAPD)
2952 dnl slapi
2953   AC_SUBST(BUILD_SLAPI)
2954   AC_SUBST(SLAPD_SLAPI_DEPEND)
2955 dnl backends
2956   AC_SUBST(BUILD_BDB)
2957   AC_SUBST(BUILD_DNSSRV)
2958   AC_SUBST(BUILD_HDB)
2959   AC_SUBST(BUILD_LDAP)
2960   AC_SUBST(BUILD_LDBM)
2961   AC_SUBST(BUILD_META)
2962   AC_SUBST(BUILD_MONITOR)
2963   AC_SUBST(BUILD_NULL)
2964   AC_SUBST(BUILD_PASSWD)
2965   AC_SUBST(BUILD_RELAY)
2966   AC_SUBST(BUILD_PERL)
2967   AC_SUBST(BUILD_SHELL)
2968   AC_SUBST(BUILD_SQL)
2969 dnl overlays
2970   AC_SUBST(BUILD_CHAIN)
2971   AC_SUBST(BUILD_DENYOP)
2972   AC_SUBST(BUILD_DYNGROUP)
2973   AC_SUBST(BUILD_LASTMOD)
2974   AC_SUBST(BUILD_PPOLICY)
2975   AC_SUBST(BUILD_PROXYCACHE)
2976   AC_SUBST(BUILD_REFINT)
2977   AC_SUBST(BUILD_RWM)
2978   AC_SUBST(BUILD_UNIQUE)
2979 AC_SUBST(BUILD_SLURPD)
2980
2981 AC_SUBST(LDAP_LIBS)
2982 AC_SUBST(SLAPD_LIBS)
2983 AC_SUBST(SLURPD_LIBS)
2984 AC_SUBST(LDBM_LIBS)
2985 AC_SUBST(LTHREAD_LIBS)
2986 AC_SUBST(LUTIL_LIBS)
2987 AC_SUBST(WRAP_LIBS)
2988
2989 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2990 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2991
2992 AC_SUBST(SLAPD_NO_STATIC)
2993 AC_SUBST(SLAPD_STATIC_BACKENDS)
2994 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
2995 AC_SUBST(SLAPD_DYNAMIC_OVERLAYS)
2996
2997 AC_SUBST(PERL_CPPFLAGS)
2998 AC_SUBST(SLAPD_PERL_LDFLAGS)
2999 AC_SUBST(MOD_PERL_LDFLAGS)
3000
3001 AC_SUBST(KRB4_LIBS)
3002 AC_SUBST(KRB5_LIBS)
3003 AC_SUBST(SASL_LIBS)
3004 AC_SUBST(TLS_LIBS)
3005 AC_SUBST(MODULES_LIBS)
3006 AC_SUBST(SLAPI_LIBS)
3007 AC_SUBST(LIBSLAPI)
3008 AC_SUBST(LIBSLAPITOOLS)
3009 AC_SUBST(AUTH_LIBS)
3010
3011 AC_SUBST(SLAPD_SLP_LIBS)
3012 AC_SUBST(SLAPD_GMP_LIBS)
3013
3014 AC_SUBST(SLAPD_SQL_LDFLAGS)
3015 AC_SUBST(SLAPD_SQL_LIBS)
3016 AC_SUBST(SLAPD_SQL_INCLUDES)
3017
3018 dnl ----------------------------------------------------------------
3019 dnl final help output
3020 AC_ARG_WITH(xxinstall,[
3021 See INSTALL file for further details.])
3022
3023 dnl ----------------------------------------------------------------
3024 dnl final output
3025 dnl
3026
3027 AC_OUTPUT( \
3028 Makefile:build/top.mk:Makefile.in:build/dir.mk \
3029 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
3030 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
3031 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
3032 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
3033 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
3034 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
3035 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
3036 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
3037 include/Makefile:build/top.mk:include/Makefile.in \
3038 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
3039 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
3040 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
3041 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
3042 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
3043 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
3044 libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk \
3045 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
3046 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
3047 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
3048 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
3049 servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk \
3050 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
3051 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
3052 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
3053 servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk \
3054 servers/slapd/back-null/Makefile:build/top.mk:servers/slapd/back-null/Makefile.in:build/mod.mk \
3055 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
3056 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
3057 servers/slapd/back-relay/Makefile:build/top.mk:servers/slapd/back-relay/Makefile.in:build/mod.mk \
3058 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
3059 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
3060 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
3061 servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk  \
3062 servers/slapd/overlays/Makefile:build/top.mk:servers/slapd/overlays/Makefile.in:build/lib.mk \
3063 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
3064 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
3065 tests/run \
3066 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
3067 ,[
3068 chmod +x tests/run
3069 date > stamp-h
3070 echo Please run \"make depend\" to build dependencies
3071 ])