]> git.sur5r.net Git - openldap/blobdiff - build/openldap.m4
Return to release engineering
[openldap] / build / openldap.m4
index 26b2458e2142d6f8544f732ca0e547c586ae010e..b7f461f7a035100001a57158b9f22e05ef62e461 100644 (file)
@@ -1,15 +1,17 @@
+dnl OpenLDAP Autoconf Macros
 dnl $OpenLDAP$
+dnl This work is part of OpenLDAP Software <http://www.openldap.org/>.
 dnl
-dnl Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA
+dnl Copyright 1998-2004 The OpenLDAP Foundation.
 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 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 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
@@ -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" 
+#include <stdlib.h>
 #include <sys/types.h> 
 $2 
 ], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) 
@@ -282,7 +285,7 @@ AC_DEFUN([OL_BERKELEY_DB_TRY],
                        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;
                }
@@ -312,13 +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)
+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_db4,[-ldb4])
+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_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_db3,[-ldb3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db_3,[-ldb-3])
 OL_BERKELEY_DB_TRY(ol_cv_db_db2,[-ldb2])
@@ -328,6 +339,58 @@ OL_BERKELEY_DB_TRY(ol_cv_db_db_1,[-ldb-1])
 ])
 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], [
@@ -423,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_VERSION
                OL_BERKELEY_DB_THREAD
        fi
 fi
@@ -442,8 +506,8 @@ AC_DEFUN([OL_BDB_COMPAT],
 #      define DB_VERSION_MINOR 0
 #endif
 
-/* require 4.1 or later */
-#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 1)
+/* require 4.2 or later */
+#if (DB_VERSION_MAJOR >= 4) && (DB_VERSION_MINOR >= 2)
        __db_version_compat
 #endif
        ], [ol_cv_bdb_compat=yes], [ol_cv_bdb_compat=no])])
@@ -1195,7 +1259,7 @@ AC_DEFUN(OL_FUNC_GETHOSTBYADDR_R_NARGS,
 ])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,[
@@ -1205,14 +1269,12 @@ AC_DEFUN([OL_SASL_COMPAT],
 #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 \
-       && 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])])
 ])