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