]> git.sur5r.net Git - openldap/blobdiff - configure.in
Remove readline detection
[openldap] / configure.in
index 2bb836f0f72718780c45527681a21ef3972715e3..b380323ba4da0741b22d4749c6c9b5e1c72a5ae4 100644 (file)
@@ -1,6 +1,6 @@
 dnl $OpenLDAP$
 dnl
-dnl Copyright 1998-2002 The OpenLDAP Foundation.  All Rights Reserved.
+dnl Copyright 1998-2003 The OpenLDAP Foundation.  All Rights Reserved.
 dnl 
 dnl Redistribution and use in source and binary forms, with or without
 dnl modification, are permitted only as authorized by the OpenLDAP
@@ -16,7 +16,7 @@ define([AC_INIT_BINSH],
 # $]OpenLDAP[$
 # from] translit([$OpenLDAP$], $")] [
 
-# Copyright 1998-2002 The OpenLDAP Foundation.  All Rights Reserved.
+# Copyright 1998-2003 The OpenLDAP Foundation.  All Rights Reserved.
 # 
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted only as authorized by the OpenLDAP
@@ -24,7 +24,7 @@ define([AC_INIT_BINSH],
 # http://www.OpenLDAP.org/license.html or in file LICENSE in the
 # top-level directory of the distribution.
 
-echo "Copyright 1998-2002 The OpenLDAP Foundation,  All Rights Reserved."
+echo "Copyright 1998-2003 The OpenLDAP Foundation,  All Rights Reserved."
 echo " Restrictions apply, see COPYRIGHT and LICENSE files."
 ])dnl
 dnl ----------------------------------------------------------------
@@ -60,10 +60,15 @@ fi
 SHTOOL="$ac_cv_shtool"
 dnl AC_SUBST(SHTOOL)dnl
 
-TB=`$SHTOOL echo -e %B`
-TN=`$SHTOOL echo -e %b`
+TB="`$SHTOOL echo -e '%B' 2>/dev/null`"
+TN="`$SHTOOL echo -e '%b' 2>/dev/null`"
 
-echo "Configuring $TB$OL_STRING$TN ..."
+OPENLDAP_CVS=""
+if test -d $ac_aux_dir/CVS; then
+       OPENLDAP_CVS="(from CVS sources) "
+fi
+
+echo "Configuring ${TB}${OL_STRING}${TN} ${OPENLDAP_CVS}..."
 
 dnl Determine host platform
 dnl            we try not to use this for much
@@ -126,10 +131,11 @@ AC_SUBST(ldap_subdir)dnl
 dnl ----------------------------------------------------------------
 dnl General "enable" options
 OL_ARG_ENABLE(debug,[  --enable-debug    enable debugging], yes)dnl
+OL_ARG_ENABLE(dynamic,[  --enable-dynamic        enable linking built binaries with dynamic libs], no)dnl
 OL_ARG_ENABLE(syslog,[  --enable-syslog          enable syslog support], auto)dnl
 OL_ARG_ENABLE(proctitle,[  --enable-proctitle    enable proctitle support], yes)dnl
-OL_ARG_ENABLE(cache,[  --enable-cache    enable caching (experimental)], no)dnl
-OL_ARG_ENABLE(referrals,[  --enable-referrals    enable LDAPv2+ Referrals (experimental)], no)dnl
+dnl OL_ARG_ENABLE(referrals,[  --enable-referrals        enable LDAPv2+ Referrals (experimental)], no)dnl
+ol_enable_referrals=${ol_enable_referrals-no}
 dnl OL_ARG_ENABLE(kbind,[  --enable-kbind        enable LDAPv2+ Kerberos IV bind (deprecated)], no)dnl
 ol_enable_kbind=${ol_enable_kbind-no}
 OL_ARG_ENABLE(ipv6,[  --enable-ipv6      enable IPv6 support], auto)dnl
