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