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