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