]> git.sur5r.net Git - openldap/blobdiff - build/openldap.m4
ITS#3495 make sure lutil_passwd_init gets called
[openldap] / build / openldap.m4
index e72d99eefae178b6206604473d4273e433859efb..1cf676e44214131fa40205ea96b8a31ab45dac1e 100644 (file)
@@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros
 dnl $OpenLDAP$
 dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
 dnl $OpenLDAP$
 dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
-dnl Copyright 1998-2003 The OpenLDAP Foundation.
+dnl Copyright 1998-2005 The OpenLDAP Foundation.
 dnl All rights reserved.
 dnl
 dnl Redistribution and use in source and binary forms, with or without
 dnl All rights reserved.
 dnl
 dnl Redistribution and use in source and binary forms, with or without
@@ -76,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) 
@@ -284,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;
                }
@@ -314,6 +315,10 @@ 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_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_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])
@@ -334,6 +339,58 @@ 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], [
 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], [
@@ -429,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
@@ -917,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.
@@ -950,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;"
@@ -1233,3 +1331,18 @@ AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS,
                [define if struct msghdr has msg_accrights])
   fi
 ])dnl
                [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])])
+])