@@ -143,12 +149,10 @@ dnl OL_ARG_ENABLE(dmalloc,[  --enable-dmalloc       enable debug malloc support], no
 
 OL_ARG_WITH(cyrus_sasl,[  --with-cyrus-sasl      with Cyrus SASL support],
        auto, [auto yes no] )
-OL_ARG_WITH(fetch,[  --with-fetch                with freeBSD fetch URL support],
+OL_ARG_WITH(fetch,[  --with-fetch                with fetch(3) URL support],
        auto, [auto yes no] )
 OL_ARG_WITH(kerberos,[  --with-kerberos          with Kerberos support],
        auto, [auto k5 k5only k425 kth k4 afs yes no])
-OL_ARG_WITH(readline,[  --with-readline          with readline support],
-       auto, [auto yes no] )
 OL_ARG_WITH(threads,[  --with-threads    with threads],
        auto, [auto nt posix mach pth lwp yes no manual] )
 OL_ARG_WITH(tls,[  --with-tls            with TLS/SSL support],
@@ -168,7 +172,6 @@ OL_ARG_ENABLE(slapd,[  --enable-slapd         enable building slapd], yes)dnl
 OL_ARG_ENABLE(aci,[    --enable-aci      enable per-object ACIs (experimental)], no)dnl
 OL_ARG_ENABLE(cleartext,[    --enable-cleartext          enable cleartext passwords], yes)dnl
 OL_ARG_ENABLE(crypt,[    --enable-crypt          enable crypt(3) passwords], no)dnl
-OL_ARG_ENABLE(dynamic,[    --enable-dynamic      enable linking built binaries with dynamic libs], no)dnl
 OL_ARG_ENABLE(kpasswd,[    --enable-kpasswd      enable Kerberos password verification], no)dnl
 OL_ARG_ENABLE(lmpasswd,[    --enable-lmpasswd    enable LAN Manager passwords], no)dnl
 OL_ARG_ENABLE(spasswd,[    --enable-spasswd      enable (Cyrus) SASL password verification], no)dnl
@@ -178,9 +181,11 @@ ol_enable_multimaster=${ol_enable_multimaster-no}
 OL_ARG_ENABLE(phonetic,[    --enable-phonetic    enable phonetic/soundex], no)dnl
 OL_ARG_ENABLE(rewrite,[    --enable-rewrite      enable DN rewriting in back-ldap and back-meta], no)dnl
 OL_ARG_ENABLE(rlookups,[    --enable-rlookups    enable reverse lookups of client hostnames], no)dnl
-OL_ARG_ENABLE(slp, [    --enable-slp          enable SLPv2 support], no)dnl     
+OL_ARG_ENABLE(slapi,[    --enable-slapi        enable installation of slapi library], no)dnl
+OL_ARG_ENABLE(slp,[    --enable-slp          enable SLPv2 support], no)dnl     
 OL_ARG_ENABLE(wrappers,[    --enable-wrappers    enable tcp wrapper support], no)dnl
 
+
 dnl SLAPD Backend options
 OL_ARG_ENABLE(bdb,[    --enable-bdb      enable Berkeley DB backend], yes)dnl
 OL_ARG_WITH(bdb_module,[    --with-bdb-module     module type static|dynamic], static,
@@ -188,6 +193,9 @@ OL_ARG_WITH(bdb_module,[    --with-bdb-module     module type static|dynamic], s
 OL_ARG_ENABLE(dnssrv,[    --enable-dnssrv        enable dnssrv backend], no)dnl
 OL_ARG_WITH(dnssrv_module,[    --with-dnssrv-module  module type static|dynamic], static,
        [static dynamic])
+OL_ARG_ENABLE(hdb,[    --enable-hdb      enable Hierarchical DB backend], no)dnl
+OL_ARG_WITH(hdb_module,[    --with-hdb-module     module type static|dynamic], static,
+       [static dynamic])
 OL_ARG_ENABLE(ldap,[    --enable-ldap    enable ldap backend], no)dnl
 OL_ARG_WITH(ldap_module,[    --with-ldap-module          module type static|dynamic], static,
        [static dynamic])
@@ -233,7 +241,6 @@ dnl ----------------------------------------------------------------
 AC_ARG_WITH(xxliboptions,[
 Library Generation & Linking Options])
 AC_ENABLE_STATIC
-dnl AC_DISABLE_SHARED
 AC_ENABLE_SHARED
 
 dnl ----------------------------------------------------------------
@@ -242,12 +249,18 @@ dnl General "enable" options
 # validate options
 if test $ol_enable_slapd = no ; then
        dnl SLAPD was specificallly disabled
+       if test $ol_enable_slapi = yes ; then
+               AC_MSG_WARN([slapd disabled, ignoring --enable-slapi argument])
+       fi
        if test $ol_enable_bdb = yes ; then
                AC_MSG_WARN([slapd disabled, ignoring --enable-bdb argument])
        fi
        if test $ol_enable_dnssrv = yes ; then
                AC_MSG_WARN([slapd disabled, ignoring --enable-dnssrv argument])
        fi
+       if test $ol_enable_hdb = yes ; then
+               AC_MSG_WARN([slapd disabled, ignoring --enable-hdb argument])
+       fi
        if test $ol_enable_ldap = yes ; then
                AC_MSG_WARN([slapd disabled, ignoring --enable-ldap argument])
        fi
@@ -308,6 +321,9 @@ if test $ol_enable_slapd = no ; then
        if test $ol_with_dnssrv_module != static ; then
                AC_MSG_WARN([slapd disabled, ignoring --with-dnssrv-module argument])
        fi
+       if test $ol_with_hdb_module != static ; then
+               AC_MSG_WARN([slapd disabled, ignoring --with-hdb-module argument])
+       fi
        if test $ol_with_ldap_module != static ; then
                AC_MSG_WARN([slapd disabled, ignoring --with-ldap-module argument])
        fi
@@ -346,8 +362,10 @@ if test $ol_enable_slapd = no ; then
        fi
 
        # force settings to no
+       ol_enable_slapi=no
        ol_enable_bdb=no
        ol_enable_dnssrv=no
+       ol_enable_hdb=no
        ol_enable_ldap=no
        ol_enable_ldbm=no
        ol_enable_meta=no
@@ -372,6 +390,7 @@ if test $ol_enable_slapd = no ; then
 
        ol_with_bdb_module=static
        ol_with_dnssrv_module=static
+       ol_with_hdb_module=static
        ol_with_ldap_module=static
        ol_with_ldbm_module=static
        ol_with_meta_module=static
@@ -405,6 +424,7 @@ elif test $ol_enable_ldbm = no ; then
        if test $ol_enable_modules != yes -a \
                $ol_enable_bdb = no -a \
                $ol_enable_dnssrv = no -a \
+               $ol_enable_hdb = no -a \
                $ol_enable_ldap = no -a \
                $ol_enable_meta = no -a \
                $ol_enable_monitor = no -a \
@@ -427,7 +447,7 @@ elif test $ol_enable_ldbm = no ; then
        ol_with_ldbm_type=no
        ol_with_ldbm_module=static
 
-       if test $ol_enable_bdb != no ; then
+       if test $ol_enable_bdb != no -o $ol_enable_hdb != no; then
                ol_with_ldbm_api=berkeley
        fi
 
@@ -446,11 +466,11 @@ else
                AC_MSG_ERROR([NDBM only supports LDBM type hash])
        fi
 
-       if test $ol_enable_bdb = yes ; then
+       if test $ol_enable_bdb = yes -o $ol_enable_hdb = yes ; then
                if test $ol_with_ldbm_api = auto ; then
                        ol_with_ldbm_api=berkeley
                elif test $ol_with_ldbm_api != berkeley ; then
-                       AC_MSG_ERROR([LDBM API not compatible with BDB])
+                       AC_MSG_ERROR([LDBM API not compatible with BDB/HDB])
                fi
 
        elif test $ol_enable_bdb = auto ; then
@@ -504,7 +524,6 @@ dnl ----------------------------------------------------------------
 dnl Initialize vars
 LDAP_LIBS=
 LDIF_LIBS=
-LDBM_LIB=
 LDBM_LIBS=
 LTHREAD_LIBS=
 LUTIL_LIBS=
@@ -517,8 +536,12 @@ BUILD_SLURPD=no
 
 BUILD_THREAD=no
 
+BUILD_SLAPI=no
+SLAPD_SLAPI_DEPEND=
+
 BUILD_BDB=no
 BUILD_DNSSRV=no
+BUILD_HDB=no
 BUILD_LDAP=no
 BUILD_LDBM=no
 BUILD_META=no
@@ -532,6 +555,7 @@ BUILD_TCL=no
 
 BUILD_BDB_DYNAMIC=static
 BUILD_DNSSRV_DYNAMIC=static
+BUILD_HDB_DYNAMIC=static
 BUILD_LDAP_DYNAMIC=static
 BUILD_LDBM_DYNAMIC=static
 BUILD_META_DYNAMIC=static
@@ -565,6 +589,9 @@ SASL_LIBS=
 TERMCAP_LIBS=
 TLS_LIBS=
 MODULES_LIBS=
+SLAPI_LIBS=
+LIBSLAPI=
+LIBSLAPITOOLS=
 AUTH_LIBS=
 
 SLAPD_SLP_LIBS=
@@ -642,14 +669,9 @@ AC_LIBTOOL_WIN32_DLL
 AC_LIBTOOL_DLOPEN
 AC_PROG_LIBTOOL
 
-AC_PROG_AWK
 OL_PROG_LN_H
 AC_PROG_LN_S
 
-AC_PATH_PROG(SENDMAIL, sendmail, /usr/lib/sendmail,
-       $PATH:/usr/libexec:/usr/lib:/usr/sbin:/usr/etc:/etc)
-AC_PATH_PROG(EDITOR, vi, /usr/ucb/vi, $PATH:/usr/ucb)
-
 dnl ----------------------------------------------------------------
 dnl Perl
 ol_link_perl=no
@@ -702,7 +724,7 @@ AC_MINGW32
 AC_EXEEXT
 AC_OBJEXT
 
-AC_DEFINE_UNQUOTED( EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
+AC_DEFINE_UNQUOTED(EXEEXT, "${EXEEXT}", [defined to be the EXE extension])
 
 dnl ----------------------------------------------------------------
 dnl BeOS requires -lbe -lroot -lnet
@@ -730,6 +752,14 @@ AC_CHECK_LIB(s, afopen, [
        AC_DEFINE(HAVE_AIX_SECURITY,1,[define if you have AIX security lib])
 ])
 
+dnl ----------------------------------------------------------------
+dnl Check for IBM OS/390
+case "$target" in
+*-ibm-openedition)
+       ac_cv_func_getopt=no
+       AC_DEFINE(BOTH_STRINGS_H,1,[define to use both <string.h> and <strings.h>])
+       ;;
+esac
 
 dnl ----------------------------------------------------------------
 dnl Check for module support
@@ -753,6 +783,7 @@ if test $ol_enable_modules != no ; then
 else
        ol_with_bdb_module=static
        ol_with_dnssrv_module=static
+       ol_with_hdb_module=static
        ol_with_ldap_module=static
        ol_with_ldbm_module=static
        ol_with_meta_module=static
@@ -818,9 +849,12 @@ AC_CHECK_HEADERS(  \
        sys/resource.h  \
        sys/select.h    \
        sys/socket.h    \
+       sys/stat.h              \
        sys/syslog.h    \
        sys/time.h              \
        sys/types.h             \
+       sys/ucred.h             \
+       sys/uio.h               \
        syslog.h                \
        termios.h               \
        unistd.h                \
@@ -1005,7 +1039,7 @@ fi
 dnl ----------------------------------------------------------------
 dnl PF_INET6 support requires getaddrinfo and INET6_ADDRSTRLEN
 dnl PF_LOCAL may use getaddrinfo in available
-AC_CHECK_FUNCS( getaddrinfo gai_strerror inet_ntop )
+AC_CHECK_FUNCS( getaddrinfo getnameinfo gai_strerror inet_ntop )
 
 ol_link_ipv6=no
 if test $ac_cv_func_getaddrinfo = no -o $ac_cv_func_inet_ntop = no ; then
@@ -1021,10 +1055,25 @@ elif test $ol_enable_ipv6 != no ; then
 #                      endif
                ], [ol_cv_inet6_addrstrlen=yes], [ol_cv_inet6_addrstrlen=no])])
 
-       if test $ol_cv_inet6_addrstrlen = yes ; then
+
+       AC_CACHE_CHECK([struct sockaddr_storage],ol_cv_struct_sockaddr_storage,[
+               AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+],[
+                       struct sockaddr_storage ss;
+],                     [ol_cv_struct_sockaddr_storage=yes],
+                       [ol_cv_struct_sockaddr_storage=no])])
+
+       if test $ol_cv_inet6_addrstrlen = yes \
+               -a $ol_cv_struct_sockaddr_storage = yes ; then
                ol_link_ipv6=yes
