]> git.sur5r.net Git - openldap/blobdiff - configure.in
Compatibility with 2.4
[openldap] / configure.in
index 8343d6cc002e9d33d0ff70ee321b405faaede66b..ede3d8e67b70f27c0d396a35d8d9104a93a519e0 100644 (file)
@@ -1,7 +1,7 @@
 dnl $OpenLDAP$
 dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
-dnl Copyright 1998-2006 The OpenLDAP Foundation.
+dnl Copyright 1998-2007 The OpenLDAP Foundation.
 dnl All rights reserved.
 dnl
 dnl Redistribution and use in source and binary forms, with or without
@@ -23,7 +23,7 @@ define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
 define([AC_LIBTOOL_LANG_GCJ_CONFIG], [:])dnl
 dnl ================================================================
 dnl Configure.in for OpenLDAP
-AC_COPYRIGHT([[Copyright 1998-2006 The OpenLDAP Foundation. All rights reserved.
+AC_COPYRIGHT([[Copyright 1998-2007 The OpenLDAP Foundation. All rights reserved.
 Restrictions apply, see COPYRIGHT and LICENSE files.]])
 AC_REVISION([$OpenLDAP$])
 AC_INIT([OpenLDAP],,[http://www.openldap.org/its/])
@@ -93,7 +93,7 @@ AH_TOP([
 /* begin of portable.h.pre */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2006 The OpenLDAP Foundation
+ * Copyright 1998-2007 The OpenLDAP Foundation
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -247,12 +247,15 @@ 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],
        auto, [auto openssl yes no] )
-OL_ARG_WITH(yielding_select,[  --with-yielding-select  with implicitly yielding select],
+OL_ARG_WITH(yielding_select,
+       [  --with-yielding-select  with implicitly yielding select],
        auto, [auto yes no manual] )
-OL_ARG_WITH(multiple_precision,[  --with-multiple-precision
-                          multiple precision support for statistics
-                         auto|bignum|gmp],
-       auto, [auto bignum gmp yes no] )
+OL_ARG_WITH(mp,
+       [  --with-mp               with multiple precision statistics auto|longlong|long|bignum|gmp],
+       auto, [auto longlong long bignum gmp yes no])
+OL_ARG_WITH(odbc,
+       [  --with-odbc             with specific ODBC support iodbc|unixodbc|auto],
+       auto, [auto iodbc unixodbc] )
 
 dnl ----------------------------------------------------------------
 dnl Server options
@@ -338,6 +341,7 @@ OL_ARG_ENABLE(sql,[    --enable-sql   enable sql backend],
 dnl ----------------------------------------------------------------
 dnl SLAPD Overlay Options
 Overlays="accesslog \
+       auditlog \
        denyop \
        dyngroup \
        dynlist \
@@ -359,6 +363,8 @@ OL_ARG_ENABLE(overlays,[    --enable-overlays         enable all available overlays],
        --, [no yes mod])dnl
 OL_ARG_ENABLE(accesslog,[    --enable-accesslog          In-Directory Access Logging overlay],
        no, [no yes mod], ol_enable_overlays)
+OL_ARG_ENABLE(auditlog,[    --enable-auditlog    Audit Logging overlay],
+       no, [no yes mod], ol_enable_overlays)
 OL_ARG_ENABLE(denyop,[    --enable-denyop        Deny Operation overlay],
        no, [no yes mod], ol_enable_overlays)
 OL_ARG_ENABLE(dyngroup,[    --enable-dyngroup    Dynamic Group overlay],
@@ -612,6 +618,7 @@ BUILD_SHELL=no
 BUILD_SQL=no
 
 BUILD_ACCESSLOG=no
+BUILD_AUDITLOG=no
 BUILD_DENYOP=no
 BUILD_DYNGROUP=no
 BUILD_DYNLIST=no
@@ -854,11 +861,11 @@ AC_HEADER_DIRENT
 AC_HEADER_SYS_WAIT
 AC_HEADER_TIOCGWINSZ
 
-AC_CHECK_HEADERS(              \
+AC_CHECK_HEADERS(      \
        arpa/inet.h             \
-       arpa/nameser.h          \
+       arpa/nameser.h  \
        assert.h                \
-       bits/types.h            \
+       bits/types.h    \
        conio.h                 \
        crypt.h                 \
        direct.h                \
@@ -871,7 +878,6 @@ AC_CHECK_HEADERS(           \
        libutil.h               \
        limits.h                \
        locale.h                \
-       netinet/tcp.h           \
        malloc.h                \
        memory.h                \
        psap.h                  \
@@ -888,11 +894,11 @@ AC_CHECK_HEADERS(         \
        sys/errno.h             \
        sys/ioctl.h             \
        sys/param.h             \
-       sys/resource.h          \
-       sys/select.h            \
-       sys/socket.h            \
+       sys/resource.h  \
+       sys/select.h    \
+       sys/socket.h    \
        sys/stat.h              \
-       sys/syslog.h            \
+       sys/syslog.h    \
        sys/time.h              \
        sys/types.h             \
        sys/uio.h               \
@@ -900,16 +906,24 @@ AC_CHECK_HEADERS(         \
        termios.h               \
        unistd.h                \
        utime.h                 \
-       winsock.h               \
-       winsock2.h              \
 )
 
+dnl Only check Winsock on MinGW
+if test "$ac_cv_mingw32" = yes ; then
+       AC_CHECK_HEADERS( winsock.h winsock2.h )
+fi
+
 AC_CHECK_HEADERS( resolv.h, [], [],
-[$ac_includes_default]
+[$ac_includes_default
 #include <netinet/in.h>
-)
+])
+
+AC_CHECK_HEADERS( netinet/tcp.h, [], [],
+[$ac_includes_default
+#include <netinet/in.h>
+])
 
-AC_CHECK_HEADERS(sys/ucred.h, [], [],
+AC_CHECK_HEADERS( sys/ucred.h, [], [],
 [$ac_includes_default
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -930,9 +944,7 @@ fi
 dnl The following is INTENTIONALLY scripted out because shell does not
 dnl support variable names with the '@' character, which is what
 dnl autoconf would try to generate if one merely used AC_SEARCH_LIBS
-dnl
-dnl Skip Winsock tests on Cygwin
-if test "$ac_cv_cygwin" != yes && test "$ac_cv_header_winsock_h" = yes; then
+if test "$ac_cv_header_winsock_h" = yes; then
 AC_CACHE_CHECK([for winsock], [ol_cv_winsock],
 save_LIBS="$LIBS"
 for curlib in ws2_32 wsock32; do
@@ -1587,12 +1599,12 @@ dnl                     [ol_cv_pthread_lpthread_lexc])
                        fi
 
                        ol_replace_broken_yield=no
-                       case "$target" in
-                       *-*-linux*) 
-                               AC_CHECK_FUNCS(nanosleep)
-                               ol_replace_broken_yield=yes
-                       ;;
-                       esac
+dnl                    case "$target" in
+dnl                    *-*-linux*) 
+dnl                            AC_CHECK_FUNCS(nanosleep)
+dnl                            ol_replace_broken_yield=yes
+dnl                    ;;
+dnl                    esac
 
                        if test $ol_replace_broken_yield = yes ; then
                                AC_DEFINE([REPLACE_BROKEN_YIELD],1,
@@ -2160,16 +2172,34 @@ if test $ol_enable_sql != no ; then
        sql_LIBS="$LIBS"
        LIBS="$LTHREAD_LIBS"
 
-       AC_CHECK_LIB(iodbc,SQLDriverConnect,[have_iodbc=yes],[have_iodbc=no])
-       if test $have_iodbc = yes ; then
-               ol_link_sql="-liodbc"
-       else
-               AC_CHECK_LIB(odbc,SQLDriverConnect,[have_odbc=yes],[have_odbc=no])
-               if test $have_odbc = yes ; then
-                       ol_link_sql="-lodbc"
-               fi
+       if test $ol_with_odbc = auto ; then
+               ol_with_odbc="iodbc unixodbc"
        fi
 
+       for odbc in $ol_with_odbc ; do
+               if test $ol_link_sql = no ; then
+                       case $odbc in
+                       iodbc)
+                               AC_CHECK_LIB(iodbc, SQLDriverConnect, [have_iodbc=yes], [have_iodbc=no])
+                               if test $have_iodbc = yes ; then
+                                       ol_link_sql="-liodbc"
+                               fi
+                               ;;
+
+                       unixodbc)
+                               AC_CHECK_LIB(odbc, SQLDriverConnect, [have_odbc=yes], [have_odbc=no])
+                               if test $have_odbc = yes ; then
+                                       ol_link_sql="-lodbc"
+                               fi
+                               ;;
+
+                       *)
+                               AC_MSG_ERROR([unknown ODBC library])
+                               ;;
+                       esac
+               fi
+       done
+
        LIBS="$sql_LIBS"
 
        if test $ol_link_sql != no ; then
@@ -2320,7 +2350,6 @@ if test $ol_enable_proctitle != no ; then
 fi
 
 dnl ----------------------------------------------------------------
-dnl Check for SLPv2 Compliant API Library
 if test $ol_enable_slp != no ; then
        AC_CHECK_HEADERS( slp.h )
 
@@ -2336,99 +2365,6 @@ if test $ol_enable_slp != no ; then
        fi
 fi
 
-dnl ----------------------------------------------------------------
-dnl Check for multiple precision support
-if test "$ol_with_multiple_precision" != "no" ; then
-       ol_have_bignum=no
-       ol_have_gmp=no
-
-       AC_CHECK_HEADERS(openssl/bn.h bn.h)
-       AC_CHECK_HEADERS(openssl/crypto.h crypto.h)
-       AC_CHECK_HEADERS( gmp.h )
-
-       if test "$ol_with_tls" = "found" ; then
-               ol_have_bn_h=no
-               ol_have_crypto_h=no
-
-               if test "$ac_cv_header_openssl_bn_h" = "yes" ||
-                  test "$ac_cv_header_bn_h" = "yes" ; then
-                       ol_have_bn_h=yes
-               fi
-
-               if test "$ac_cv_header_openssl_crypto_h" = "yes" ||
-                  test "$ac_cv_header_crypto_h" = "yes" ; then
-                       ol_have_crypto_h=yes
-               fi
-
-               if test "$ol_have_bn_h" = "yes" &&
-                  test "$ol_have_crypto_h" = "yes" ; then
-                       ol_have_bignum=yes
-               fi
-       fi
-
-       if test $ac_cv_header_gmp_h = yes ; then
-               AC_CHECK_LIB(gmp, __gmpz_add_ui, [have_gmp=yes], [have_gmp=no])
-               if test $have_gmp = yes ; then
-                       ol_have_gmp=yes
-               fi
-       fi
-
-       AC_MSG_CHECKING([for multiple precision support])
-
-       ol_mp_support="none"
-       case "$ol_with_multiple_precision" in
-       auto)
-               dnl preferred sequence:
-               dnl - OpenSSL's BIGNUM (if libssl is already linked)
-               dnl - GNU's MP
-               dnl - unsigned long
-               if test "$ol_have_bignum" = "yes" ; then
-                       ol_mp_support="bignum"
-               else
-                       if test "$ol_have_gmp" = "yes" ; then
-                               ol_mp_support="gmp"
-                       fi
-               fi
-               ;;
-       bignum)
-               if test "$ol_have_bignum" != "yes" ; then
-                       AC_MSG_ERROR([OpenSSL's BIGNUM not available])
-               fi
-               ol_mp_support="bignum"
-               ;;
-       gmp)
-               if test "$ol_have_gmp" != "yes" ; then
-                       AC_MSG_ERROR([GMP not available])
-               fi
-               ol_mp_support="gmp"
-               ;;
-       yes)
-               if test "$ol_have_bignum" = "yes" ; then
-                       ol_mp_support="bignum"
-               elif test "$ol_have_gmp" = "yes" ; then
-                       ol_mp_support="gmp"
-               else
-                       AC_MSG_ERROR([not available])
-               fi
-               ;;
-       esac
-
-       case "$ol_mp_support" in
-       bignum)
-               AC_DEFINE(HAVE_BIGNUM, 1,
-                       [define if you have OpenSSL's BIGNUM])
-               ;;
-       gmp)
-               AC_DEFINE(HAVE_GMP, 1, [define if you have -lgmp])
-               SLAPD_GMP_LIBS=-lgmp
-               ;;
-       none)
-               ;;
-       esac
-
-       AC_MSG_RESULT($ol_mp_support)
-fi
-
 dnl ----------------------------------------------------------------
 dnl Checks for typedefs, structures, and compiler characteristics.
 
@@ -2442,14 +2378,43 @@ AC_CHECK_TYPE(size_t, unsigned)
 AC_CHECK_TYPES([long long])
 AC_CHECK_TYPES([ptrdiff_t])
 
-AC_CHECK_TYPE([socklen_t],,
-       [AC_DEFINE_UNQUOTED([socklen_t], [int],
-               [Define to `int' if <sys/socket.h> does not define.])],
-       [$ac_includes_default
+
+AC_CHECK_TYPE([socklen_t],,, [$ac_includes_default
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif])
+
+dnl socklen_t-like type in accept(), default socklen_t or int:
+dnl - The OS might define socklen_t without using it.  POSIX moved from
+dnl   int to size_t to socklen_t, hoping to stay at a 32-bit type, and
+dnl   HP-UX now has selectors for what to use.
+dnl - On Solaris 2.8 the prototype has void *len, but the default is OK.
+AC_MSG_CHECKING([the type of arg 3 to accept()])
+AC_CACHE_VAL(ol_cv_type_ber_socklen_t, [
+       set socklen_t int unsigned "unsigned long" long size_t
+       test "$ac_cv_type_socklen_t" = yes || shift
+       ol_cv_type_ber_socklen_t=$1 guessing="guessing "
+       for lentype in "$@" ; do for addrtype in "struct sockaddr" void ; do
+               AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_includes_default
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-       ])
+extern int accept(int s, $addrtype *ap, $lentype *lp);
+], [
+accept(0, (struct sockaddr *) 0, ($lentype *) 0);
+])], [ol_cv_type_ber_socklen_t=$lentype guessing= ; break 2])
+       done ; done])
+AC_MSG_RESULT([$guessing$ol_cv_type_ber_socklen_t *])
+AC_DEFINE_UNQUOTED(ber_socklen_t, $ol_cv_type_ber_socklen_t,
+       [Define to the type of arg 3 for `accept'.])
+
+dnl Modules should use ber_socklen_t, not socklen_t.  Define socklen_t
+dnl for the time being anyway, for backwards compatibility.
+if test "$ac_cv_type_socklen_t" != yes; then
+       AC_DEFINE_UNQUOTED([socklen_t], [$ol_cv_type_ber_socklen_t],
+               [Define like ber_socklen_t if <sys/socket.h> does not define.])
+fi
+
 
 AC_TYPE_SIGNAL
 
@@ -2484,6 +2449,7 @@ fi
 AC_CHECK_SIZEOF(short) 
 AC_CHECK_SIZEOF(int) 
 AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
 AC_CHECK_SIZEOF(wchar_t)
 
 if test "$ac_cv_sizeof_int" -lt 4 ; then
@@ -2498,6 +2464,50 @@ AC_DEFINE(LBER_LEN_T,long,[define to large integer type])
 AC_DEFINE(LBER_SOCKET_T,int,[define to socket descriptor type])
 AC_DEFINE(LBER_TAG_T,long,[define to large integer type])
 
+dnl ----------------------------------------------------------------
+dnl Check for multiple precision support
+if test $ol_with_mp = longlong || test $ol_with_mp = auto ; then
+       if test $ac_cv_sizeof_long_long -gt 4 ; then
+               ol_with_mp=longlong
+               AC_DEFINE(USE_MP_LONG_LONG,1,[define to use 'long long' for MP])
+       elif test $ol_with_mp = longlong ; then
+               AC_MSG_ERROR([long long unusable for multiple precision])
+       fi
+fi
+if test $ol_with_mp = long || test $ol_with_mp = auto ; then
+       if test $ac_cv_sizeof_long -gt 4 ; then
+               ol_with_mp=long
+               AC_DEFINE(USE_MP_LONG,1,[define to use 'long' for MP])
+       elif test $ol_with_mp = long ; then
+               AC_MSG_ERROR([long unusable for multiple precision])
+       fi
+fi
+if test $ol_with_mp = bignum || test $ol_with_mp = auto ; then
+       AC_CHECK_HEADERS(openssl/bn.h)
+       AC_CHECK_HEADERS(openssl/crypto.h)
+       if test "$ac_cv_header_openssl_bn_h" = "yes" &&
+               test "$ac_cv_header_openssl_crypto_h" = "yes" &&
+               test "$ol_with_tls" = "found" ; then
+               ol_with_mp=bignum
+               AC_DEFINE(USE_MP_BIGNUM,1,[define to use OpenSSL BIGNUM for MP])
+       elif test $ol_with_mp = bignum ; then
+               AC_MSG_ERROR([bignum not available])
+       fi
+fi
+if test $ol_with_mp = gmp || test $ol_with_mp = auto ; then
+       AC_CHECK_HEADERS(gmp.h)
+       AC_CHECK_LIB(gmp, __gmpz_add_ui)
+       if test $ac_cv_header_gmp_h = yes && test $ac_cv_lib_gmp___gmpz_add_ui = yes ; then
+               AC_DEFINE(USE_MP_GMP,1,[define to use GMP for MP])
+               ol_with_mp=gmp
+       elif test $ol_with_mp = gmp ; then
+               AC_MSG_ERROR([gmp not available])
+       fi
+fi
+if test $ol_with_mp = auto ; then
+       ol_with_mp=no
+fi
+
 dnl ----------------------------------------------------------------
 dnl Checks for library functions.
 AC_FUNC_MEMCMP
@@ -2880,6 +2890,18 @@ if test "$ol_enable_accesslog" != no ; then
        AC_DEFINE_UNQUOTED(SLAPD_OVER_ACCESSLOG,$MFLAG,[define for In-Directory Access Logging overlay])
 fi
 
+if test "$ol_enable_auditlog" != no ; then
+       BUILD_AUDITLOG=$ol_enable_auditlog
+       if test "$ol_enable_auditlog" = mod ; then
+               MFLAG=SLAPD_MOD_DYNAMIC
+               SLAPD_DYNAMIC_OVERLAYS="$SLAPD_DYNAMIC_OVERLAYS auditlog.la"
+       else
+               MFLAG=SLAPD_MOD_STATIC
+               SLAPD_STATIC_OVERLAYS="$SLAPD_STATIC_OVERLAYS auditlog.o"
+       fi
+       AC_DEFINE_UNQUOTED(SLAPD_OVER_AUDITLOG,$MFLAG,[define for Audit Logging overlay])
+fi
+
 if test "$ol_enable_denyop" != no ; then
        BUILD_DENYOP=$ol_enable_denyop
        if test "$ol_enable_denyop" = mod ; then
@@ -3097,6 +3119,7 @@ dnl backends
   AC_SUBST(BUILD_SQL)
 dnl overlays
   AC_SUBST(BUILD_ACCESSLOG)
+  AC_SUBST(BUILD_AUDITLOG)
   AC_SUBST(BUILD_DENYOP)
   AC_SUBST(BUILD_DYNGROUP)
   AC_SUBST(BUILD_DYNLIST)
@@ -3209,7 +3232,7 @@ rm -f $BACKENDSC
 cat > $BACKENDSC << ENDX
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2006 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -3260,7 +3283,7 @@ rm -f $OVERLAYSC
 cat > $OVERLAYSC << ENDX
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2006 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without