X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=build%2Fopenldap.m4;h=1cf676e44214131fa40205ea96b8a31ab45dac1e;hb=3ae4b383d5acac6977ba834ddf9ba77b1d805024;hp=12b1f62b7be4382edc057ef4b525315245922a72;hpb=728f4f188f6933826eae4f09b2b9f025536c146a;p=openldap diff --git a/build/openldap.m4 b/build/openldap.m4 index 12b1f62b7b..1cf676e442 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -1,15 +1,17 @@ +dnl OpenLDAP Autoconf Macros dnl $OpenLDAP$ +dnl This work is part of OpenLDAP Software . dnl -dnl Copyright 1998-2003 The OpenLDAP Foundation, Redwood City, California, USA +dnl Copyright 1998-2005 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 . 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 #include $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 +#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.0 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])]) @@ -911,6 +975,8 @@ fi ]) 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. @@ -944,7 +1010,45 @@ if test $ol_cv_have_sys_errlist = yes ; then [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 ], + ol_decl_strerror_r=yes, ol_decl_strerror_r=no)dnl + + if test $ol_decl_strerror_r = yes ; then + AC_TRY_COMPILE([#include ], + [ /* 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 +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;" @@ -1195,7 +1299,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 +1309,12 @@ AC_DEFUN([OL_SASL_COMPAT], #include #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])]) ]) @@ -1229,3 +1331,18 @@ AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS, [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 +#else +#include +#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])]) +])