-       elif test $ol_enable_ipv6 = yes ; then
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_inet6_addrstrlen = no ; then
                AC_MSG_ERROR([IPv6 support requires INET6_ADDRSTRLEN])
+       elif test $ol_enable_ipv6 = yes \
+                       -a $ol_cv_struct_sockaddr_storage = no ; then
+               AC_MSG_ERROR([IPv6 support requires struct sockaddr_storage])
        fi
 fi
 
@@ -1087,7 +1136,7 @@ if test $ol_with_kerberos = yes -o $ol_with_kerberos = auto \
 
                else
                        have_krb5=no
-                       AC_MSG_WARN([Unrecongized Kerberos5 Implementation])
+                       AC_MSG_WARN([Unrecognized Kerberos5 Implementation])
                fi
 
                if test $have_krb5 = yes ; then
@@ -1220,7 +1269,8 @@ ol_link_tls=no
 if test $ol_with_tls != no ; then
        AC_CHECK_HEADERS(openssl/ssl.h ssl.h)
        
-       if test $ac_cv_header_openssl_ssl_h = yes -o $ac_cv_header_ssl_h = yes ; then
+       if test $ac_cv_header_openssl_ssl_h = yes \
+               -o $ac_cv_header_ssl_h = yes ; then
                AC_CHECK_LIB(ssl, SSLeay_add_ssl_algorithms, 
                        [have_ssleay=yes
                        need_rsaref=no],
@@ -1284,47 +1334,6 @@ if test $ol_enable_lmpasswd != no; then
        AC_DEFINE(SLAPD_LMHASH, 1, [define to support LAN Manager passwords])
 fi
 
-dnl ----------------------------------------------------------------
-dnl Tests for reentrant functions necessary to build a
-dnl thread_safe -lldap.
-AC_CHECK_FUNCS(                \
-       ctime_r                 \
-       gethostbyname_r gethostbyaddr_r \
-)
-
-if test "$ac_cv_func_ctime_r" = no ; then
-       ol_cv_func_ctime_r_nargs=0
-else
-       OL_FUNC_CTIME_R_NARGS
-dnl    OL_FUNC_CTIME_R_TYPE
-fi
-
-if test "$ac_cv_func_gethostbyname_r" = yes ; then
-       OL_FUNC_GETHOSTBYNAME_R_NARGS
-else
-       ol_cv_func_gethostbyname_r_nargs=0
-fi
-if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
-       OL_FUNC_GETHOSTBYADDR_R_NARGS
-else
-       ol_cv_func_gethostbyaddr_r_nargs=0
-fi
-
-if test "$ac_cv_func_ctime_r" = yes \
-       -a "$ol_cv_func_ctime_r_nargs" -ge 2 \
-       -a "$ol_cv_func_ctime_r_nargs" -le 3 \
-       -a "$ac_cv_func_gethostbyname_r" = yes \
-       -a "$ol_cv_func_gethostbyname_r_nargs" -ge 5 \
-       -a "$ol_cv_func_gethostbyname_r_nargs" -le 6 \
-       -a "$ac_cv_func_gethostbyaddr_r" = yes \
-       -a "$ol_cv_func_gethostbyaddr_r_nargs" -ge 5 \
-       -a "$ol_cv_func_gethostbyaddr_r_nargs" -le 6 \
-       ; then
-       AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_REENTRANT,1)
-fi
-
 dnl ----------------------------------------------------------------
 dnl Threads?
 ol_link_threads=no
