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