]> git.sur5r.net Git - openldap/blobdiff - build/openldap.m4
ITS#3495 make sure lutil_passwd_init gets called
[openldap] / build / openldap.m4
index e49cebf15d49cb184117e6fb4e5c3ffaad88d3ce..1cf676e44214131fa40205ea96b8a31ab45dac1e 100644 (file)
@@ -1,15 +1,17 @@
+dnl OpenLDAP Autoconf Macros
 dnl $OpenLDAP$
 dnl $OpenLDAP$
+dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
 dnl
-dnl Copyright 1998-2002 The OpenLDAP Foundation, Redwood City, California, USA
+dnl Copyright 1998-2005 The OpenLDAP Foundation.
 dnl All rights reserved.
 dnl All rights reserved.
-dnl 
+dnl
 dnl Redistribution and use in source and binary forms, with or without
 dnl modification, are permitted only as authorized by the OpenLDAP
 dnl Redistribution and use in source and binary forms, with or without
 dnl modification, are permitted only as authorized by the OpenLDAP
-dnl Public License.  A copy of this license is available at
-dnl http://www.OpenLDAP.org/license.html or in file LICENSE in the
-dnl top-level directory of the distribution.
+dnl Public License.
 dnl
 dnl
-dnl OpenLDAP Autoconf Macros
+dnl A copy of this license is available in the file LICENSE in the
+dnl top-level directory of the distribution or, alternatively, at
+dnl <http://www.OpenLDAP.org/license.html>.
 dnl
 dnl --------------------------------------------------------------------
 dnl Restricted form of AC_ARG_ENABLE that limits user options
 dnl
 dnl --------------------------------------------------------------------
 dnl Restricted form of AC_ARG_ENABLE that limits user options
@@ -74,6 +76,7 @@ AC_MSG_CHECKING(size of $1)
 AC_CACHE_VAL(AC_CV_NAME, 
 [for ac_size in 4 8 1 2 16 $2 ; do # List sizes in rough order of prevalence. 
   AC_TRY_COMPILE([#include "confdefs.h" 
 AC_CACHE_VAL(AC_CV_NAME, 
 [for ac_size in 4 8 1 2 16 $2 ; do # List sizes in rough order of prevalence. 
   AC_TRY_COMPILE([#include "confdefs.h" 
+#include <stdlib.h>
 #include <sys/types.h> 
 $2 
 ], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) 
 #include <sys/types.h> 
 $2 
 ], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) 
@@ -254,7 +257,7 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
 [
        ol_DB_LIB=ifelse($2,,,$2)
        ol_LIBS=$LIBS
 [
        ol_DB_LIB=ifelse($2,,,$2)
        ol_LIBS=$LIBS
-       LIBS="$ol_DB_LIB $LIBS"
+       LIBS="$ol_DB_LIB $LTHREAD_LIBS $LIBS"
 
        AC_TRY_LINK([
 #ifdef HAVE_DB_185_H
 
        AC_TRY_LINK([
 #ifdef HAVE_DB_185_H
@@ -282,7 +285,7 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
                        minor < DB_VERSION_MINOR )
                {
                        printf("Berkeley DB version mismatch\n"
                        minor < DB_VERSION_MINOR )
                {
                        printf("Berkeley DB version mismatch\n"
-                               "\texpected: %s\n\tgot: %s\n",
+                               "\theader: %s\n\tlibrary: %s\n",
                                DB_VERSION_STRING, version);
                        return 1;
                }
                                DB_VERSION_STRING, version);
                        return 1;
                }
@@ -312,9 +315,21 @@ dnl Try to locate appropriate library
 AC_DEFUN([OL_BERKELEY_DB_LINK],
 [ol_cv_lib_db=no
 OL_BERKELEY_DB_TRY(ol_cv_db_none)
 AC_DEFUN([OL_BERKELEY_DB_LINK],
 [ol_cv_lib_db=no
 OL_BERKELEY_DB_TRY(ol_cv_db_none)
-OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
+OL_BERKELEY_DB_TRY(ol_cv_db_db43,[-ldb43])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_43,[-ldb-43])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_3,[-ldb-4.3])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_3,[-ldb-4-3])
+OL_BERKELEY_DB_TRY(ol_cv_db_db42,[-ldb42])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_42,[-ldb-42])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_2,[-ldb-4.2])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_2,[-ldb-4-2])
 OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4])
 OL_BERKELEY_DB_TRY(ol_cv_db_db_4,[-ldb-4])
+OL_BERKELEY_DB_TRY(ol_cv_db_db4,[-ldb4])
 OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb])
 OL_BERKELEY_DB_TRY(ol_cv_db_db,[-ldb])
+OL_BERKELEY_DB_TRY(ol_cv_db_db41,[-ldb41])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_41,[-ldb-41])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_dot_1,[-ldb-4.1])
+OL_BERKELEY_DB_TRY(ol_cv_db_db_4_1,[-ldb-4-1])
 OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
 OL_BERKELEY_DB_TRY(ol_cv_db_db3,[-ldb3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
@@ -324,12 +339,65 @@ OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1])
 ])
 dnl
 dnl --------------------------------------------------------------------
 ])
 dnl
 dnl --------------------------------------------------------------------