@@ -1356,12 +1365,9 @@ if test $ol_with_threads = auto -o $ol_with_threads = yes \
        if test $ac_cv_header_pthread_h = yes ; then
                OL_POSIX_THREAD_VERSION
 
-               if test $ol_cv_pthread_version = final ; then
-                       AC_DEFINE(HAVE_PTHREADS_FINAL,1,
-                               [define if pthreads API compatible with final spec])
-               elif test $ol_cv_pthread_version = draft4 ; then
-                       AC_DEFINE(HAVE_PTHREADS_D4,1,
-                               [define if pthreads API compatible with draft4 spec])
+               if test $ol_cv_pthread_version != 0 ; then
+                       AC_DEFINE_UNQUOTED(HAVE_PTHREADS,$ol_cv_pthread_version,
+                               [define to pthreads API spec revision])
                else
                        AC_MSG_ERROR([unknown pthread version])
                fi
@@ -1456,9 +1462,6 @@ dnl                       [ol_cv_pthread_lpthread_lexc])
                OL_PTHREAD_TRY([-lpthreads],[ol_cv_pthread_lib_lpthreads])
 
                if test $ol_link_threads != no ; then
-                       AC_DEFINE(HAVE_PTHREADS,1,
-                               [define if you have POSIX Threads])
-
                        LTHREAD_LIBS="$LTHREAD_LIBS $ol_link_pthreads"
 
                        dnl save flags
