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