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