@@ -1468,11 +1471,12 @@ dnl                     [ol_cv_pthread_lpthread_lexc])
 
                        dnl All POSIX Thread (final) implementations should have
                        dnl sched_yield instead of pthread yield.
-                       dnl check for both
-                       AC_CHECK_FUNCS(sched_yield pthread_yield)
+                       dnl check for both, and thr_yield for Solaris
+                       AC_CHECK_FUNCS(sched_yield pthread_yield thr_yield)
 
                        if test $ac_cv_func_sched_yield = no -a \
-                               $ac_cv_func_pthread_yield = no ; then
+                               $ac_cv_func_pthread_yield = no -a \
+                               $ac_cv_func_thr_yield = no ; then
                                dnl Digital UNIX has sched_yield() in -lrt
                                AC_CHECK_LIB(rt, sched_yield,
                                        [LTHREAD_LIBS="$LTHREAD_LIBS -lrt"
@@ -1481,12 +1485,6 @@ dnl                      [ol_cv_pthread_lpthread_lexc])
                                        ac_cv_func_sched_yield=yes],
                                        [ac_cv_func_sched_yield=no])
                        fi
-                       if test $ac_cv_func_sched_yield = no -a \
-                               $ac_cv_func_pthread_yield = no ; then
-                               dnl Solaris has sched_yield() stub in -lposix4
-                               dnl but we'll use thr_yield instead.
-                               AC_CHECK_FUNCS(thr_yield)
-                       fi
                        if test $ac_cv_func_sched_yield = no -a \
                                $ac_cv_func_pthread_yield = no -a \
                                "$ac_cv_func_thr_yield" = no ; then
@@ -1607,18 +1605,19 @@ int main(argc, argv)
 #endif
 #endif
 
-#if HAVE_PTHREADS_D4
+#if HAVE_PTHREADS < 6
        pthread_create(&t, pthread_attr_default, task, NULL);
 #else
        pthread_create(&t, NULL, task, NULL);
 #endif
 
-#if HAVE_SCHED_YIELD
-       sched_yield();  /* make sure task runs first */
-#else
-#ifdef HAVE_PTHREAD_YIELD
-       pthread_yield();        /* make sure task runs first */
-#endif
+       /* make sure task runs first */
+#if HAVE_THR_YIELD
+       thr_yield();
+#elif defined( HAVE_SCHED_YIELD )
+       sched_yield();
+#elif defined( HAVE_PTHREAD_YIELD )
+       pthread_yield();
 #endif
 
        exit(2);
@@ -1835,8 +1834,7 @@ if test $ol_link_threads != no -a $ol_link_threads != nt ; then
        fi
 
 dnl When in thread environment, use 
-dnl            #if defined( HAVE_REENTRANT_FUNCTIONS ) \ 
-dnl                    || defined( HAVE_FUNC_R )
+dnl            #if defined( HAVE_REENTRANT_FUNCTIONS ) || defined( HAVE_FUNC_R )
 dnl                    func_r(...);
 dnl            #else
 dnl            #       if defined( HAVE_THREADS ) 
@@ -1853,14 +1851,14 @@ dnl             _POSIX_REENTRANT_FUNCTIONS
 dnl            _POSIX_THREAD_SAFE_FUNCTIONS
 dnl            _POSIX_THREADSAFE_FUNCTIONS
 dnl
-dnl            and is currently defined in lthread.h
+dnl            and is currently defined in <ldap_pvt_thread.h>
 dnl
-dnl HAVE_THREADS is defined by lthread.h iff -UNO_THREADS
+dnl HAVE_THREADS is defined by <ldap_pvt_thread.h> iff -UNO_THREADS
 dnl 