+dnl Check if Berkeley DB version
+AC_DEFUN([OL_BERKELEY_DB_VERSION],
+[AC_CACHE_CHECK([for Berkeley DB version match], [ol_cv_berkeley_db_version], [
+       ol_LIBS="$LIBS"
+       LIBS="$LTHREAD_LIBS $LIBS"
+       if test $ol_cv_lib_db != yes ; then
+               LIBS="$ol_cv_lib_db $LIBS"
+       fi
+
+       AC_TRY_RUN([
+#ifdef HAVE_DB_185_H
+       choke me;
+#else
+#include <db.h>
+#endif
+#ifndef DB_VERSION_MAJOR
+# define DB_VERSION_MAJOR 1
+#endif
+#ifndef NULL
+#define NULL ((void *)0)
+#endif
+main()
+{
+#if DB_VERSION_MAJOR > 1
+       char *version;
+       int major, minor, patch;
+
+       version = db_version( &major, &minor, &patch );
+
+       if( major != DB_VERSION_MAJOR || minor < DB_VERSION_MINOR ) {
+               printf("Berkeley DB version mismatch\n"
+                       "\theader: %s\n\tlibrary: %s\n",
+                       DB_VERSION_STRING, version);
+               return 1;
+       }
+#endif
+
+       return 0;
+}],
+       [ol_cv_berkeley_db_version=yes],
+       [ol_cv_berkeley_db_version=no],
+       [ol_cv_berkeley_db_version=cross])
+
+       LIBS="$ol_LIBS"
+])
+
+       if test $ol_cv_berkeley_db_version = no ; then
+               AC_MSG_ERROR([Berkeley DB version mismatch])
+       fi
+])dnl
+dnl
+dnl --------------------------------------------------------------------
 dnl Check if Berkeley DB supports DB_THREAD
 AC_DEFUN([OL_BERKELEY_DB_THREAD],
 [AC_CACHE_CHECK([for Berkeley DB thread support], [ol_cv_berkeley_db_thread], [
        ol_LIBS="$LIBS"
 dnl Check if Berkeley DB supports DB_THREAD
 AC_DEFUN([OL_BERKELEY_DB_THREAD],
 [AC_CACHE_CHECK([for Berkeley DB thread support], [ol_cv_berkeley_db_thread], [
        ol_LIBS="$LIBS"
+       LIBS="$LTHREAD_LIBS $LIBS"
        if test $ol_cv_lib_db != yes ; then
        if test $ol_cv_lib_db != yes ; then
-               LIBS="$ol_cv_lib_db"
+               LIBS="$ol_cv_lib_db $LIBS"
        fi
 
        AC_TRY_RUN([
        fi
 
        AC_TRY_RUN([
@@ -401,12 +469,13 @@ main()
        [ol_cv_berkeley_db_thread=cross])
 
        LIBS="$ol_LIBS"
        [ol_cv_berkeley_db_thread=cross])
 
        LIBS="$ol_LIBS"
+])
 
        if test $ol_cv_berkeley_db_thread != no ; then
                AC_DEFINE(HAVE_BERKELEY_DB_THREAD, 1,
                        [define if Berkeley DB has DB_THREAD support])
        fi
 
        if test $ol_cv_berkeley_db_thread != no ; then
                AC_DEFINE(HAVE_BERKELEY_DB_THREAD, 1,
                        [define if Berkeley DB has DB_THREAD support])
        fi
-])])dnl
+])dnl
 dnl
 dnl --------------------------------------------------------------------
 dnl Find any DB
 dnl
 dnl --------------------------------------------------------------------
 dnl Find any DB
@@ -417,6 +486,7 @@ if test $ac_cv_header_db_h = yes; then
        OL_BERKELEY_DB_LINK
        if test "$ol_cv_lib_db" != no ; then
                ol_cv_berkeley_db=yes
        OL_BERKELEY_DB_LINK
        if test "$ol_cv_lib_db" != no ; then
                ol_cv_berkeley_db=yes
+               OL_BERKELEY_DB_VERSION
                OL_BERKELEY_DB_THREAD
        fi
 fi
                OL_BERKELEY_DB_THREAD
        fi
 fi
@@ -432,12 +502,15 @@ AC_DEFUN([OL_BDB_COMPAT],
 #ifndef DB_VERSION_MAJOR
 #      define DB_VERSION_MAJOR 1
 #endif
 #ifndef DB_VERSION_MAJOR
 #      define DB_VERSION_MAJOR 1
 #endif
+#ifndef DB_VERSION_MINOR
+#      define DB_VERSION_MINOR 0
+#endif
 
 
-/* require 4.0 or later */
-#if DB_VERSION_MAJOR >= 4 
+/* require 4.2 or later */
+#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 2)
        __db_version_compat
 #endif
        __db_version_compat
 #endif
-       ],      [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
+       ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
 ])
 
 dnl --------------------------------------------------------------------
 ])
 
 dnl --------------------------------------------------------------------
