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