X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=build%2Fopenldap.m4;h=c69f1246f2704574ba59fecdeadbb791b3917510;hb=931d7f4a952d456b79717e317a83d27072d9f73d;hp=42f35131be5aa5a04a463eea20ced5cb0362eec1;hpb=2c21fdcecb749b40b7fe1a053524febea3606f0b;p=openldap diff --git a/build/openldap.m4 b/build/openldap.m4 index 42f35131be..c69f1246f2 100644 --- a/build/openldap.m4 +++ b/build/openldap.m4 @@ -2,7 +2,7 @@ dnl OpenLDAP Autoconf Macros dnl $OpenLDAP$ dnl This work is part of OpenLDAP Software . 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 @@ -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" +#include #include $2 ], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) @@ -246,6 +247,75 @@ fi ]) dnl dnl ==================================================================== +dnl DNS resolver macros +AC_DEFUN([OL_RESOLVER_TRY], +[if test $ol_cv_lib_resolver = no ; then + AC_CACHE_CHECK([for resolver link (]ifelse($2,,default,$2)[)],[$1], +[ + ol_RESOLVER_LIB=ifelse($2,,,$2) + ol_LIBS=$LIBS + LIBS="$ol_RESOLVER_LIB $LIBS" + + AC_TRY_LINK([ +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#include +#ifdef HAVE_ARPA_NAMESER_H +# include +#endif +#ifdef HAVE_RESOLV_H +# include +#endif +],[{ + int len, status; + char *request = NULL; + unsigned char reply[64*1024]; + unsigned char host[64*1024]; + unsigned char *p; + +#ifdef NS_HFIXEDSZ + /* Bind 8/9 interface */ + len = res_query(request, ns_c_in, ns_t_srv, reply, sizeof(reply)); +#else + /* Bind 4 interface */ +# ifndef T_SRV +# define T_SRV 33 +# endif + len = res_query(request, C_IN, T_SRV, reply, sizeof(reply)); +#endif + p = reply; +#ifdef NS_HFIXEDSZ + /* Bind 8/9 interface */ + p += NS_HFIXEDSZ; +#elif defined(HFIXEDSZ) + /* Bind 4 interface w/ HFIXEDSZ */ + p += HFIXEDSZ; +#else + /* Bind 4 interface w/o HFIXEDSZ */ + p += sizeof(HEADER); +#endif + status = dn_expand( reply, reply+len, p, host, sizeof(host)); +}],[$1=yes],[$1=no]) + + LIBS="$ol_LIBS" +]) + + if test $$1 = yes ; then + ol_cv_lib_resolver=ifelse($2,,yes,$2) + fi +fi +]) +dnl -------------------------------------------------------------------- +dnl Try to locate appropriate library +AC_DEFUN([OL_RESOLVER_LINK], +[ol_cv_lib_resolver=no +OL_RESOLVER_TRY(ol_cv_resolver_none) +OL_RESOLVER_TRY(ol_cv_resolver_resolv,[-lresolv]) +OL_RESOLVER_TRY(ol_cv_resolver_bind,[-lbind]) +]) +dnl +dnl ==================================================================== dnl Berkeley DB macros dnl dnl -------------------------------------------------------------------- @@ -284,7 +354,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; } @@ -314,18 +384,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_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]) @@ -335,6 +408,61 @@ 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 || + patch != DB_VERSION_PATCH ) + { + 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], [ @@ -430,6 +558,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 @@ -918,6 +1047,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. @@ -951,7 +1082,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;" @@ -1202,7 +1371,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,[ @@ -1212,12 +1381,12 @@ AC_DEFUN([OL_SASL_COMPAT], #include #endif -/* require 2.1.3 or later */ +/* 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 - char *__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])]) ]) @@ -1234,3 +1403,31 @@ AC_DEFUN(OL_MSGHDR_MSG_ACCRIGHTS, [define if struct msghdr has msg_accrights]) fi ])dnl +dnl ==================================================================== +dnl check for cmsghdr +AC_DEFUN(OL_MSGHDR_MSG_CONTROL, + [AC_CACHE_CHECK(for msg_control in msghdr, ol_cv_msghdr_msg_control, + [AC_TRY_COMPILE([#include ], + [struct msghdr m; m.msg_control=(struct cmsghdr *)0], + ol_cv_msghdr_msg_control=yes, ol_cv_msghdr_msg_control=no) + ]) + if test $ol_cv_msghdr_msg_control = "yes" ; then + AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1, + [define if struct msghdr has msg_control]) + 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])]) +])