@@ -902,6 +975,8 @@ fi
 ])
 dnl
 dnl ====================================================================
 ])
 dnl
 dnl ====================================================================
+dnl Error string checks
+dnl
 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
 dnl Reported by Keith Bostic.
 dnl Check for declaration of sys_errlist in one of stdio.h and errno.h.
 dnl Declaration of sys_errlist on BSD4.4 interferes with our declaration.
 dnl Reported by Keith Bostic.
@@ -935,7 +1010,45 @@ if test $ol_cv_have_sys_errlist = yes ; then
                [define if you actually have sys_errlist in your libs])
 fi
 ])dnl
                [define if you actually have sys_errlist in your libs])
 fi
 ])dnl
+AC_DEFUN([OL_NONPOSIX_STRERROR_R],
+[AC_CACHE_CHECK([non-posix strerror_r],ol_cv_nonposix_strerror_r,[
+       AC_EGREP_CPP(strerror_r,[#include <string.h>],
+               ol_decl_strerror_r=yes, ol_decl_strerror_r=no)dnl
+
+       if test $ol_decl_strerror_r = yes ; then
+               AC_TRY_COMPILE([#include <string.h>],
+                       [   /* from autoconf 2.59 */
+                               char buf[100];
+                               char x = *strerror_r (0, buf, sizeof buf);
+                               char *p = strerror_r (0, buf, sizeof buf);
+                       ], ol_cv_nonposix_strerror_r=yes, ol_cv_nonposix_strerror_r=no)
+       else
+               AC_TRY_RUN([
+                       main() {
+                               char buf[100];
+                               buf[0] = 0;
+                               strerror_r( 1, buf, sizeof buf );
+                               exit( buf[0] == 0 );
+                       }
+                       ], ol_cv_nonposix_strerror_r=yes, ol_cv_nonposix_strerror=no, ol_cv_nonposix_strerror=no)
+       fi
+       ])
+if test $ol_cv_nonposix_strerror_r = yes ; then
+       AC_DEFINE(HAVE_NONPOSIX_STRERROR_R,1,
+               [define if strerror_r returns char* instead of int])
+fi
+])dnl
 dnl
 dnl
+AC_DEFUN([OL_STRERROR],
+[OL_SYS_ERRLIST dnl TEMPORARY
+AC_CHECK_FUNCS(strerror strerror_r)
+ol_cv_func_strerror_r=no
+if test "${ac_cv_func_strerror_r}" = yes ; then
+       OL_NONPOSIX_STRERROR_R
+elif test "${ac_cv_func_strerror}" = no ; then
+       OL_SYS_ERRLIST
+fi
+])dnl
 dnl ====================================================================
 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
 dnl "int x; int *volatile a = &x; *a = 0;"
 dnl ====================================================================
 dnl Early MIPS compilers (used in Ultrix 4.2) don't like
 dnl "int x; int *volatile a = &x; *a = 0;"
@@ -1186,7 +1299,7 @@ AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
 ])dnl
 dnl
 dnl --------------------------------------------------------------------
 ])dnl
 dnl
 dnl --------------------------------------------------------------------
