]> git.sur5r.net Git - openldap/blob - configure.in
4dd720267ae6888928de2611db1cedb5ef8915f6
[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_monitor = 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_CHECK_PROGS(AR,ar gar)
598
599 AC_LIBTOOL_WIN32_DLL
600 AC_LIBTOOL_DLOPEN
601 AC_PROG_LIBTOOL
602
603 AC_PROG_AWK
604 OL_PROG_LN_H
605 AC_PROG_LN_S
606
607 if test "$LN_H" = "cp" -a "$LN_S" = "ln"; then
608         LN_S="$LN_H"
609 fi
610
611 AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
612         $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
613 AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
614 AC_PATH_PROG(FINGER, finger, /usr/ucb/finger, $PATH:/usr/ucb)
615
616 dnl ----------------------------------------------------------------
617 dnl Perl
618 ol_link_perl=no
619 if test $ol_enable_perl != no ; then
620         AC_PATH_PROG(PERLBIN, perl, /usr/bin/perl)
621
622         if test "no$PERLBIN" = "no" ; then
623                 if test $ol_enable_perl = yes ; then
624                         AC_MSG_ERROR([could not locate perl])
625                 fi
626
627         else
628                 PERL_CPPFLAGS="`$PERLBIN -MExtUtils::Embed -e ccopts`"
629                 if test x"$ol_with_perl_module" = "xstatic" ; then
630                         SLAPD_PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e s/-lc//`"
631                 else
632                         MOD_PERL_LDFLAGS="`$PERLBIN -MExtUtils::Embed -e ldopts|sed -e s/-lc//`"
633                 fi
634                 dnl should check perl version
635                 ol_link_perl=yes
636         fi
637 fi
638
639 AC_PROG_CPP
640
641 dnl ----------------------------------------------------------------
642 dnl Cross compiling checks
643 if test $cross_compiling = yes -a $ol_enable_x_compile = yes; then
644         AC_MSG_WARN([cross compiling....  some functionality will be removed.])
645
646 elif test $cross_compiling = no -a $ol_enable_x_compile = yes; then
647         AC_MSG_WARN([programs compiled here do run here...])
648         AC_MSG_ERROR([  if not cross compiling, use --disable-x-compile.])
649
650 elif test $cross_compiling = yes -a $ol_enable_x_compile = no; then
651         AC_MSG_WARN([programs compiled here do not run here...])
652         AC_MSG_ERROR([  if cross compiling,  add --enable-x-compile.])
653 fi
654
655 dnl ----------------------------------------------------------------
656 dnl Checks for UNIX Variants
657 AC_AIX
658 AC_ISC_POSIX
659 AC_MINIX
660
661 dnl ----------------------------------------------------------------
662 dnl Checks for system services
663 AC_CYGWIN
664 AC_MINGW32
665 AC_EXEEXT
666 AC_OBJEXT
667
668 AC_DEFINE_UNQUOTED( EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
669
670 dnl ----------------------------------------------------------------
671 dnl BeOS requires -lbe -lroot -lnet
672 AC_CHECK_LIB(be, be_app, [LIBS="$LIBS -lbe -lroot -lnet"], :, [-lroot -lnet])
673
674 dnl ----------------------------------------------------------------
675 dnl OpenLDAP requires STDC features
676 AM_PROG_CC_STDC
677 if test "X${am_cv_prog_cc_stdc}" = "Xno" ; then
678         AC_MSG_ERROR([OpenLDAP requires compiler to support STDC constructs.])
679 fi
680
681 dnl ----------------------------------------------------------------
682 dnl Check cc depend flags
683 OL_MKDEPEND
684 if test "${ol_cv_mkdep}" = no ; then
685         # this will soon become an error
686         AC_MSG_WARN([do not know how to generate dependencies])
687 fi
688
689 dnl ----------------------------------------------------------------
690 dnl Check for AIX security library
691 AC_CHECK_LIB(s, afopen, [
692         AUTH_LIBS=-ls
693         AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
694 ])
695
696
697 dnl ----------------------------------------------------------------
698 dnl Check for module support
699 ol_link_modules=no
700 if test $ol_enable_modules != no ; then
701         AC_CHECK_HEADERS(ltdl.h)
702
703         if test $ac_cv_header_ltdl_h = no ; then
704                 AC_MSG_ERROR([could not locate libtool ltdl.h])
705         fi
706
707         AC_CHECK_LIB(ltdl, lt_dlinit, [
708             MODULES_LIBS=-lltdl
709             AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
710         ])
711
712         if test "$ac_cv_lib_ltdl_lt_dlinit" = no ; then
713                 AC_MSG_ERROR([could not locate libtool -lltdl])
714         fi
715         ol_link_modules=yes
716 else
717         ol_with_bdb_module=static
718         ol_with_dnssrv_module=static
719         ol_with_ldap_module=static
720         ol_with_ldbm_module=static
721         ol_with_meta_module=static
722         ol_with_monitor_module=static
723         ol_with_passwd_module=static
724         ol_with_perl_module=static
725         ol_with_shell_module=static
726         ol_with_tcl_module=static
727         ol_with_sql_module=static
728 fi
729
730 dnl ----------------------------------------------------------------
731 dnl Checks for header files.
732 OL_HEADER_STDC
733
734 if test $ol_cv_header_stdc != yes; then
735         AC_MSG_WARN([could not locate Standard C compliant headers])
736 fi
737
738 AC_HEADER_DIRENT
739 AC_HEADER_SYS_WAIT
740 AM_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL
741 if test $am_cv_sys_posix_termios = yes ; then
742         AC_DEFINE(HAVE_POSIX_TERMIOS,1,
743                 [define if you have POSIX termios])
744 fi
745
746 AC_CHECK_HEADERS(       \
747         arpa/inet.h             \
748         arpa/nameser.h  \
749         assert.h                \
750         conio.h                 \
751         crypt.h                 \
752         direct.h                \
753         errno.h                 \
754         fcntl.h                 \
755         filio.h                 \
756         getopt.h                \
757         grp.h                   \
758         io.h                    \
759         libutil.h               \
760         limits.h                \
761         locale.h                \
762         netinet/tcp.h   \
763         malloc.h                \
764         memory.h                \
765         psap.h                  \
766         pwd.h                   \
767         process.h               \
768         resolv.h                \
769         sgtty.h                 \
770         shadow.h                \
771         stddef.h                \
772         string.h                \
773         strings.h               \
774         sysexits.h              \
775         sys/file.h              \
776         sys/filio.h             \
777         sys/errno.h             \
778         sys/ioctl.h             \
779         sys/param.h             \
780         sys/resource.h  \
781         sys/select.h    \
782         sys/socket.h    \
783         sys/syslog.h    \
784         sys/time.h              \
785         sys/types.h             \
786         syslog.h                \
787         termios.h               \
788         unistd.h                \
789         winsock.h               \
790 )
791
792
793 dnl ----------------------------------------------------------------
794 dnl Checks for libraries
795
796 AC_CHECK_FUNC(dlopen, :, [AC_CHECK_LIB(dl, dlopen)])
797
798 dnl HP-UX requires -lV3
799 AC_CHECK_LIB(V3, sigset)
800
801 dnl Gotta check for winsock manually
802 if test $ac_cv_header_winsock_h = yes; then
803         AC_CACHE_CHECK([for winsock], [ol_cv_winsock], 
804         AC_TRY_LINK([#include <winsock.h>],[
805                         socket(0,0,0);
806                         select(0,NULL,NULL,NULL,NULL);
807                         closesocket(0);
808                         gethostname(NULL,0);
809         ],[ol_cv_winsock=yes],[ol_cv_winsock=no]))
810
811         if test $ol_cv_winsock = yes ; then
812                 AC_DEFINE(HAVE_WINSOCK,1,[define if you have winsock])
813                 ac_cv_func_socket=yes
814                 ac_cv_func_select=yes
815                 ac_cv_func_closesocket=yes
816                 ac_cv_func_gethostname=yes
817         fi
818 fi
819
820 dnl Find socket()
821 dnl Likely combinations:
822 dnl             -lsocket [ -lnsl_s | -lnsl ]
823 dnl             -linet
824
825 AC_CHECK_FUNC(socket, :, [      
826 dnl hopefully we won't include too many libraries
827         AC_CHECK_LIB(socket, main)
828         AC_CHECK_LIB(net, main)
829         AC_CHECK_LIB(nsl_s, main)
830         AC_CHECK_LIB(nsl, main)
831         AC_CHECK_LIB(inet, socket)
832         AC_CHECK_LIB(gen, main)
833 ])
834
835 dnl require select
836 AC_CHECK_FUNC(select, :, AC_MSG_ERROR([select() required.]))
837
838 if test "${ac_cv_header_winsock_h}" != yes; then
839     dnl Select arg types
840     dnl (if this detection becomes permenent, it and the select() detection
841     dnl should be done before the yielding select test) 
842     AC_FUNC_SELECT_ARGTYPES
843 fi
844
845 dnl check to see if system call automatically restart
846 dnl AC_SYS_RESTARTABLE_SYSCALLS
847
848 dnl ----------------------------------------------------------------
849 dnl require POSIX regex
850 AC_CHECK_HEADERS( regex.h )
851 if test "$ac_cv_header_regex_h" != yes ; then
852         AC_MSG_ERROR([POSIX regex.h required.])
853 fi
854 AC_CHECK_FUNC(regfree, :, AC_MSG_ERROR([POSIX regex required.]))
855
856 OL_POSIX_REGEX
857 if test "$ol_cv_c_posix_regex" = no ; then
858         AC_MSG_ERROR([broken POSIX regex!])
859 fi
860
861 dnl ----------------------------------------------------------------
862 dnl Check for resolver routines
863 dnl       need to check for both res_query and __res_query
864 dnl   need to check -lc, -lbind, and -lresolv
865 ol_link_dnssrv=no
866 AC_CHECK_FUNC(res_query,:)
867 if test $ac_cv_func_res_query = no ; then 
868         AC_CHECK_FUNC(__res_query,:)
869         ac_cv_func_res_query=$ac_cv_func___res_query
870 fi
871
872 if test $ac_cv_func_res_query = no ; then 
873         AC_CHECK_LIB(bind, res_query)
874         ac_cv_func_res_query=$ac_cv_lib_bind_res_query
875 fi
876
877 if test $ac_cv_func_res_query = no ; then 
878         AC_CHECK_LIB(bind, __res_query)
879         ac_cv_func_res_query=$ac_cv_lib_bind___res_query
880 fi
881
882 if test $ac_cv_func_res_query = no ; then 
883         AC_CHECK_LIB(resolv, res_query)
884         ac_cv_func_res_query=$ac_cv_lib_resolv_res_query
885 fi
886
887 if test $ac_cv_func_res_query = no ; then 
888         AC_CHECK_LIB(resolv, __res_query)
889         ac_cv_func_res_query=$ac_cv_lib_resolv___res_query
890 fi
891
892 if test "$ac_cv_func_res_query" = yes ; then
893         AC_DEFINE(HAVE_RES_QUERY,1,
894                 [define if you have res_query()])
895
896         if test $ol_enable_dnssrv != no ; then
897                 ol_link_dnssrv=yes
898         fi
899 fi
900
901 if test "$ol_enable_dnssrv" = yes -a "$ol_link_dnssrv" = no ; then
902         AC_MSG_ERROR([DNSSRV requires res_query()])
903 fi
904
905 dnl ----------------------------------------------------------------
906 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
907 dnl PF_LOCAL may use getaddrinfo in available
908 AC_CHECK_FUNCS( getaddrinfo inet_ntop )
909
910 ol_link_ipv6=no
911 if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
912         if test $ol_enable_ipv6 = yes ; then
913                 AC_MSG_ERROR([IPv6 support requires getaddrinfo() and inet_ntop()])
914         fi
915 else
916         AC_CHECK_FUNCS( gai_strerror )
917
918         AC_CACHE_CHECK([INET6_ADDRSTRLEN],[ol_cv_inet6_addrstrlen],[
919                 AC_EGREP_CPP(__has_inet6_addrstrlen__,[
920 #                       include <netinet/in.h>
921 #                       ifdef INET6_ADDRSTRLEN
922                                 __has_inet6_addrstrlen__;
923 #                       endif
924                 ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
925
926         if test $ol_cv_inet6_addrstrlen = yes ; then
927                 ol_link_ipv6=yes
928         elif test $ol_enable_ipv6 = yes ; then
929                 AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
930         fi
931 fi
932
933 if test $ol_enable_local != no ; then
934         AC_CHECK_HEADERS( sys/un.h )
935
936         if test $ol_enable_local = auto ; then
937                 ol_enable_local=$ac_cv_header_sys_un_h
938         elif test $ac_cv_header_sys_un_h = no ; then
939                 AC_MSG_ERROR([AF_LOCAL domain support requires sys/un.h])
940         fi
941 fi
942
943 dnl ----------------------------------------------------------------
944 dnl Kerberos
945 ol_link_kbind=no
946 ol_link_kpasswd=no
947 ol_link_krb5=no
948 ol_link_krb4=no
949
950 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
951         -o $ol_with_kerberos = k5 -o $ol_with_kerberos = k5only \
952         -o $ol_with_kerberos = k425 ; then
953
954         AC_CHECK_HEADERS(krb5.h)
955
956         if test $ac_cv_header_krb5_h = yes ; then
957                 dnl lazy check for Heimdal Kerberos
958                 AC_CHECK_HEADERS(heim_err.h)
959                 if test $ac_cv_header_heim_err_h = yes ; then
960                         krb5_impl=heimdal
961                 else
962                         krb5_impl=mit
963                 fi
964
965                 if test $krb5_impl = mit; then
966                         AC_CHECK_LIB(k5crypto, main,
967                                 [krb5crypto=k5crypto],
968                                 [krb5crypto=crypto])
969
970                         AC_CHECK_LIB(krb5, main,
971                                 [have_krb5=yes
972                                 KRB5_LIBS="-lkrb5 -l$krb5crypto -lcom_err"],
973                                 [have_krb5=no],
974                                 [-l$krb5crypto -lcom_err])
975
976                 elif test $krb5_impl = heimdal; then
977                         AC_CHECK_LIB(krb5, main,
978                                 [have_krb5=yes
979                                 KRB5_LIBS="-lkrb5 -ldes -lasn1 -lroken -lcom_err"],
980                                 [have_krb5=no],
981                                 [-ldes -lasn1 -lroken -lcom_err])
982
983                         AC_DEFINE(HAVE_HEIMDAL_KERBEROS, 1,
984                                 [define if you have HEIMDAL Kerberos])
985
986                 else
987                         have_krb5=no
988                         AC_MSG_WARN([Unrecongized Kerberos5 Implementation])
989                 fi
990
991                 if test $have_krb5 = yes ; then
992                         ol_link_krb5=yes
993
994                         AC_DEFINE(HAVE_KRB5, 1,
995                                 [define if you have Kerberos V])
996
997                         if test $ol_enable_kpasswd != no ; then
998                                 ol_link_kpasswd=yes;
999                         fi
1000
1001                         if test $ol_with_kerberos = k5only ; then
1002                                 ol_with_kerberos=found
1003                         fi
1004
1005                 elif test $ol_with_kerberos != auto ; then
1006                         AC_MSG_ERROR([Required Kerberos 5 support not available])
1007                 fi
1008
1009         fi
1010 fi
1011
1012 if test $ol_link_krb5 = yes -a \( $ol_with_kerberos = yes -o \
1013         $ol_with_kerberos = auto -o $ol_with_kerberos = k425 \) ; then
1014
1015         AC_CHECK_HEADERS(kerberosIV/krb.h kerberosIV/des.h)
1016
1017         if test $ac_cv_header_kerberosIV_krb_h = yes ; then
1018                 if test $krb5_impl = mit; then
1019                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1020                                 KRB4_LIBS="-lkrb4 -ldes425"], [have_k425=no],
1021                                 [-ldes425 -lkrb5 -l$krb5crypto -lcom_err])
1022
1023                 elif test $krb5_impl = heimdal; then
1024                         AC_CHECK_LIB(krb4, main, [have_k425=yes
1025                                 KRB4_LIBS="-lkrb4"], [have_k425=no],
1026                                 [-lkrb5 -ldes -lasn1 -lroken -lcom_err])
1027
1028                 else
1029                         have_425=no
1030                         AC_MSG_WARN([Unrecongized Kerberos V Implementation])
1031                 fi
1032
1033                 if test $have_k425 = yes ; then
1034                         ol_with_kerberos=found
1035                         ol_link_krb4=yes
1036
1037                         AC_DEFINE(HAVE_KRB425, 1,
1038                                 [define if you have Kerberos V with IV support])
1039                         AC_DEFINE(HAVE_KRB4, 1,
1040                                 [define if you have Kerberos IV])
1041
1042                         AC_CACHE_CHECK([for des_debug in Kerberos libraries],
1043                                 [ol_cv_var_des_debug], [
1044                                 dnl save the flags
1045                                 save_LIBS="$LIBS"
1046                                 LIBS="$KRB4_LIBS $KRB5_LIBS $LIBS"
1047                                 AC_TRY_LINK([
1048 #include <kerberosIV/krb.h>
1049 #include <kerberosIV/des.h>
1050 extern int des_debug;
1051 ],[
1052 des_debug = 1;
1053 ],                              ol_cv_var_des_debug=yes, ol_cv_var_des_debug=no)
1054                                 dnl restore the LIBS
1055                                 LIBS="$save_LIBS"
1056                         ])
1057
1058                         if test $ol_cv_var_des_debug = yes ; then
1059                                 AC_DEFINE(HAVE_DES_DEBUG,1,
1060                                         [define if you have Kerberos des_debug])
1061                         fi
1062
1063                         LIBS="$save_LIBS"
1064                 fi
1065         fi
1066 fi
1067
1068 if test $ol_link_krb5 = yes ; then
1069         ol_with_kerberos=found
1070 fi
1071
1072 if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
1073         -o $ol_with_kerberos = k4 -o $ol_with_kerberos = kth ; then
1074
1075         AC_CHECK_HEADERS(krb.h des.h krb-archaeology.h )
1076
1077         if test $ac_cv_header_krb_h = yes ; then
1078                 AC_CHECK_LIB(krb, main, [have_k4=yes], [have_k4=no], [-ldes])
1079
1080                 if test $have_k4 = yes ; then
1081                         ol_with_kerberos=found
1082                         ol_link_krb4=yes
1083
1084                         AC_DEFINE(HAVE_KRB4, 1,
1085                                 [define if you have Kerberos IV])
1086
1087                         KRB4_LIBS="-lkrb -ldes"
1088
1089                         if test $ac_cv_header_krb_archaeology_h = yes ; then
1090                                 AC_DEFINE(HAVE_KTH_KERBEROS, 1,
1091                                         [define if you have Kth Kerberos])
1092                         fi
1093                 fi
1094         fi
1095 fi
1096
1097 if test $ol_link_krb4 = yes -a $ol_enable_kpasswd != no ; then
1098         ol_link_kpasswd=yes
1099 fi
1100
1101 if test $ol_link_krb4 = yes -a $ol_enable_kbind != no ; then
1102         ol_link_kbind=yes
1103
1104 elif test $ol_enable_kbind = yes ; then
1105         AC_MSG_ERROR([Kerberos IV detection failed])
1106 fi
1107
1108 if test $ol_link_krb4 = yes -o $ol_link_krb5 = yes ; then
1109         AC_DEFINE(HAVE_KERBEROS, 1, [define if you have Kerberos])
1110
1111 elif test $ol_with_kerberos != auto -a $ol_with_kerberos != no ; then
1112         AC_MSG_ERROR([Kerberos detection failed])
1113 fi
1114
1115 dnl ----------------------------------------------------------------
1116 dnl TLS/SSL
1117 ol_link_tls=no
1118 if test $ol_with_tls != no ; then
1119         AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
1120         
1121         if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
1122                 AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
1123                         [have_ssleay=yes
1124                         need_rsaref=no],
1125                         [have_ssleay=no],
1126                         [-lcrypto])
1127                         
1128                 if test $have_ssleay = no ; then
1129                         AC_CHECK_LIB(ssl, SSL_library_init,
1130                                 [have_ssleay=yes
1131                                 need_rsaref=no], [have_ssleay=no],
1132                                 [-lcrypto])
1133                 fi
1134
1135                 if test $have_ssleay = no ; then
1136                         AC_CHECK_LIB(ssl, ssl3_accept, 
1137                                 [have_ssleay=yes
1138                                 need_rsaref=yes], [have_ssleay=no],
1139                                 [-lcrypto -lRSAglue -lrsaref])
1140                 fi
1141
1142                 if test $have_ssleay = yes ; then
1143                         ol_with_tls=found
1144                         ol_link_tls=yes
1145
1146                         AC_DEFINE(HAVE_SSLEAY, 1, 
1147                                 [define if you have SSLeay or OpenSSL])
1148
1149                         if test $need_rsaref = yes; then
1150                                 AC_DEFINE(HAVE_RSAREF, 1, 
1151                                         [define if you have RSAref])
1152
1153                                 TLS_LIBS="-lssl -lcrypto -lRSAglue -lrsaref"
1154                         else
1155                                 TLS_LIBS="-lssl -lcrypto"
1156                         fi
1157                 fi
1158         fi
1159
1160 else
1161         AC_WARN([TLS privacy protection not supported!])
1162 fi
1163
1164 if test $ol_link_tls = yes ; then
1165         AC_DEFINE(HAVE_TLS, 1, [define if you have TLS])
1166
1167 elif test $ol_with_tls = auto ; then
1168         AC_WARN([Could not locate TLS/SSL package])
1169         AC_WARN([TLS privacy protection not supported!])
1170
1171 elif test $ol_with_tls != no ; then
1172         AC_ERROR([Could not locate TLS/SSL package])
1173 fi
1174
1175 dnl ----------------------------------------------------------------
1176 dnl LAN Manger password checking requires DES from OpenSSL
1177 if test $ol_enable_lmpasswd != no; then
1178         if test $ol_link_tls != yes ; then
1179                 AC_ERROR([LAN Manager passwords require OpenSSL])
1180         fi
1181
1182         AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
1183 fi
1184
1185 dnl ----------------------------------------------------------------
1186 dnl Tests for reentrant functions necessary to build a
1187 dnl thread_safe -lldap.
1188 AC_CHECK_FUNCS(         \
1189         ctime_r                 \
1190         gethostbyname_r gethostbyaddr_r \
1191 )
1192
1193 if test "$ac_cv_func_ctime_r" = no ; then
1194         ol_cv_func_ctime_r_nargs=0
1195 else
1196         OL_FUNC_CTIME_R_NARGS
1197 dnl     OL_FUNC_CTIME_R_TYPE
1198 fi
1199
1200 if test "$ac_cv_func_gethostbyname_r" = yes ; then
1201         OL_FUNC_GETHOSTBYNAME_R_NARGS
1202 else
1203         ol_cv_func_gethostbyname_r_nargs=0
1204 fi
1205  
1206 if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
1207         OL_FUNC_GETHOSTBYADDR_R_NARGS
1208 else
1209         ol_cv_func_gethostbyaddr_r_nargs=0
1210 fi
1211
1212 if test "$ac_cv_func_ctime_r" = yes \
1213         -a "$ol_cv_func_ctime_r_nargs" -ge 2 \
1214         -a "$ol_cv_func_ctime_r_nargs" -le 3 \
1215         -a "$ac_cv_func_gethostbyname_r" = yes \
1216         -a "$ol_cv_func_gethostbyname_r_nargs" -ge 5 \
1217         -a "$ol_cv_func_gethostbyname_r_nargs" -le 6 \
1218         -a "$ac_cv_func_gethostbyaddr_r" = yes \
1219         -a "$ol_cv_func_gethostbyaddr_r_nargs" -ge 5 \
1220         -a "$ol_cv_func_gethostbyaddr_r_nargs" -le 6 \
1221         ; then
1222  
1223         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT,1)
1224 fi
1225
1226 dnl ----------------------------------------------------------------
1227 dnl Threads?
1228 ol_link_threads=no
1229
1230 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1231         -o $ol_with_threads = nt ; then
1232
1233         OL_NT_THREADS
1234
1235         if test "$ol_cv_nt_threads" = yes ; then
1236         ol_link_threads=nt
1237         ol_with_threads=found
1238         ol_with_yielding_select=yes
1239
1240                 AC_DEFINE(HAVE_NT_SERVICE_MANAGER,1,[if you have NT Service Manager])
1241                 AC_DEFINE(HAVE_NT_EVENT_LOG,1,[if you have NT Event Log])
1242         fi
1243
1244         if test $ol_with_threads = nt ; then
1245                 AC_MSG_ERROR([could not locate NT Threads])
1246         fi
1247 fi
1248
1249 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1250         -o $ol_with_threads = posix ; then
1251
1252         AC_CHECK_HEADERS(pthread.h)
1253
1254         if test $ac_cv_header_pthread_h = yes ; then
1255                 OL_POSIX_THREAD_VERSION
1256
1257                 if test $ol_cv_pthread_version = final ; then
1258                         AC_DEFINE(HAVE_PTHREADS_FINAL,1,
1259                                 [define if pthreads API compatible with final spec])
1260                 elif test $ol_cv_pthread_version = draft4 ; then
1261                         AC_DEFINE(HAVE_PTHREADS_D4,1,
1262                                 [define if pthreads API compatible with draft4 spec])
1263                 else
1264                         AC_MSG_ERROR([unknown pthread version])
1265                 fi
1266
1267                 # consider threads found
1268                 ol_with_threads=found
1269
1270                 OL_HEADER_LINUX_THREADS
1271                 OL_HEADER_GNU_PTH_PTHREAD_H
1272
1273                 if test $ol_cv_header_gnu_pth_pthread_h = no ; then
1274                         AC_CHECK_HEADERS(sched.h)
1275                 fi
1276
1277                 dnl Now the hard part, how to link?
1278                 dnl
1279                 dnl currently supported checks:
1280                 dnl
1281                 dnl Check for no flags 
1282                 dnl     pthread_create() in $LIBS
1283                 dnl
1284                 dnl Check special pthread (final) flags
1285                 dnl     [skipped] pthread_create() with -mt (Solaris) [disabled]
1286                 dnl     pthread_create() with -kthread (FreeBSD)
1287                 dnl     pthread_create() with -pthread (FreeBSD/Digital Unix)
1288                 dnl     pthread_create() with -pthreads (?)
1289                 dnl     pthread_create() with -mthreads (AIX)
1290                 dnl     pthread_create() with -thread (?)
1291                 dnl
1292                 dnl Check pthread (final) libraries
1293                 dnl     pthread_mutex_unlock() in -lpthread -lmach -lexc -lc_r (OSF/1)
1294                 dnl     pthread_mutex_lock() in -lpthread -lmach -lexc (OSF/1)
1295                 dnl     [skipped] pthread_mutex_trylock() in -lpthread -lexc (OSF/1)
1296                 dnl     pthread_join() -Wl,-woff,85 -lpthread (IRIX)
1297                 dnl     pthread_create() in -lpthread (many)
1298                 dnl     pthread_create() in -lc_r (FreeBSD)
1299                 dnl
1300                 dnl Check pthread (draft4) flags (depreciated)
1301                 dnl     pthread_create() with -threads (OSF/1)
1302                 dnl
1303                 dnl Check pthread (draft4) libraries (depreciated)
1304                 dnl     pthread_mutex_unlock() in -lpthreads -lmach -lexc -lc_r (OSF/1)
1305                 dnl     pthread_mutex_lock() in -lpthreads -lmach -lexc (OSF/1)
1306                 dnl     pthread_mutex_trylock() in -lpthreads -lexc (OSF/1)
1307                 dnl     pthread_create() in -lpthreads (many)
1308                 dnl
1309
1310                 dnl pthread_create in $LIBS
1311                 AC_CACHE_CHECK([for pthread_create in default libraries],
1312                         ol_cv_pthread_create,[
1313                 AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1314                         [ol_cv_pthread_create=yes],
1315                         [ol_cv_pthread_create=no],
1316                         [AC_TRY_LINK(OL_PTHREAD_TEST_INCLUDES,OL_PTHREAD_TEST_FUNCTION,
1317                                 [ol_cv_pthread_create=yes],
1318                                 [ol_cv_pthread_create=no])])])
1319
1320                 if test $ol_cv_pthread_create != no ; then
1321                         ol_link_threads=posix
1322                         ol_link_pthreads=""
1323                 fi
1324                 
1325 dnl             OL_PTHREAD_TRY([-mt],           [ol_cv_pthread_mt])
1326                 OL_PTHREAD_TRY([-kthread],      [ol_cv_pthread_kthread])
1327                 OL_PTHREAD_TRY([-pthread],      [ol_cv_pthread_pthread])
1328                 OL_PTHREAD_TRY([-pthreads],     [ol_cv_pthread_pthreads])
1329                 OL_PTHREAD_TRY([-mthreads],     [ol_cv_pthread_mthreads])
1330                 OL_PTHREAD_TRY([-thread],       [ol_cv_pthread_thread])
1331
1332                 OL_PTHREAD_TRY([-lpthread -lmach -lexc -lc_r],
1333                         [ol_cv_pthread_lpthread_lmach_lexc_lc_r])
1334                 OL_PTHREAD_TRY([-lpthread -lmach -lexc],
1335                         [ol_cv_pthread_lpthread_lmach_lexc])
1336 dnl             OL_PTHREAD_TRY([-lpthread -lexc],
1337 dnl                     [ol_cv_pthread_lpthread_lexc])
1338
1339                 OL_PTHREAD_TRY([-lpthread -Wl,-woff,85],
1340                         [ol_cv_pthread_lib_lpthread_woff])
1341
1342                 OL_PTHREAD_TRY([-lpthread],     [ol_cv_pthread_lpthread])
1343                 OL_PTHREAD_TRY([-lc_r],         [ol_cv_pthread_lc_r])
1344
1345                 OL_PTHREAD_TRY([-threads],      [ol_cv_pthread_threads])
1346
1347                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc -lc_r],
1348                         [ol_cv_pthread_lpthreads_lmach_lexc_lc_r])
1349                 OL_PTHREAD_TRY([-lpthreads -lmach -lexc],
1350                         [ol_cv_pthread_lpthreads_lmach_lexc])
1351                 OL_PTHREAD_TRY([-lpthreads -lexc],
1352                         [ol_cv_pthread_lpthreads_lexc])
1353
1354                 OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
1355
1356                 if test $ol_link_threads != no ; then
1357                         AC_DEFINE(HAVE_PTHREADS,1,
1358                                 [define if you have POSIX Threads])
1359
1360                         LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
1361
1362                         dnl save flags
1363                         save_CPPFLAGS="$CPPFLAGS"
1364                         save_LIBS="$LIBS"
1365                         LIBS="$LTHREAD_LIBS $LIBS"
1366
1367                         dnl All POSIX Thread (final) implementations should have
1368                         dnl sched_yield instead of pthread yield.
1369                         dnl check for both
1370                         AC_CHECK_FUNCS(sched_yield pthread_yield)
1371
1372                         if test $ac_cv_func_sched_yield = no -a \
1373                                 $ac_cv_func_pthread_yield = no ; then
1374                                 dnl Digital UNIX has sched_yield() in -lrt
1375                                 AC_CHECK_LIB(rt, sched_yield,
1376                                         [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
1377                                         AC_DEFINE(HAVE_SCHED_YIELD,1,
1378                                                 [Define if you have the sched_yield function.])
1379                                         ac_cv_func_sched_yield=yes],
1380                                         [ac_cv_func_sched_yield=no])
1381                         fi
1382                         if test $ac_cv_func_sched_yield = no -a \
1383                                 $ac_cv_func_pthread_yield = no ; then
1384                                 dnl Solaris has sched_yield() stub in -lposix4
1385                                 dnl but we'll use thr_yield instead.
1386                                 AC_CHECK_FUNCS(thr_yield)
1387                         fi
1388                         if test $ac_cv_func_sched_yield = no -a \
1389                                 $ac_cv_func_pthread_yield = no -a \
1390                                 "$ac_cv_func_thr_yield" = no ; then
1391                                 AC_MSG_WARN([could not locate sched_yield() or pthread_yield()])
1392                         fi
1393
1394                         dnl Check functions for compatibility
1395                         AC_CHECK_FUNCS(pthread_kill pthread_rwlock_destroy)
1396
1397                         dnl Check for pthread_detach with <pthread.h> inclusion
1398                         dnl as it's symbol may have been mangled.
1399                         AC_CACHE_CHECK([for pthread_detach with <pthread.h>],
1400                                 [ol_cv_func_pthread_detach], [
1401                                 dnl save the flags
1402                                 AC_TRY_LINK([
1403 #include <pthread.h>
1404 #ifndef NULL
1405 #define NULL (void*)0
1406 #endif
1407 ],
1408                                         [pthread_detach(NULL);],
1409                                         [ol_cv_func_pthread_detach=yes],
1410                                         [ol_cv_func_pthread_detach=no])
1411                         ])
1412
1413                         if test $ol_cv_func_pthread_detach = no ; then
1414                                 AC_MSG_ERROR([could not locate pthread_detach()])
1415                         fi
1416
1417                         AC_DEFINE(HAVE_PTHREAD_DETACH,1,
1418                                 [define if you have pthread_detach function])
1419
1420                         dnl Check for setconcurreny functions
1421                         AC_CHECK_FUNCS( \
1422                                 pthread_setconcurrency \
1423                                 pthread_getconcurrency \
1424                                 thr_setconcurrency \
1425                                 thr_getconcurrency \
1426                         )
1427
1428                         OL_SYS_LINUX_THREADS
1429                         OL_LINUX_THREADS
1430
1431                         if test $ol_cv_linux_threads = error; then
1432                                 AC_MSG_ERROR([LinuxThreads header/library mismatch]);
1433                         fi
1434
1435                         AC_CACHE_CHECK([if pthread_create() works],
1436                                 ol_cv_pthread_create_works,[
1437                         AC_TRY_RUN(OL_PTHREAD_TEST_PROGRAM,
1438                                 [ol_cv_pthread_create_works=yes],
1439                                 [ol_cv_pthread_create_works=no],
1440                                 [dnl assume yes
1441                                 ol_cv_pthread_create_works=yes])])
1442
1443                         if test $ol_cv_pthread_create_works = no ; then
1444                                 AC_MSG_ERROR([pthread_create is not usable, check environment settings])
1445                         fi
1446
1447                         dnl Check if select causes an yield
1448                         if test $ol_with_yielding_select = auto ; then
1449                                 AC_CACHE_CHECK([if select yields when using pthreads],
1450                                         ol_cv_pthread_select_yields,[
1451                                 AC_TRY_RUN([
1452 #include <sys/types.h>
1453 #include <sys/time.h>
1454 #include <unistd.h>
1455 #include <pthread.h>
1456 #ifndef NULL
1457 #define NULL (void*) 0
1458 #endif
1459
1460 static int fildes[2];
1461
1462 static void *task(p)
1463         void *p;
1464 {
1465         int i;
1466         struct timeval tv;
1467
1468         fd_set rfds;
1469
1470         tv.tv_sec=10;
1471         tv.tv_usec=0;
1472
1473         FD_ZERO(&rfds);
1474         FD_SET(fildes[0], &rfds);
1475
1476         /* we're not interested in any fds */
1477         i = select(FD_SETSIZE, &rfds, NULL, NULL, &tv);
1478
1479         if(i < 0) {
1480                 perror("select");
1481                 exit(10);
1482         }
1483
1484         exit(0); /* if we exit here, the select blocked the whole process */
1485 }
1486
1487 int main(argc, argv)
1488         int argc;
1489         char **argv;
1490 {
1491         pthread_t t;
1492
1493         /* create a pipe to select */
1494         if(pipe(&fildes[0])) {
1495                 perror("select");
1496                 exit(1);
1497         }
1498
1499 #ifdef HAVE_PTHREAD_SETCONCURRENCY
1500         (void) pthread_setconcurrency(2);
1501 #else
1502 #ifdef HAVE_THR_SETCONCURRENCY
1503         /* Set Solaris LWP concurrency to 2 */
1504         thr_setconcurrency(2);
1505 #endif
1506 #endif
1507
1508 #if HAVE_PTHREADS_D4
1509         pthread_create(&t, pthread_attr_default, task, NULL);
1510 #else
1511         pthread_create(&t, NULL, task, NULL);
1512 #endif
1513
1514 #if HAVE_SCHED_YIELD
1515         sched_yield();  /* make sure task runs first */
1516 #else
1517 #ifdef HAVE_PTHREAD_YIELD
1518         pthread_yield();        /* make sure task runs first */
1519 #endif
1520 #endif
1521
1522         exit(2);
1523 }],
1524                                 [ol_cv_pthread_select_yields=no],
1525                                 [ol_cv_pthread_select_yields=yes],
1526                                 [ol_cv_pthread_select_yields=cross])])
1527
1528                                 if test $ol_cv_pthread_select_yields = cross ; then
1529                                         AC_MSG_ERROR([crossing compiling: use --with-yielding_select=yes|no|manual])
1530                                 fi
1531
1532                                 if test $ol_cv_pthread_select_yields = yes ; then
1533                                         ol_with_yielding_select=yes
1534                                 fi
1535                         fi
1536
1537                         dnl restore flags
1538                         CPPFLAGS="$save_CPPFLAGS"
1539                         LIBS="$save_LIBS"
1540                 else
1541                         AC_MSG_ERROR([could not locate usable POSIX Threads])
1542                 fi
1543         fi
1544
1545         if test $ol_with_threads = posix ; then
1546                 AC_MSG_ERROR([could not locate POSIX Threads])
1547         fi
1548 fi
1549
1550 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1551         -o $ol_with_threads = mach ; then
1552
1553         dnl check for Mach CThreads
1554         AC_CHECK_HEADERS(mach/cthreads.h cthread.h)
1555         if test $ac_cv_header_mach_cthreads_h = yes ; then
1556                 ol_with_threads=found
1557
1558                 dnl check for cthread support in current $LIBS
1559                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1560
1561                 if test $ol_link_threads = no ; then
1562                         dnl try -all_load
1563                         dnl this test needs work
1564                         AC_CACHE_CHECK([for cthread_fork with -all_load],
1565                                 [ol_cv_cthread_all_load], [
1566                                 dnl save the flags
1567                                 save_LIBS="$LIBS"
1568                                 LIBS="-all_load $LIBS"
1569                                 AC_TRY_LINK([#include <mach/cthreads.h>],[
1570                                         cthread_fork((void *)0, (void *)0);
1571                                         ], ol_cv_cthread_all_load=yes, ol_cv_cthread_all_load=no)
1572                                 dnl restore the LIBS
1573                                 LIBS="$save_LIBS"
1574                         ])
1575
1576                         if test $ol_cv_cthread_all_load = yes ; then
1577                                 LTHREAD_LIBS="$LTHREAD_LIBS -all_load"
1578                                 ol_link_threads=mach
1579                         fi
1580                 fi
1581
1582     elif test $ac_cv_header_cthreads_h = yes ; then
1583                 dnl Hurd variant of Mach Cthreads
1584                 dnl uses <cthreads.h> and -lthreads
1585
1586                 ol_with_threads=found
1587  
1588                 dnl save the flags
1589                 save_LIBS="$LIBS"
1590                 LIBS="$LIBS -lthreads"
1591                 AC_CHECK_FUNC(cthread_fork,[ol_link_threads=yes])
1592                 LIBS="$save_LIBS"
1593
1594                 if test $ol_link_threads = yes ; then
1595                         LTHREAD_LIBS="-lthreads"
1596                         ol_link_threads=mach
1597                 else
1598                         AC_MSG_ERROR([could not link with Mach CThreads])
1599                 fi
1600
1601         elif test $ol_with_threads = mach ; then
1602                 AC_MSG_ERROR([could not locate Mach CThreads])
1603         fi
1604
1605         if test $ol_link_threads = mach ; then
1606                 AC_DEFINE(HAVE_MACH_CTHREADS,1,
1607                         [define if you have Mach Cthreads])
1608         elif test $ol_with_threads = found ; then
1609                 AC_MSG_ERROR([could not link with Mach CThreads])
1610         fi
1611 fi
1612
1613 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1614         -o $ol_with_threads = pth ; then
1615
1616         AC_CHECK_HEADERS(pth.h)
1617
1618         if test $ac_cv_header_pth_h = yes ; then
1619                 AC_CHECK_LIB(pth, pth_version, [have_pth=yes], [have_pth=no])
1620
1621                 if test $have_pth = yes ; then
1622                         AC_DEFINE(HAVE_GNU_PTH,1,[if you have GNU Pth])
1623                         LTHREAD_LIBS="$LTHREAD_LIBS -lpth"
1624                         ol_link_threads=pth
1625
1626                         if test $ol_with_yielding_select = auto ; then
1627                                 ol_with_yielding_select=yes
1628                         fi
1629                 fi
1630         fi
1631 fi
1632
1633 if test $ol_with_threads = auto -o $ol_with_threads = yes \
1634         -o $ol_with_threads = lwp ; then
1635
1636         dnl check for SunOS5 LWP
1637         AC_CHECK_HEADERS(thread.h synch.h)
1638         if test $ac_cv_header_thread_h = yes -a $ac_cv_header_synch_h = yes ; then
1639                 AC_CHECK_LIB(thread, thr_create, [have_thr=yes], [have_thr=no])
1640
1641                 if test $have_thr = yes ; then
1642                         AC_DEFINE(HAVE_THR,1,
1643                                 [if you have Solaris LWP (thr) package])
1644                         LTHREAD_LIBS="$LTHREAD_LIBS -lthread"
1645                         ol_link_threads=thr
1646
1647                         if test $ol_with_yielding_select = auto ; then
1648                                 ol_with_yielding_select=yes
1649                         fi
1650
1651                         dnl Check for setconcurreny functions
1652                         AC_CHECK_FUNCS( \
1653                                 thr_setconcurrency \
1654                                 thr_getconcurrency \
1655                         )
1656                 fi
1657         fi
1658
1659         dnl check for SunOS4 LWP
1660         AC_CHECK_HEADERS(lwp/lwp.h)
1661         if test $ac_cv_header_lwp_lwp_h = yes ; then
1662                 AC_CHECK_LIB(lwp, lwp_create, [have_lwp=yes], [have_lwp=no])
1663
1664                 if test $have_lwp = yes ; then
1665                         AC_DEFINE(HAVE_LWP,1,
1666                                 [if you have SunOS LWP package])
1667                         LTHREAD_LIBS="$LTHREAD_LIBS -llwp"
1668                         ol_link_threads=lwp
1669
1670                         if test $ol_with_yielding_select = auto ; then
1671                                 ol_with_yielding_select=no
1672                         fi
1673                 fi
1674         fi
1675 fi
1676
1677 if test $ol_with_yielding_select = yes ; then
1678         AC_DEFINE(HAVE_YIELDING_SELECT,1,
1679                 [define if select implicitly yields])
1680 fi
1681
1682 if test $ol_with_threads = manual ; then
1683         dnl User thinks he can manually configure threads.
1684         ol_link_threads=yes
1685
1686         AC_MSG_WARN([thread defines and link options must be set manually])
1687
1688         AC_CHECK_HEADERS(pthread.h sched.h)
1689         AC_CHECK_FUNCS(sched_yield pthread_yield)
1690         OL_HEADER_LINUX_THREADS
1691
1692         AC_CHECK_HEADERS(mach/cthreads.h)
1693         AC_CHECK_HEADERS(lwp/lwp.h)
1694         AC_CHECK_HEADERS(thread.h synch.h)
1695 fi
1696
1697 if test $ol_link_threads != no -a $ol_link_threads != nt ; then  
1698         dnl needed to get reentrant/threadsafe versions
1699         dnl
1700         AC_DEFINE(REENTRANT,1)
1701         AC_DEFINE(_REENTRANT,1)
1702         AC_DEFINE(THREAD_SAFE,1)
1703         AC_DEFINE(_THREAD_SAFE,1)
1704         AC_DEFINE(THREADSAFE,1)
1705         AC_DEFINE(_THREADSAFE,1)
1706         AC_DEFINE(_SGI_MP_SOURCE,1)
1707
1708         dnl The errno declaration may dependent upon _REENTRANT.
1709         dnl If it does, we must link with thread support.
1710         AC_CACHE_CHECK([for thread specific errno],
1711                 [ol_cv_errno_thread_specific], [
1712                 AC_TRY_LINK([#include <errno.h>], [errno = 0;],
1713                         [ol_cv_errno_thread_specific=yes],
1714                         [ol_cv_errno_thread_specific=no])
1715         ])
1716
1717         dnl The h_errno declaration may dependent upon _REENTRANT.
1718         dnl If it does, we must link with thread support.
1719         AC_CACHE_CHECK([for thread specific h_errno],
1720                 [ol_cv_h_errno_thread_specific], [
1721                 AC_TRY_LINK([#include <netdb.h>], [h_errno = 0;],
1722                         [ol_cv_h_errno_thread_specific=yes],
1723                         [ol_cv_h_errno_thread_specific=no])
1724         ])
1725
1726         if test $ol_cv_errno_thread_specific != yes \
1727                 -o $ol_cv_h_errno_thread_specific != yes ; then
1728                 LIBS="$LTHREAD_LIBS $LIBS"
1729                 LTHREAD_LIBS=""
1730         fi
1731
1732 dnl When in thread environment, use 
1733 dnl             #if defined( HAVE_REENTRANT_FUNCTIONS ) \ 
1734 dnl                     || defined( HAVE_FUNC_R )
1735 dnl                     func_r(...);
1736 dnl             #else
1737 dnl             #       if defined( HAVE_THREADS ) 
1738 dnl                             /* lock */
1739 dnl             #       endif
1740 dnl                             func(...);
1741 dnl             #       if defined( HAVE_THREADS ) 
1742 dnl                             /* unlock */
1743 dnl             #       endif
1744 dnl             #endif
1745 dnl
1746 dnl HAVE_REENTRANT_FUNCTIONS is derived from:
1747 dnl             _POSIX_REENTRANT_FUNCTIONS
1748 dnl             _POSIX_THREAD_SAFE_FUNCTIONS
1749 dnl             _POSIX_THREADSAFE_FUNCTIONS
1750 dnl
1751 dnl             and is currently defined in lthread.h
1752 dnl
1753 dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS
1754 dnl 
1755 dnl libldap/*.c should only include <lthread.h> iff
1756 dnl LDAP_R_COMPILE is defined.  ie:
1757 dnl             #ifdef LDAP_R_COMPILE
1758 dnl             #       include LDAP_R_COMPILE
1759 dnl             #endif
1760 dnl
1761 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
1762 dnl specifically for compiling the threadsafe version of
1763 dnl     the ldap library (-lldap_r).
1764 dnl             
1765 dnl     dnl check for reentrant/threadsafe functions
1766 dnl     dnl
1767 dnl     dnl note: these should only be used when linking
1768 dnl     dnl       with $LTHREAD_LIBS
1769 dnl     dnl
1770 dnl     save_CPPFLAGS="$CPPFLAGS"
1771 dnl     save_LIBS="$LIBS"
1772 dnl     LIBS="$LTHREAD_LIBS $LIBS"
1773 dnl     AC_CHECK_FUNCS( \
1774 dnl             gmtime_r \
1775 dnl             gethostbyaddr_r gethostbyname_r \
1776 dnl             feof_unlocked unlocked_feof \
1777 dnl             putc_unlocked unlocked_putc \
1778 dnl             flockfile ftrylockfile \
1779 dnl     )
1780 dnl     CPPFLAGS="$save_CPPFLAGS"
1781 dnl     LIBS="$save_LIBS"
1782 fi  
1783
1784 if test $ol_link_threads = no ; then
1785         if test $ol_with_threads = yes ; then
1786                 AC_MSG_ERROR([no suitable thread support])
1787         fi
1788
1789         if test $ol_with_threads = auto ; then
1790                 AC_MSG_WARN([no suitable thread support, disabling threads])
1791                 ol_with_threads=no
1792         fi
1793
1794         AC_DEFINE(NO_THREADS,1,
1795                 [define if you have (or want) no threads])
1796         LTHREAD_LIBS=""
1797 fi
1798
1799 if test $ol_link_threads != no ; then
1800         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
1801 fi
1802
1803 dnl ----------------------------------------------------------------
1804 ol_link_ldbm=no 
1805
1806 if test $ol_with_ldbm_api = auto \
1807         -o $ol_with_ldbm_api = berkeley \
1808         -o $ol_with_ldbm_api = bcompat ; then
1809
1810         if test $ol_with_ldbm_api = bcompat; then \
1811                 OL_BERKELEY_COMPAT_DB
1812         else
1813                 OL_BERKELEY_DB
1814         fi
1815
1816         if test $ol_cv_berkeley_db != no ; then
1817                 AC_DEFINE(HAVE_BERKELEY_DB,1,
1818                         [define this if Berkeley DB is available])
1819
1820                 ol_link_ldbm=berkeley
1821                 ol_with_ldbm_api=berkeley
1822
1823                 if test $ol_with_ldbm_type = hash ; then
1824                         AC_DEFINE(LDBM_USE_DBHASH,1,
1825                                 [define this to use DBHASH w/ LDBM backend])
1826                 else
1827                         AC_DEFINE(LDBM_USE_DBBTREE,1,
1828                                 [define this to use DBBTREE w/ LDBM backend])
1829                 fi
1830
1831                 dnl $ol_cv_lib_db should be yes or -ldb
1832                 dnl (it could be no, but that would be an error
1833                 if test $ol_cv_lib_db != yes ; then
1834                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_db"
1835                 fi
1836         fi
1837 fi
1838
1839 if test $ol_enable_bdb = yes -a $ol_link_ldbm != berkeley ; then
1840         AC_MSG_ERROR(BerkeleyDB not availabl)
1841 elif test $ol_enable_bdb != no -a $ol_link_ldbm != no ; then
1842         ol_enable_bdb=yes
1843 fi
1844
1845 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
1846         AC_MSG_WARN(Could not find LDBM with BTREE support)
1847         ol_with_ldbm_api=none
1848 fi
1849
1850 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = mdbm ; then
1851         OL_MDBM
1852
1853         if test $ol_cv_mdbm = yes ; then
1854                 ol_link_ldbm=mdbm
1855                 ol_with_ldbm_api=mdbm
1856                 if test $ol_cv_lib_mdbm != yes ; then
1857                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_mdbm"
1858                 fi
1859         fi
1860 fi
1861
1862 if test $ol_with_ldbm_api = auto -o $ol_with_ldbm_api = gdbm ; then
1863         OL_GDBM
1864
1865         if test $ol_cv_gdbm = yes ; then
1866                 ol_link_ldbm=gdbm
1867                 ol_with_ldbm_api=gdbm
1868
1869                 if test $ol_cv_lib_gdbm != yes ; then
1870                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_gdbm"
1871                 fi
1872         fi
1873 fi
1874
1875 if test $ol_with_ldbm_api = ndbm ; then
1876         OL_NDBM
1877
1878         if test $ol_cv_ndbm = yes ; then
1879                 ol_link_ldbm=ndbm
1880                 ol_with_ldbm_api=ndbm
1881
1882                 if test $ol_cv_lib_ndbm != yes ; then
1883                         LDBM_LIBS="$LDBM_LIBS $ol_cv_lib_ndbm"
1884                 fi
1885         fi
1886 fi
1887
1888 if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
1889         AC_MSG_WARN(could not find suitable LDBM backend)
1890         if test $ol_enable_ldbm = yes ; then
1891                 AC_MSG_ERROR(select appropriate LDBM options or disable)
1892         fi
1893
1894         AC_MSG_WARN(disabling LDBM)
1895         ol_enable_ldbm=no
1896 fi
1897
1898 dnl ----------------------------------------------------------------
1899 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
1900         LINK_BINS_DYNAMIC="yes"
1901 else
1902         LINK_BINS_DYNAMIC="no"
1903 fi
1904
1905 dnl ----------------------------------------------------------------
1906 if test $ol_enable_wrappers != no ; then
1907         AC_CHECK_HEADERS(tcpd.h)
1908
1909         if test $ac_cv_header_tcpd_h != yes ; then
1910                 have_wrappers=no
1911         else
1912                 AC_TRY_COMPILE([
1913 int allow_severity = 0;
1914 int deny_severity  = 0;
1915                 ],[hosts_access()],[have_wrappers=yes],[have_wrappers=no])
1916         fi
1917
1918         if test $have_wrappers = yes ; then
1919                 AC_DEFINE(HAVE_TCPD,1, [define if you have -lwrap])
1920                 WRAP_LIBS="-lwrap"
1921
1922                 dnl We add another check for -lnsl since some libwrap's
1923                 dnl need it, but it isn't always included from above
1924                 AC_CHECK_LIB(nsl, main)
1925         else
1926                 AC_MSG_WARN(could not find -lwrap)
1927                 if test $ol_enable_wrappers = yes ; then
1928                         AC_MSG_ERROR(could not find wrappers, select appropriate options or disable)
1929                 fi
1930
1931                 AC_MSG_WARN(disabling wrappers support)
1932                 ol_enable_wrappers=no
1933                 WRAP_LIBS=""
1934         fi
1935 fi
1936
1937 dnl ----------------------------------------------------------------
1938 if test $ol_enable_syslog != no ; then
1939         AC_CHECK_FUNC(openlog)
1940         if test $ac_cv_func_openlog = no -a $ol_enable_syslog = yes; then
1941                 AC_MSG_ERROR(could not find syslog, select appropriate options or disable)
1942         fi
1943         ol_enable_syslog=$ac_cv_func_openlog
1944 fi
1945
1946 dnl ----------------------------------------------------------------
1947 dnl dmalloc support (deprecated in favor of -DCSRIMALLOC support)
1948 dnl if test $ol_enable_dmalloc != no ; then
1949 dnl     AC_CHECK_HEADERS(dmalloc.h)
1950 dnl     AC_CHECK_LIB(dmalloc, dmalloc_shutdown)
1951 dnl fi
1952
1953 dnl ----------------------------------------------------------------
1954 dnl SQL
1955 ol_link_sql=no
1956 if test $ol_enable_sql != no ; then
1957         AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
1958         if test $have_iodbc = yes ; then
1959                 ol_link_sql="-liodbc"
1960         else
1961                 AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
1962                 if test $have_odbc = yes ; then
1963                         ol_link_sql="-lodbc"
1964                 fi
1965         fi
1966
1967         if test $ol_link_sql != no ; then
1968                 SLAPD_SQL_LIBS="$ol_link_sql"
1969
1970         elif test $ol_enable_sql != auto ; then
1971                 AC_MSG_ERROR([could not locate suitable ODBC library])
1972         fi
1973 fi
1974
1975 dnl ----------------------------------------------------------------
1976 dnl TCL
1977 if test $ol_enable_tcl != no ; then
1978         AC_CHECK_HEADERS(tcl.h)
1979
1980         if test $ac_cv_header_tcl_h != yes ; then
1981                 have_tcl=no
1982         else
1983                 for lib in tcl tcl7.6 tcl8.0 tcl8.2 ; do
1984                         AC_CHECK_LIB($lib,main,
1985                           [have_tcl=yes
1986                            if test x"$ol_with_tcl_module" = "xstatic" ; then
1987                                SLAPD_LIBS="$SLAPD_LIBS -l${lib}"
1988                            else
1989                                MOD_TCL_LIB="-l${lib}"
1990                            fi;break],[have_tcl=no])
1991                 done
1992         fi
1993
1994         if test $have_tcl != yes ; then
1995                 AC_MSG_WARN([could not find -ltcl])
1996                 if test $ol_enable_tcl = yes ; then
1997                         AC_MSG_ERROR([could not find tcl, select appropriate options or disable])
1998                 fi
1999
2000                 ol_enable_tcl=no
2001         fi
2002 fi
2003
2004 dnl ----------------------------------------------------------------
2005 dnl ud needs termcap (should insert check here)
2006 ol_link_termcap=no
2007 AC_CHECK_HEADERS(termcap.h ncurses.h)
2008
2009 if test $ol_link_termcap = no ; then
2010         AC_CHECK_LIB(termcap, tputs, [have_termcap=yes], [have_termcap=no])
2011         if test $have_termcap = yes ; then
2012                 AC_DEFINE(HAVE_TERMCAP, 1, [define if you have -ltermcap])
2013                 ol_link_termcap=yes
2014                 TERMCAP_LIBS=-ltermcap
2015         fi
2016 fi
2017
2018 if test $ol_link_termcap = no ; then
2019         AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
2020         if test $have_ncurses = yes ; then
2021                 AC_DEFINE(HAVE_NCURSES, 1, [define if you have -lncurses])
2022                 ol_link_termcap=yes
2023                 TERMCAP_LIBS=-lncurses
2024         fi
2025 fi
2026
2027 if test $ol_link_termcap = no ; then
2028         AC_DEFINE(NO_TERMCAP,1, [define if you have no termcap support])
2029         TERMCAP_LIBS=
2030 fi
2031
2032 dnl ----------------------------------------------------------------
2033 dnl
2034 dnl Check for Cyrus SASL
2035 dnl
2036 ol_link_sasl=no
2037 ol_link_spasswd=no
2038 if test $ol_with_cyrus_sasl != no ; then
2039         AC_CHECK_HEADERS(sasl.h)
2040
2041         if test $ac_cv_header_sasl_h = yes ; then
2042                 AC_CHECK_LIB(sasl, sasl_client_init,
2043                         [have_cyrus_sasl=yes], [have_cyrus_sasl=no])
2044
2045                 if test $have_cyrus_sasl != no ; then
2046                         SASL_LIBS="-lsasl"
2047                         AC_DEFINE(HAVE_CYRUS_SASL,1,[define if you have Cyrus SASL])
2048                         ol_link_sasl=yes
2049                 fi
2050         fi
2051
2052         if test $ol_link_sasl = no ; then
2053                 if test $ol_with_cyrus_sasl != auto ; then
2054                         AC_MSG_ERROR([Could not locate Cyrus SASL])
2055                 else
2056                         AC_MSG_WARN([Could not locate Cyrus SASL])
2057                         AC_MSG_WARN([SASL authentication not supported!])
2058                         if test $ol_link_tls = no ; then
2059                                 AC_MSG_WARN([Strong authentication not supported!])
2060                         fi
2061                 fi
2062
2063         elif test $ol_enable_spasswd != no ; then
2064                 ol_link_spasswd=yes
2065         fi
2066
2067 else
2068         AC_MSG_WARN([SASL authentication not supported!])
2069         if test $ol_link_tls = no ; then
2070                 AC_MSG_WARN([Strong authentication not supported!])
2071         fi
2072 fi
2073
2074 dnl ----------------------------------------------------------------
2075 dnl Check for entropy sources
2076 if test $cross_compiling != yes ; then
2077         dev=no
2078         if test -r /dev/urandom ; then
2079                 dev="/dev/urandom";
2080         elif test -r /idev/urandom ; then
2081                 dev="/idev/urandom";
2082         elif test -r /dev/srandom ; then
2083                 dev="/dev/srandom";
2084         elif test -r /dev/random ; then
2085                 dev="/dev/random";
2086         elif test -r /idev/random ; then
2087                 dev="/idev/random";
2088         fi
2089
2090         if test $dev != no ; then
2091                 AC_DEFINE_UNQUOTED(URANDOM_DEVICE,"$dev",[set to urandom device])
2092         fi
2093 fi
2094
2095 dnl ----------------------------------------------------------------
2096 dnl
2097 dnl Check for fetch URL support
2098 dnl             should be extended to support other fetch URL APIs
2099 dnl
2100 ol_link_fetch=no
2101 if test $ol_with_fetch != no ; then
2102         OL_LIB_FETCH
2103
2104         if test $ol_cv_lib_fetch != no ; then
2105                 LDIF_LIBS="$LDIF_LIBS $ol_link_fetch"
2106                 ol_link_fetch=freebsd
2107
2108         elif test $ol_with_fetch != auto ; then
2109                 AC_MSG_ERROR(no suitable API for --with-fetch=$ol_with_fetch)
2110         fi 
2111 fi
2112
2113 dnl ----------------------------------------------------------------
2114 dnl
2115 dnl Check for GNU readline
2116 dnl
2117 ol_link_readline=no
2118 if test $ol_with_readline != no ; then
2119         AC_CHECK_HEADERS(readline/readline.h readline/history.h)
2120
2121         if test $ac_cv_header_readline_readline_h = yes ; then
2122                 save_LIBS="$LIBS"
2123                 LIBS="$TERMCAP_LIBS $LIBS"
2124                 AC_CHECK_LIB(readline, readline, 
2125                         [have_readline=yes], [have_readline=no])
2126                 LIBS="$save_LIBS"
2127                         
2128                 if test $have_readline = yes ; then
2129                         ol_with_readline=found
2130                         ol_link_readline=yes
2131
2132                         READLINE_LIBS="-lreadline"
2133                 fi
2134         fi
2135 fi
2136
2137 if test $ol_link_readline = yes ; then
2138         AC_DEFINE(HAVE_READLINE, 1, [define if you have -lreadline])
2139 fi
2140
2141
2142 dnl ----------------------------------------------------------------
2143 dnl FreeBSD (and others) have crypt(3) in -lcrypt
2144 if test $ol_enable_crypt != no ; then
2145         AC_CHECK_FUNC(crypt, [have_crypt=yes], [
2146                 AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
2147                         have_crypt=yes], [have_crypt=no])])
2148
2149         if test $have_crypt = yes ; then
2150                 AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
2151         else
2152                 AC_MSG_WARN(could not find crypt)
2153                 if test $ol_enable_crypt = yes ; then
2154                         AC_MSG_ERROR(could not find crypt, select appropriate options or disable)
2155                 fi
2156
2157                 AC_MSG_WARN(disabling crypt support)
2158                 ol_enable_crypt=no
2159         fi
2160 fi
2161
2162 dnl ----------------------------------------------------------------
2163 dnl FreeBSD (and others) have setproctitle(3) in -lutil
2164 if test $ol_enable_proctitle != no ; then
2165         AC_CHECK_FUNC(setproctitle,     [have_setproctitle=yes], [
2166                 AC_CHECK_LIB(util, setproctitle,
2167                         [have_setproctitle=yes
2168                         LUTIL_LIBS="$LUTIL_LIBS -lutil"],
2169                         [have_setproctitle=no
2170                         LIBOBJS="$LIBOBJS setproctitle.o"
2171                         LIBSRCS="$LIBSRCS setproctitle.c"])])
2172
2173         if test $have_setproctitle = yes ; then
2174                 AC_DEFINE(HAVE_SETPROCTITLE,1,
2175                         [define if setproctitle(3) is available])
2176         fi
2177 fi
2178
2179 dnl ----------------------------------------------------------------
2180 dnl Check for SLPv2 Compliant API Library
2181 if test $ol_enable_slp != no ; then
2182         AC_CHECK_HEADERS( slp.h )
2183
2184         if test $ac_cv_header_slp_h = yes ; then
2185                 AC_CHECK_LIB(slp, SLPOpen, [have_slp=yes], [have_slp=no])
2186                 if test $have_slp = yes ; then
2187                         AC_DEFINE(HAVE_SLP, 1, [define if you have -lslp])
2188                         SLAPD_SLP_LIBS=-lslp
2189                 fi
2190
2191         elif test $ol_enable_slp = yes ; then
2192                 AC_MSG_ERROR([SLP not found])
2193         fi
2194 fi
2195
2196 dnl ----------------------------------------------------------------
2197 dnl Checks for typedefs, structures, and compiler characteristics.
2198 AC_TYPE_MODE_T
2199 AC_TYPE_OFF_T
2200 AC_TYPE_PID_T
2201 AM_TYPE_PTRDIFF_T
2202 AC_TYPE_SIGNAL
2203 AC_TYPE_SIZE_T
2204
2205 AC_CHECK_TYPE(ssize_t, [signed int])
2206 AC_CHECK_TYPE(caddr_t,  [char *])
2207
2208 OL_TYPE_SOCKLEN_T
2209 AC_STRUCT_ST_BLKSIZE
2210 AC_HEADER_TIME
2211 AC_STRUCT_TM
2212 AC_TYPE_UID_T
2213 OL_TYPE_SIG_ATOMIC_T
2214
2215 dnl AC_TYPE_GETGROUPS
2216
2217 OL_STRUCT_PASSWD_PW_GECOS
2218 OL_STRUCT_PASSWD_PW_PASSWD
2219
2220 OL_C_UPPER_LOWER
2221 AC_C_CONST
2222 OL_C_VOLATILE
2223
2224 if test $cross_compiling = yes ; then
2225         AC_DEFINE(CROSS_COMPILING, 1, [define if cross compiling])
2226 else
2227         AC_C_BIGENDIAN
2228 fi
2229
2230 AC_COMPILE_CHECK_SIZEOF(short) 
2231 AC_COMPILE_CHECK_SIZEOF(int) 
2232 AC_COMPILE_CHECK_SIZEOF(long)
2233
2234 if test "$ac_cv_sizeof_int" -lt 4 ; then
2235         AC_MSG_WARN([OpenLDAP requires 'int' to be 32 bits or greater.])
2236
2237         AC_DEFINE(LBER_INT_T,long)
2238 else
2239         AC_DEFINE(LBER_INT_T,int)
2240 fi
2241
2242 AC_DEFINE(LBER_LEN_T,long)
2243 AC_DEFINE(LBER_SOCKET_T,int)
2244 AC_DEFINE(LBER_TAG_T,long)
2245
2246 dnl ----------------------------------------------------------------
2247 dnl Checks for library functions.
2248 AC_FUNC_MEMCMP
2249 dnl AM_FUNC_MKTIME dnl checks for sys/time.h and unistd.h
2250 AC_FUNC_STRFTIME
2251 dnl AM_FUNC_STRTOD
2252
2253 OL_FUNC_INET_ATON
2254
2255 dnl Check for NT specific routines
2256 AC_CHECK_FUNC(_spawnlp, AC_DEFINE(HAVE_SPAWNLP,1,[if you have spawnlp()]))
2257
2258 AC_CHECK_FUNC(_snprintf, [ac_cv_func_snprintf=yes
2259         AC_DEFINE(snprintf, _snprintf, [define to snprintf routine])
2260 ])
2261
2262 AC_CHECK_FUNC(_vsnprintf, [ac_cv_func_vsnprintf=yes
2263         AC_DEFINE(vsnprintf, _vsnprintf, [define to vsnprintf routine])
2264 ])
2265
2266 AC_FUNC_VPRINTF
2267
2268 if test $ac_cv_func_vprintf = yes ; then
2269         dnl check for vsnprintf
2270         AC_CHECK_FUNCS(vsnprintf vsprintf)
2271 fi
2272
2273 AC_CHECK_FUNCS(         \
2274         bcopy                   \
2275         closesocket             \
2276         chroot                  \
2277         endgrent                \
2278         endpwent                \
2279         fcntl                   \
2280         flock                   \
2281         getdtablesize   \
2282         getgrgid                \
2283         gethostname             \
2284         getpass                 \
2285         getpassphrase   \
2286         getpwuid                \
2287         getpwnam                \
2288         getspnam                \
2289         gettimeofday    \
2290         initgroups              \
2291         lockf                   \
2292         memcpy                  \
2293         memmove                 \
2294         pipe                    \
2295         read                    \
2296         recv                    \
2297         recvfrom                \
2298         setpwfile               \
2299         setgid                  \
2300         setegid                 \
2301         setsid                  \
2302         setuid                  \
2303         seteuid                 \
2304         sigaction               \
2305         signal                  \
2306         sigset                  \
2307         strdup                  \
2308         strerror                \
2309         strpbrk                 \
2310         strrchr                 \
2311         strsep                  \
2312         strstr                  \
2313         strtol                  \
2314         strtoul                 \
2315         strspn                  \
2316         sysconf                 \
2317         usleep                  \
2318         waitpid                 \
2319         wait4                   \
2320         write                   \
2321         send                    \
2322         sendto                  \
2323 )
2324
2325 dnl We actually may need to replace more than this.
2326 AC_REPLACE_FUNCS(getopt)
2327
2328 if test "$ac_cv_func_getopt" != yes; then
2329     LIBSRCS="$LIBSRCS getopt.c"
2330 fi
2331
2332 dnl ----------------------------------------------------------------
2333 # Check Configuration
2334 OL_SYS_ERRLIST
2335
2336 dnl ----------------------------------------------------------------
2337 dnl Sort out defines
2338
2339 if test "$ol_enable_debug" != no ; then
2340         AC_DEFINE(LDAP_DEBUG,1,
2341                 [define this to add debugging code])
2342 fi
2343 if test "$ol_enable_syslog" = yes ; then
2344         AC_DEFINE(LDAP_SYSLOG,1,
2345                 [define this to add syslog code])
2346 fi
2347 if test "$ol_enable_cache" = no ; then
2348         AC_DEFINE(LDAP_NOCACHE,1,
2349                 [define this to remove -lldap cache support])
2350 fi
2351 if test "$ol_link_kbind" != no ; then
2352         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
2353 fi
2354 if test "$ol_enable_proctitle" != no ; then
2355         AC_DEFINE(LDAP_PROCTITLE,1,
2356                 [define this for LDAP process title support])
2357 fi
2358 if test "$ol_enable_referrals" != no ; then
2359         AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS,LDAP_VENDOR_VERSION)
2360 fi
2361 if test "$ol_enable_local" != no; then
2362         AC_DEFINE(LDAP_PF_LOCAL,1,[define to support PF_LOCAL])
2363 fi
2364 if test "$ol_link_ipv6" != no; then
2365         AC_DEFINE(LDAP_PF_INET6,1,[define to support PF_INET6])
2366 fi
2367 if test "$ol_enable_cleartext" != no ; then
2368         AC_DEFINE(SLAPD_CLEARTEXT,1,[define to support cleartext passwords])
2369 fi
2370 if test "$ol_enable_crypt" != no ; then
2371         AC_DEFINE(SLAPD_CRYPT,1,[define to support crypt(3) passwords])
2372 fi
2373 if test "$ol_link_kpasswd" != no ; then
2374         AC_DEFINE(SLAPD_KPASSWD,1,[define to support Kerberos passwords])
2375 fi
2376 if test "$ol_link_spasswd" != no ; then
2377         AC_DEFINE(SLAPD_SPASSWD,1,[define to support SASL passwords])
2378 fi
2379 dnl if test "$ol_enable_multimaster" != no ; then
2380 dnl     AC_DEFINE(SLAPD_MULTIMASTER,1,[define to support multimaster replication])
2381 dnl fi
2382 if test "$ol_enable_phonetic" != no ; then
2383         AC_DEFINE(SLAPD_PHONETIC,1,[define to support phonetic])
2384 fi
2385 if test "$ol_enable_rlookups" != no ; then
2386         AC_DEFINE(SLAPD_RLOOKUPS,1,[define to support reverse lookups])
2387 fi
2388 if test "$ol_enable_aci" != no ; then
2389         AC_DEFINE(SLAPD_ACI_ENABLED,1,[define to support per-object ACIs])
2390 fi
2391
2392 if test "$ol_link_modules" != no ; then
2393         AC_DEFINE(SLAPD_MODULES,1,[define to support modules])
2394         BUILD_SLAPD=yes
2395         SLAPD_MODULES_LDFLAGS="-dlopen self"
2396 fi
2397
2398 if test "$ol_enable_bdb" != no ; then
2399         AC_DEFINE(SLAPD_BDB,1,[define to support BDB backend])
2400         BUILD_SLAPD=yes
2401         BUILD_BDB=yes
2402         if test "$ol_with_bdb_module" != static ; then
2403                 AC_DEFINE(SLAPD_BDB_DYNAMIC,1,
2404                         [define to support dynamic BDB backend])
2405                 BUILD_BDB=mod
2406                 BUILD_BDB_DYNAMIC=shared
2407                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-bdb/back_bdb.la"
2408         fi
2409 fi
2410
2411 if test "$ol_link_dnssrv" != no ; then
2412         AC_DEFINE(SLAPD_DNSSRV,1,[define to support DNS SRV backend])
2413         BUILD_SLAPD=yes
2414         BUILD_DNSSRV=yes
2415         if test "$ol_with_dnssrv_module" != static ; then
2416                 AC_DEFINE(SLAPD_DNSSRV_DYNAMIC,1,
2417                         [define to support dynamic DNS SRV backend])
2418                 BUILD_DNSSRV=mod
2419                 BUILD_DNSSRV_DYNAMIC=shared
2420                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-dnssrv/back_dnssrv.la"
2421         fi
2422 fi
2423
2424 if test "$ol_enable_ldap" != no ; then
2425         AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
2426         BUILD_SLAPD=yes
2427         BUILD_LDAP=yes
2428         if test "$ol_with_ldap_module" != static ; then
2429                 AC_DEFINE(SLAPD_LDAP_DYNAMIC,1,
2430                         [define to support dynamic LDAP backend])
2431                 BUILD_LDAP=mod
2432                 BUILD_LDAP_DYNAMIC=shared
2433                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldap/back_ldap.la"
2434         fi
2435 fi
2436
2437 if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
2438         AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
2439         BUILD_SLAPD=yes
2440         BUILD_LDBM=yes
2441         LDBM_LIB="-lldbm"
2442         if test "$ol_with_ldbm_module" != static ; then
2443                 AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
2444                         [define to support dynamic LDBM backend])
2445                 BUILD_LDBM=mod
2446                 BUILD_LDBM_DYNAMIC=shared
2447                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-ldbm/back_ldbm.la"
2448         fi
2449 fi
2450
2451 if test "$ol_enable_meta" != no ; then
2452         if test "$ol_enable_ldap" = no ; then
2453                 AC_MSG_ERROR([need --enable-ldap to use --enable-meta])
2454         fi
2455         if test "$ol_enable_rewrite" = no ; then
2456                 AC_MSG_ERROR([need --enable-rewrite to use --enable-meta])
2457         fi
2458         AC_DEFINE(SLAPD_META,1,[define to support LDAP Metadirectory backend])
2459         BUILD_SLAPD=yes
2460         BUILD_META=yes
2461         if test "$ol_with_meta_module" != static ; then
2462                 AC_DEFINE(SLAPD_META_DYNAMIC,1,
2463                         [define to support dynamic LDAP Metadirectory backend])
2464                 BUILD_META=mod
2465                 BUILD_META_DYNAMIC=shared
2466                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-meta/back_meta.la"
2467         fi
2468 fi
2469
2470 if test "$ol_enable_monitor" != no ; then
2471         AC_DEFINE(SLAPD_MONITOR,1,[define to support cn=Monitor backend])
2472         BUILD_SLAPD=yes
2473         BUILD_MONITOR=yes
2474         if test "$ol_with_monitor_module" != static ; then
2475                 AC_DEFINE(SLAPD_MONITOR_DYNAMIC,1,
2476                         [define to support dynamic cn=Monitor backend])
2477                 BUILD_MONITOR=mod
2478                 BUILD_MONITOR_DYNAMIC=shared
2479                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-monitor/back_monitor.la"
2480         fi
2481 fi
2482
2483 if test "$ol_enable_passwd" != no ; then
2484         AC_DEFINE(SLAPD_PASSWD,1,[define to support PASSWD backend])
2485         BUILD_SLAPD=yes
2486         BUILD_PASSWD=yes
2487         if test "$ol_with_passwd_module" != static ; then
2488                 AC_DEFINE(SLAPD_PASSWD_DYNAMIC,1,
2489                         [define to support dynamic PASSWD backend])
2490                 BUILD_PASSWD=mod
2491                 BUILD_PASSWD_DYNAMIC=shared
2492                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-passwd/back_passwd.la"
2493         fi
2494 fi
2495
2496 if test "$ol_link_perl" != no ; then
2497         AC_DEFINE(SLAPD_PERL,1,[define to support PERL backend])
2498         BUILD_SLAPD=yes
2499         BUILD_PERL=yes
2500         if test "$ol_with_perl_module" != static ; then
2501                 AC_DEFINE(SLAPD_PERL_DYNAMIC,1,
2502                         [define to support dynamic PERL backend])
2503                 BUILD_PERL=mod
2504                 BUILD_PERL_DYNAMIC=shared
2505                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-perl/back_perl.la"
2506         fi
2507 fi
2508
2509 if test "$ol_enable_shell" != no ; then
2510         AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
2511         BUILD_SLAPD=yes
2512         BUILD_SHELL=yes
2513         if test "$ol_with_shell_module" != static ; then
2514                 AC_DEFINE(SLAPD_SHELL_DYNAMIC,1,
2515                         [define to support dynamic SHELL backend])
2516                 BUILD_SHELL=mod
2517                 BUILD_SHELL_DYNAMIC=shared
2518                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-shell/back_shell.la"
2519         fi
2520 fi
2521
2522 if test "$ol_enable_tcl" != no ; then
2523         AC_DEFINE(SLAPD_TCL,1,[define to support TCL backend])
2524         BUILD_SLAPD=yes
2525         BUILD_TCL=yes
2526         if test "$ol_with_tcl_module" != static; then
2527                 AC_DEFINE(SLAPD_TCL_DYNAMIC,1,
2528                         [define to support dynamic TCL backend])
2529                 BUILD_TCL=mod
2530                 BUILD_TCL_DYNAMIC=shared
2531                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-tcl/back_tcl.la"
2532         fi
2533 fi
2534
2535 if test "$ol_link_sql" != no ; then
2536         AC_DEFINE(SLAPD_SQL,1,[define to support SQL backend])
2537         BUILD_SLAPD=yes
2538         BUILD_SQL=yes
2539         if test "$ol_with_sql_module" != static; then
2540                 AC_DEFINE(SLAPD_SQL_DYNAMIC,1,
2541                         [define to support dynamic SQL backend])
2542                 BUILD_SQL=mod
2543                 BUILD_SQL_DYNAMIC=shared
2544                 SLAPD_MODULES_LIST="$SLAPD_MODULES_LIST -dlopen \$(SLAP_DIR)back-sql/back_sql.la"
2545         fi
2546 fi
2547
2548 if test "$ol_enable_slurpd" != no -a "$ol_link_threads" != no -a \
2549         $BUILD_SLAPD = yes ; then
2550         BUILD_SLURPD=yes
2551 fi
2552
2553 if test "$ol_enable_rewrite" != no ; then
2554         AC_DEFINE(ENABLE_REWRITE,1,[define to enable rewriting in back-ldap and back-meta])
2555         BUILD_REWRITE=yes
2556         SLAPD_LIBS="$SLAPD_LIBS -lrewrite"
2557 fi
2558
2559 dnl ----------------------------------------------------------------
2560
2561 if test "$LINK_BINS_DYNAMIC" = yes; then
2562     LIB_LINKAGE=DYN
2563     LT_LIB_LINKAGE=shared
2564 else
2565     LIB_LINKAGE=STAT
2566     LT_LIB_LINKAGE=static
2567 fi
2568
2569 if test "$ac_cv_mingw32" = yes ; then
2570     PLAT=NT
2571     DYN_EXT=dll
2572 else
2573     PLAT=UNIX
2574     DYN_EXT=so
2575 fi
2576
2577 AC_SUBST(LIBSRCS)
2578
2579 AC_SUBST(PLAT)
2580 AC_SUBST(LIB_LINKAGE)
2581 AC_SUBST(LT_LIB_LINKAGE)
2582 AC_SUBST(DYN_EXT)
2583
2584 AC_SUBST(BUILD_SLAPD)
2585   AC_SUBST(BUILD_BDB)
2586   AC_SUBST(BUILD_DNSSRV)
2587   AC_SUBST(BUILD_LDAP)
2588   AC_SUBST(BUILD_LDBM)
2589   AC_SUBST(BUILD_META)
2590   AC_SUBST(BUILD_MONITOR)
2591   AC_SUBST(BUILD_PASSWD)
2592   AC_SUBST(BUILD_PERL)
2593   AC_SUBST(BUILD_SHELL)
2594   AC_SUBST(BUILD_SQL)
2595   AC_SUBST(BUILD_TCL)
2596   AC_SUBST(BUILD_BDB_DYNAMIC)
2597   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
2598   AC_SUBST(BUILD_LDAP_DYNAMIC)
2599   AC_SUBST(BUILD_LDBM_DYNAMIC)
2600   AC_SUBST(BUILD_META_DYNAMIC)
2601   AC_SUBST(BUILD_MONITOR_DYNAMIC)
2602   AC_SUBST(BUILD_PASSWD_DYNAMIC)
2603   AC_SUBST(BUILD_PERL_DYNAMIC)
2604   AC_SUBST(BUILD_SHELL_DYNAMIC)
2605   AC_SUBST(BUILD_SQL_DYNAMIC)
2606   AC_SUBST(BUILD_TCL_DYNAMIC)
2607 AC_SUBST(BUILD_SLURPD)
2608
2609 AC_SUBST(LDBM_LIB)
2610
2611 AC_SUBST(LDAP_LIBS)
2612 AC_SUBST(LDIF_LIBS)
2613 AC_SUBST(SLAPD_LIBS)
2614 AC_SUBST(SLURPD_LIBS)
2615 AC_SUBST(LDBM_LIBS)
2616 AC_SUBST(LTHREAD_LIBS)
2617 AC_SUBST(LUTIL_LIBS)
2618 AC_SUBST(WRAP_LIBS)
2619 AC_SUBST(MOD_TCL_LIB)
2620 AC_SUBST(LINK_BINS_DYNAMIC)
2621
2622 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
2623 AC_SUBST(SLAPD_MODULES_LDFLAGS)
2624 AC_SUBST(SLAPD_MODULES_LIST)
2625
2626 AC_SUBST(PERL_CPPFLAGS)
2627 AC_SUBST(SLAPD_PERL_LDFLAGS)
2628 AC_SUBST(MOD_PERL_LDFLAGS)
2629
2630 AC_SUBST(KRB4_LIBS)
2631 AC_SUBST(KRB5_LIBS)
2632 AC_SUBST(READLINE_LIBS)
2633 AC_SUBST(SASL_LIBS)
2634 AC_SUBST(TERMCAP_LIBS)
2635 AC_SUBST(TLS_LIBS)
2636 AC_SUBST(MODULES_LIBS)
2637 AC_SUBST(AUTH_LIBS)
2638
2639 AC_SUBST(SLAPD_SLP_LIBS)
2640
2641 AC_SUBST(SLAPD_SQL_LDFLAGS)
2642 AC_SUBST(SLAPD_SQL_LIBS)
2643 AC_SUBST(SLAPD_SQL_INCLUDES)
2644
2645 dnl ----------------------------------------------------------------
2646 dnl final output
2647 dnl
2648
2649 AC_OUTPUT( \
2650 Makefile:build/top.mk:Makefile.in:build/dir.mk \
2651 doc/Makefile:build/top.mk:doc/Makefile.in:build/dir.mk \
2652 doc/man/Makefile:build/top.mk:doc/man/Makefile.in:build/dir.mk \
2653 doc/man/man1/Makefile:build/top.mk:doc/man/man1/Makefile.in:build/man.mk \
2654 doc/man/man3/Makefile:build/top.mk:doc/man/man3/Makefile.in:build/man.mk \
2655 doc/man/man5/Makefile:build/top.mk:doc/man/man5/Makefile.in:build/man.mk \
2656 doc/man/man8/Makefile:build/top.mk:doc/man/man8/Makefile.in:build/man.mk \
2657 clients/Makefile:build/top.mk:clients/Makefile.in:build/dir.mk \
2658 clients/finger/Makefile:build/top.mk:clients/finger/Makefile.in:build/rules.mk \
2659 clients/mail500/Makefile:build/top.mk:clients/mail500/Makefile.in:build/rules.mk \
2660 clients/ud/Makefile:build/top.mk:clients/ud/Makefile.in:build/rules.mk \
2661 clients/maildap/Makefile:build/top.mk:clients/maildap/Makefile.in:build/rules.mk \
2662 clients/tools/Makefile:build/top.mk:clients/tools/Makefile.in:build/rules.mk \
2663 include/Makefile:build/top.mk:include/Makefile.in \
2664 libraries/Makefile:build/top.mk:libraries/Makefile.in:build/dir.mk      \
2665 libraries/libavl/Makefile:build/top.mk:libraries/libavl/Makefile.in:build/lib.mk:build/lib-static.mk    \
2666 libraries/liblber/Makefile:build/top.mk:libraries/liblber/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2667 libraries/libldap/Makefile:build/top.mk:libraries/libldap/Makefile.in:build/lib.mk:build/lib-shared.mk  \
2668 libraries/libldap_r/Makefile:build/top.mk:libraries/libldap_r/Makefile.in:build/lib.mk:build/lib-shared.mk      \
2669 libraries/libldbm/Makefile:build/top.mk:libraries/libldbm/Makefile.in:build/lib.mk:build/lib-static.mk  \
2670 libraries/libldif/Makefile:build/top.mk:libraries/libldif/Makefile.in:build/lib.mk:build/lib-static.mk  \
2671 libraries/liblunicode/Makefile:build/top.mk:libraries/liblunicode/Makefile.in:build/lib.mk:build/lib-static.mk  \
2672 libraries/liblutil/Makefile:build/top.mk:libraries/liblutil/Makefile.in:build/lib.mk:build/lib-static.mk        \
2673 libraries/librewrite/Makefile:build/top.mk:libraries/librewrite/Makefile.in:build/lib.mk:build/lib-static.mk    \
2674 servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
2675 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
2676 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
2677 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
2678 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
2679 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
2680 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
2681 servers/slapd/back-monitor/Makefile:build/top.mk:servers/slapd/back-monitor/Makefile.in:build/mod.mk \
2682 servers/slapd/back-passwd/Makefile:build/top.mk:servers/slapd/back-passwd/Makefile.in:build/mod.mk \
2683 servers/slapd/back-perl/Makefile:build/top.mk:servers/slapd/back-perl/Makefile.in:build/mod.mk \
2684 servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile.in:build/mod.mk \
2685 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
2686 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
2687 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
2688 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
2689 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
2690 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \
2691 tests/progs/Makefile:build/top.mk:tests/progs/Makefile.in:build/rules.mk \
2692 ,[
2693 date > stamp-h
2694 echo Please \"make depend\" to build dependencies
2695 ])