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