-dnl libldap/*.c should only include <lthread.h> iff
+dnl libldap/*.c should only include <ldap_pvt_thread.h> iff
 dnl LDAP_R_COMPILE is defined.  ie:
 dnl            #ifdef LDAP_R_COMPILE
-dnl            #       include LDAP_R_COMPILE
+dnl            #       include <ldap_pvt_thread.h>
 dnl            #endif
 dnl
 dnl LDAP_R_COMPILE is defined by libldap_r/Makefile.in
@@ -1905,6 +1903,32 @@ if test $ol_link_threads != no ; then
        AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE,1)
 fi
 
+dnl ----------------------------------------------------------------
+dnl Tests for reentrant functions necessary to build -lldap_r
+AC_CHECK_FUNCS(                \
+       ctime_r                 \
+       gethostbyname_r gethostbyaddr_r \
+)
+
+if test "$ac_cv_func_ctime_r" = no ; then
+       ol_cv_func_ctime_r_nargs=0
+else
+       OL_FUNC_CTIME_R_NARGS
+dnl    OL_FUNC_CTIME_R_TYPE
+fi
+
+if test "$ac_cv_func_gethostbyname_r" = yes ; then
+       OL_FUNC_GETHOSTBYNAME_R_NARGS
+else
+       ol_cv_func_gethostbyname_r_nargs=0
+fi
+if test "$ac_cv_func_gethostbyaddr_r" = yes ; then
+       OL_FUNC_GETHOSTBYADDR_R_NARGS
+else
+       ol_cv_func_gethostbyaddr_r_nargs=0
+fi
+
 dnl ----------------------------------------------------------------
 ol_link_ldbm=no 
 
@@ -1954,6 +1978,9 @@ elif test $ol_enable_bdb != no -a $ol_link_ldbm = berkeley ; then
                ol_enable_bdb=no
        fi
 fi
+if test $ol_enable_hdb = yes -a $ol_link_ldbm != berkeley ; then
+       AC_MSG_ERROR(HDB: BerkeleyDB not available)
+fi
 
 if test $ol_link_ldbm = no -a $ol_with_ldbm_type = btree ; then
        AC_MSG_WARN(Could not find LDBM with BTREE support)
@@ -2009,12 +2036,16 @@ if test $ol_link_ldbm = no -a $ol_enable_ldbm != no ; then
 fi
 
 dnl ----------------------------------------------------------------
+
 if test $ol_enable_dynamic = yes -a $enable_shared = yes ; then
        BUILD_LIBS_DYNAMIC=shared
        AC_DEFINE(LDAP_LIBS_DYNAMIC, 1, [define if LDAP libs are dynamic])
+       LTSTATIC=""
 else
        BUILD_LIBS_DYNAMIC=static
+       LTSTATIC="-static"
 fi
+AC_SUBST(LTSTATIC)dnl
 
 dnl ----------------------------------------------------------------
 if test $ol_enable_wrappers != no ; then
@@ -2082,6 +2113,10 @@ dnl ----------------------------------------------------------------
 dnl SQL
 ol_link_sql=no
 if test $ol_enable_sql != no ; then
+       AC_CHECK_HEADERS(sql.h sqlext.h,[],[
+               AC_MSG_ERROR([could not locate SQL headers])
+       ])
+
        AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
        if test $have_iodbc = yes ; then
                ol_link_sql="-liodbc"
@@ -2195,6 +2230,12 @@ if test $ol_with_cyrus_sasl != no ; then
                if test $ol_enable_spasswd != no ; then
                        ol_link_spasswd=yes
                fi
+
+               ac_save_LIBS="$LIBS"
+               LIBS="$LIBS $ol_link_sasl"
+               AC_CHECK_FUNC(sasl_version, [AC_DEFINE(HAVE_SASL_VERSION,1,
+                       [define if your SASL library has sasl_version()])])
+               LIBS="$ac_save_LIBS"
        fi
 
 else
@@ -2275,10 +2316,16 @@ fi
 dnl ----------------------------------------------------------------
 dnl FreeBSD (and others) have crypt(3) in -lcrypt
 if test $ol_enable_crypt != no ; then
+       save_LIBS="$LIBS"
+       LIBS="$TLS_LIBS $LIBS"
+
        AC_CHECK_FUNC(crypt, [have_crypt=yes], [
+               LIBS="$save_LIBS"
                AC_CHECK_LIB(crypt, crypt, [LUTIL_LIBS="$LUTIL_LIBS -lcrypt"
                        have_crypt=yes], [have_crypt=no])])
 
+       LIBS="$save_LIBS"
+
        if test $have_crypt = yes ; then
                AC_DEFINE(HAVE_CRYPT,1, [define if crypt(3) is available])
        else
@@ -2400,7 +2447,7 @@ AC_FUNC_VPRINTF
 
 if test $ac_cv_func_vprintf = yes ; then
        dnl check for vsnprintf
-       AC_CHECK_FUNCS(vsnprintf vsprintf)
+       AC_CHECK_FUNCS(snprintf vsnprintf)
 fi
 
 AC_CHECK_FUNCS(                \
@@ -2431,7 +2478,6 @@ AC_CHECK_FUNCS(           \
        read                    \
        recv                    \
        recvfrom                \
-       recvmsg                 \
        setpwfile               \
        setgid                  \
        setegid                 \
@@ -2456,15 +2502,28 @@ AC_CHECK_FUNCS(         \
        wait4                   \
        write                   \
        send                    \
+       sendmsg                 \
        sendto                  \
 )
 
 dnl We actually may need to replace more than this.
-AC_REPLACE_FUNCS(getopt)
+AC_REPLACE_FUNCS(getopt getpeereid)
 
 if test "$ac_cv_func_getopt" != yes; then
        LIBSRCS="$LIBSRCS getopt.c"
 fi
+if test "$ac_cv_func_getpeereid" != yes; then
+       OL_MSGHDR_MSG_ACCRIGHTS
+       LIBSRCS="$LIBSRCS getpeereid.c"
+fi
+if test "$ac_cv_func_snprintf" != yes -o "$ac_cv_func_vsnprintf" != yes; then
+       if test "$ac_cv_func_snprintf" != yes; then
+               AC_DEFINE(snprintf, ber_pvt_snprintf, [define to snprintf routine])
+       fi
+       if test "$ac_cv_func_vsnprintf" != yes; then
+               AC_DEFINE(vsnprintf, ber_pvt_vsnprintf, [define to snprintf routine])
+       fi
+fi
 
 dnl ----------------------------------------------------------------
 # Check Configuration
@@ -2473,6 +2532,24 @@ OL_SYS_ERRLIST
 dnl ----------------------------------------------------------------
 dnl Sort out defines
 
+if test "$ol_enable_slapi" != no ; then
+       dnl This check is donel also if --enable-modules is used;
+       dnl it is duplicated here, 'cause it'd be cached anyway
+       AC_CHECK_HEADERS(ltdl.h)
+
+       if test $ac_cv_header_ltdl_h != yes ; then
+               AC_MSG_ERROR([could not locate <ltdl.h>])
+       fi
+       AC_CHECK_LIB(ltdl, lt_dlinit, [
+               SLAPI_LIBS=-lltdl
+               LIBSLAPI=./libslapi.a
+               LIBSLAPITOOLS=../libslapi.a
+               AC_DEFINE(HAVE_LIBLTDL,1,[define if you have libtool -ltdl])
+       ],[AC_MSG_ERROR([could not locate libtool -lltdl])])
+
+       AC_DEFINE(LDAP_SLAPI,1, [define this to add SLAPI code])
+fi
+
 if test "$ol_enable_debug" != no ; then
        AC_DEFINE(LDAP_DEBUG,1,
                [define this to add debugging code])
@@ -2481,10 +2558,6 @@ if test "$ol_enable_syslog" = yes ; then
        AC_DEFINE(LDAP_SYSLOG,1,
                [define this to add syslog code])
 fi
-if test "$ol_enable_cache" = no ; then
-       AC_DEFINE(LDAP_NOCACHE,1,
-               [define this to remove -lldap cache support])
-fi
 if test "$ol_link_kbind" != no ; then
        AC_DEFINE(LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND,LDAP_VENDOR_VERSION)
 fi
@@ -2562,6 +2635,21 @@ if test "$ol_link_dnssrv" != no ; then
        fi
 fi
 
+if test "$ol_enable_hdb" != no ; then
+       AC_DEFINE(SLAPD_HDB,1,[define to support HDB backend])
+       BUILD_SLAPD=yes
+       BUILD_HDB=yes
+       if test "$ol_with_hdb_module" != static ; then
+               AC_DEFINE(SLAPD_HDB_DYNAMIC,1,
+                       [define to support dynamic HDB backend])
+               BUILD_HDB=mod
+               BUILD_HDB_DYNAMIC=shared
+               SLAPD_DYNAMIC_BACKENDS="$SLAPD_DYNAMIC_BACKENDS back-hdb"
+       else
+               SLAPD_STATIC_BACKENDS="$SLAPD_STATIC_BACKENDS back-hdb"
+       fi
+fi
+
 if test "$ol_enable_ldap" != no ; then
        AC_DEFINE(SLAPD_LDAP,1,[define to support LDAP backend])
        BUILD_SLAPD=yes
@@ -2581,7 +2669,6 @@ if test "$ol_link_ldbm" != no -a $ol_enable_ldbm != no; then
        AC_DEFINE(SLAPD_LDBM,1,[define to support LDBM backend])
        BUILD_SLAPD=yes
        BUILD_LDBM=yes
-       LDBM_LIB="-lldbm"
        if test "$ol_with_ldbm_module" != static ; then
                AC_DEFINE(SLAPD_LDBM_DYNAMIC,1,
                        [define to support dynamic LDBM backend])
@@ -2677,6 +2764,9 @@ if test "$ol_link_perl" != no ; then
 fi
 
 if test "$ol_enable_shell" != no ; then
+       if test "$ol_link_thread" != no ; then
+               AC_MSG_WARN([Use of --without-threads is recommended with back-shell])
+       fi
        AC_DEFINE(SLAPD_SHELL,1,[define to support SHELL backend])
        BUILD_SLAPD=yes
        BUILD_SHELL=yes
@@ -2731,6 +2821,12 @@ if test "$ol_enable_rewrite" != no ; then
        BUILD_REWRITE=yes
 fi
 
+if test "$ol_enable_slapi" != no ; then
+       AC_DEFINE(ENABLE_SLAPI,1,[define to enable slapi library])
+       BUILD_SLAPI=yes
+       SLAPD_SLAPI_DEPEND=libslapi.a
+fi
+
 dnl ----------------------------------------------------------------
 
 dnl
@@ -2745,13 +2841,22 @@ else
        PLAT=UNIX
 fi
 
+if test -z "$SLAPD_STATIC_BACKENDS"; then
+       SLAPD_NO_STATIC='#'
+else
+       SLAPD_NO_STATIC=
+fi
+
 AC_SUBST(LIBSRCS)
 AC_SUBST(PLAT)
 AC_SUBST(BUILD_LIBS_DYNAMIC)
 
 AC_SUBST(BUILD_SLAPD)
+  AC_SUBST(BUILD_SLAPI)
+  AC_SUBST(SLAPD_SLAPI_DEPEND)
   AC_SUBST(BUILD_BDB)
   AC_SUBST(BUILD_DNSSRV)
+  AC_SUBST(BUILD_HDB)
   AC_SUBST(BUILD_LDAP)
   AC_SUBST(BUILD_LDBM)
   AC_SUBST(BUILD_META)
@@ -2764,6 +2869,7 @@ AC_SUBST(BUILD_SLAPD)
   AC_SUBST(BUILD_TCL)
   AC_SUBST(BUILD_BDB_DYNAMIC)
   AC_SUBST(BUILD_DNSSRV_DYNAMIC)
+  AC_SUBST(BUILD_HDB_DYNAMIC)
   AC_SUBST(BUILD_LDAP_DYNAMIC)
   AC_SUBST(BUILD_LDBM_DYNAMIC)
   AC_SUBST(BUILD_META_DYNAMIC)
@@ -2776,8 +2882,6 @@ AC_SUBST(BUILD_SLAPD)
   AC_SUBST(BUILD_TCL_DYNAMIC)
 AC_SUBST(BUILD_SLURPD)
 
-AC_SUBST(LDBM_LIB)
-
 AC_SUBST(LDAP_LIBS)
 AC_SUBST(LDIF_LIBS)
 AC_SUBST(SLAPD_LIBS)
@@ -2791,6 +2895,7 @@ AC_SUBST(MOD_TCL_LIB)
 AC_SUBST(SLAPD_MODULES_CPPFLAGS)
 AC_SUBST(SLAPD_MODULES_LDFLAGS)
 
+AC_SUBST(SLAPD_NO_STATIC)
 AC_SUBST(SLAPD_STATIC_BACKENDS)
 AC_SUBST(SLAPD_DYNAMIC_BACKENDS)
 
@@ -2805,6 +2910,9 @@ AC_SUBST(SASL_LIBS)
 AC_SUBST(TERMCAP_LIBS)
 AC_SUBST(TLS_LIBS)
 AC_SUBST(MODULES_LIBS)
+AC_SUBST(SLAPI_LIBS)
+AC_SUBST(LIBSLAPI)
+AC_SUBST(LIBSLAPITOOLS)
 AC_SUBST(AUTH_LIBS)
 
 AC_SUBST(SLAPD_SLP_LIBS)
@@ -2847,6 +2955,7 @@ servers/Makefile:build/top.mk:servers/Makefile.in:build/dir.mk \
 servers/slapd/Makefile:build/top.mk:servers/slapd/Makefile.in:build/srv.mk \
 servers/slapd/back-bdb/Makefile:build/top.mk:servers/slapd/back-bdb/Makefile.in:build/mod.mk \
 servers/slapd/back-dnssrv/Makefile:build/top.mk:servers/slapd/back-dnssrv/Makefile.in:build/mod.mk \
+servers/slapd/back-hdb/Makefile:build/top.mk:servers/slapd/back-hdb/Makefile.in:build/mod.mk \
 servers/slapd/back-ldap/Makefile:build/top.mk:servers/slapd/back-ldap/Makefile.in:build/mod.mk \
 servers/slapd/back-ldbm/Makefile:build/top.mk:servers/slapd/back-ldbm/Makefile.in:build/mod.mk \
 servers/slapd/back-meta/Makefile:build/top.mk:servers/slapd/back-meta/Makefile.in:build/mod.mk \
@@ -2858,6 +2967,7 @@ servers/slapd/back-shell/Makefile:build/top.mk:servers/slapd/back-shell/Makefile
 servers/slapd/back-sql/Makefile:build/top.mk:servers/slapd/back-sql/Makefile.in:build/mod.mk \
 servers/slapd/back-tcl/Makefile:build/top.mk:servers/slapd/back-tcl/Makefile.in:build/mod.mk \
 servers/slapd/shell-backends/Makefile:build/top.mk:servers/slapd/shell-backends/Makefile.in:build/srv.mk \
+servers/slapd/slapi/Makefile:build/top.mk:servers/slapd/slapi/Makefile.in:build/lib.mk:build/lib-shared.mk  \
 servers/slapd/tools/Makefile:build/top.mk:servers/slapd/tools/Makefile.in \
 servers/slurpd/Makefile:build/top.mk:servers/slurpd/Makefile.in:build/srv.mk \
 tests/Makefile:build/top.mk:tests/Makefile.in:build/dir.mk \