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