-dnl Check for Cyrus SASL version compatility, need 2.1.3 or newer
+dnl Check for Cyrus SASL version compatility
 AC_DEFUN([OL_SASL_COMPAT],
 [AC_CACHE_CHECK([Cyrus SASL library version], [ol_cv_sasl_compat],[
        AC_EGREP_CPP(__sasl_compat,[
 AC_DEFUN([OL_SASL_COMPAT],
 [AC_CACHE_CHECK([Cyrus SASL library version], [ol_cv_sasl_compat],[
        AC_EGREP_CPP(__sasl_compat,[
@@ -1196,14 +1309,40 @@ AC_DEFUN([OL_SASL_COMPAT],
 #include <sasl.h>
 #endif
 
 #include <sasl.h>
 #endif
 
-/* require 2.1.3 or later */
-#if SASL_VERSION_MAJOR == 1  && SASL_VERSION_MINOR >= 5
-       char *__sasl_compat = "1.5.x okay";
-#elif SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR > 1
-       __sasl_compat "2.2+ or better okay (we guess)";
+/* Require 2.1.15+ */
+#if SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR > 1
+       char *__sasl_compat = "2.2+ or better okay (we guess)";
 #elif SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR == 1 \
 #elif SASL_VERSION_MAJOR == 2  && SASL_VERSION_MINOR == 1 \
-       && SASL_VERSION_STEP >=3
-       __sasl_compat = "2.1.3+ or better okay";
+       && SASL_VERSION_STEP >=15
+       char *__sasl_compat = "2.1.15+ or better okay";
 #endif
        ],      [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])])
 ])
 #endif
        ],      [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])])
 ])
+dnl ====================================================================
+dnl check for msg_accrights in msghdr
+AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS,
+ [AC_CACHE_CHECK(for msg_accrights in msghdr, ol_cv_msghdr_msg_accrights,
+   [AC_TRY_COMPILE([#include <sys/socket.h>],
+               [struct msghdr m; m.msg_accrightslen=0],
+               ol_cv_msghdr_msg_accrights=yes, ol_cv_msghdr_msg_accrights=no)
+       ])
+  if test $ol_cv_msghdr_msg_accrights = "yes" ; then
+       AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS,1,
+               [define if struct msghdr has msg_accrights])
+  fi
+])dnl
+AC_DEFUN([OL_SSL_COMPAT],
+[AC_CACHE_CHECK([OpenSSL library version (CRL checking capability)], [ol_cv_ssl_crl_compat],[
+       AC_EGREP_CPP(__ssl_compat,[
+#ifdef HAVE_OPENSSL_SSL_H
+#include <openssl/ssl.h>
+#else
+#include <ssl.h>
+#endif
+
+/* Require 0.9.7d+ */
+#if OPENSSL_VERSION_NUMBER >= 0x0090704fL
+       char *__ssl_compat = "0.9.7d";
+#endif
+       ],      [ol_cv_ssl_crl_compat=yes], [ol_cv_ssl_crl_compat=no])])
+])