From: Razvan Becheriu Date: Tue, 12 Dec 2017 11:47:28 +0000 (+0200) Subject: Merge remote-tracking branch 'andrei-remote/cassandra-host-data-source' into HEAD X-Git-Tag: trac5502_base~5^2~7^2~14^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca85e157eadf135723c2c1b22b4b141e4d737c48;p=thirdparty%2Fkea.git Merge remote-tracking branch 'andrei-remote/cassandra-host-data-source' into HEAD --- ca85e157eadf135723c2c1b22b4b141e4d737c48 diff --cc configure.ac index e9542bf23a,a71b097d15..b09b2ebffa --- a/configure.ac +++ b/configure.ac @@@ -588,416 -591,9 +591,22 @@@ if test "$lcov" != "no"; the fi AC_SUBST(USE_LCOV) +enable_benchmark="no" +BENCHMARK_INCLUDES= + +AC_ARG_WITH([benchmark-source], + [AS_HELP_STRING([--with-benchmark-source=PATH], + [location of the benchmark source])], + [enable_benchmark="yes" ; BENCHMARK_SOURCE="$withval"]) + +AC_ARG_WITH([benchmark], + [AS_HELP_STRING([--with-benchmark=PATH], + [specify a path to benchmark header files (PATH/include) and library (PATH/lib)])], + [benchmark_path="$withval"; enable_benchmark="yes"], [benchmark_path="no"]) + - # Simplified, non-caching AC_CHECK_PROG - # Searches $PATH for the existence of argument 2, - # and sets the full path to the variable in argument 1. - # if not found, and a third argument is given, the value - # is set to that. If not, the value is untouched. - # Does not take absolute paths into account at this point, - # and also works for single files only (arguments are not - # stripped like in AC_CHECK_PROG) - AC_DEFUN([ACX_CHECK_PROG_NONCACHE], [ - RESULT="" - IFS_SAVED="$IFS" - IFS=${PATH_SEPARATOR} - for cur_path in ${PATH} ; do - if test -e "${cur_path}/$2" ; then - RESULT="${cur_path}/$2" - fi - done - if test "$RESULT" = "" ; then - : - m4_ifvaln([$3], [$1=$3]) - else - $1=$RESULT - fi - IFS="$IFS_SAVED" - ]) - - # Avoid checking Botan if OpenSSL is wanted - AC_ARG_WITH([openssl], - [AS_HELP_STRING([--with-openssl[[=PATH]]], [Enables OpenSSL, - location can be specified optionally])], - [use_openssl="$withval"], - [use_openssl="auto"]) - - # Botan helper test function - # Tries to compile a botan program, given the output of the given - # config tool - # Arguments: - # - name of tool (checked for path), must support --libs and --cflags - # - fixed argument(s) for tool - # - action if successful - AC_DEFUN([ACX_TRY_BOTAN_TOOL], [ - TOOL=$1 - TOOL_ARG=$2 - BOTAN_TOOL="" - ACX_CHECK_PROG_NONCACHE([BOTAN_TOOL], [${TOOL}]) - AC_MSG_CHECKING([usability of ${TOOL} ${TOOL_ARG}]) - if test "$BOTAN_TOOL" != "" ; then - if test -x ${BOTAN_TOOL}; then - CRYPTO_LIBS=`$BOTAN_TOOL $TOOL_ARG --libs` - LIBS_SAVED=${LIBS} - LIBS="$LIBS $CRYPTO_LIBS" - CRYPTO_INCLUDES=`$BOTAN_TOOL $TOOL_ARG --cflags` - CPPFLAGS_SAVED=${CPPFLAGS} - CPPFLAGS="$CRYPTO_INCLUDES $CPPFLAGS" - #AC_MSG_RESULT([found]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include - #include - #include - ], - [using namespace Botan; - LibraryInitializer::initialize(); - HashFunction *h = get_hash("MD5"); - ])], - [ AC_MSG_RESULT([ok]) - $3 - ], - [ AC_MSG_RESULT([not usable]) ] - ) - LIBS=${LIBS_SAVED} - CPPFLAGS=${CPPFLAGS_SAVED} - else - AC_MSG_RESULT([not executable]) - fi - else - AC_MSG_RESULT([not found]) - fi - BOTAN_TOOL="" - AC_SUBST(BOTAN_TOOL) - ] - ) - - # Check for Botan - # - # Unless --with-botan-config is given, we first try to find these config - # scripts ourselves. Unfortunately, on some systems, these scripts do not - # provide the correct implementation, so for each script found, we try - # a compilation test (ACX_TRY_BOTAN_TOOL). If none are found, or none of - # them work, we see if pkg-config is available. If so, we try the several - # potential pkg-config .pc files. Again, on some systems, these can return - # incorrect information as well, so the try-compile test is repeated for - # each. - # - # If a working config script or pkgconfig file is found, we then munge its - # output for use in our Makefiles, and to make sure it works, another header - # and compilation test is done (this should also check whether we can compile - # against botan should neither -config scripts nor pkgconfig data exist). - # - botan_config="yes" - if test "${use_openssl}" != "auto" -a "${use_openssl}" != "no" ; then - botan_config="no" - fi - AC_ARG_WITH([botan-config], - AC_HELP_STRING([--with-botan-config=PATH], - [specify the path to the botan-config script]), - [botan_config="$withval"]) - distcheck_botan="--with-botan-config=$botan_config" - if test "${botan_config}" = "no" ; then - if test "${use_openssl}" = "no" ; then - AC_MSG_ERROR([Need Botan or OpenSSL for libcryptolink]) - fi - elif test "${botan_config}" != "yes" ; then - if test -x "${botan_config}" ; then - if test -d "${botan_config}" ; then - AC_MSG_ERROR([${botan_config} is a directory]) - else - BOTAN_CONFIG="${botan_config}" - fi - else - AC_MSG_ERROR([--with-botan-config should point to a botan-config program and not a directory (${botan_config})]) - fi - else - BOTAN_CONFIG="" - # first try several possible names of the config script - # (botan-config-1.8 is there just in case, the official name change - # came later) - BOTAN_CONFIG_VERSIONS="botan-config-1.10 botan-config-1.9 botan-config-1.8 botan-config" - for botan_config in $BOTAN_CONFIG_VERSIONS; do - ACX_TRY_BOTAN_TOOL([$botan_config],, - [ BOTAN_CONFIG="$botan_config" ] - ) - if test "$BOTAN_CONFIG" != "" ; then - break - fi - done - if test "$BOTAN_CONFIG" = "" ; then - AC_PATH_PROG([PKG_CONFIG], [pkg-config]) - if test "$PKG_CONFIG" != "" ; then - # Ok so no script found, see if pkg-config knows of it. - # Unfortunately, the botan.pc files also have their minor version - # in their name, so we need to try them one by one - BOTAN_VERSIONS="botan-2 botan-1.11 botan-1.10 botan-1.9 botan-1.8" - for version in $BOTAN_VERSIONS; do - ACX_TRY_BOTAN_TOOL([pkg-config], ["$version --silence-errors"], - [ BOTAN_CONFIG="$PKG_CONFIG $version" ] - ) - if test "$BOTAN_CONFIG" != "" ; then - break - fi - done - fi - fi - fi - - if test "x${BOTAN_CONFIG}" != "x" - then - CRYPTO_LIBS=`${BOTAN_CONFIG} --libs` - CRYPTO_INCLUDES=`${BOTAN_CONFIG} --cflags` - - # We expect botan-config --libs to contain -L, but - # this is not always the case. As a heuristics workaround we add - # -L`botan-config --prefix/lib` in this case (if not present already). - # Same for CRYPTO_INCLUDES (but using include instead of lib) below. - if [ ${BOTAN_CONFIG} --prefix >/dev/null 2>&1 ] ; then - echo ${CRYPTO_LIBS} | grep -- -L > /dev/null || \ - CRYPTO_LIBS="-L`${BOTAN_CONFIG} --prefix`/lib ${CRYPTO_LIBS}" - echo ${CRYPTO_INCLUDES} | grep -- -I > /dev/null || \ - CRYPTO_INCLUDES="-I`${BOTAN_CONFIG} --prefix`/include ${CRYPTO_INCLUDES}" - fi - fi - - if test "x${CRYPTO_LIBS}" != "x" - then - dnl Determine the Botan version - AC_MSG_CHECKING([Botan version]) - cat > conftest.cpp << EOF - #include - AUTOCONF_BOTAN_VERSION=BOTAN_VERSION_MAJOR . BOTAN_VERSION_MINOR . BOTAN_VERSION_PATCH - EOF - - CRYPTO_VERSION=`$CPPP $CPPFLAGS $CRYPTO_INCLUDES conftest.cpp | grep '^AUTOCONF_BOTAN_VERSION=' | $SED -e 's/^AUTOCONF_BOTAN_VERSION=//' -e 's/[[ ]]//g' -e 's/"//g' 2> /dev/null` - if test -z "$CRYPTO_VERSION"; then - CRYPTO_VERSION="unknown" - fi - $RM -f conftest.cpp - AC_MSG_RESULT([$CRYPTO_VERSION]) - - # botan-config script (and the way we call pkg-config) returns -L and -l - # as one string, but we need them in separate values - CRYPTO_LDFLAGS= - for flag in ${CRYPTO_LIBS}; do - CRYPTO_LDFLAGS="${CRYPTO_LDFLAGS} `echo $flag | ${SED} -ne '/^\(\-L\)/p'`" - CRYPTO_LIBS="${CRYPTO_LIBS} `echo $flag | ${SED} -ne '/^\(\-l\)/p'`" - done - - # See crypto_rpath for some info on why we do this - if test "x$ISC_RPATH_FLAG" != "x"; then - CRYPTO_RPATH= - for flag in ${CRYPTO_LIBS}; do - CRYPTO_RPATH="${CRYPTO_RPATH} `echo $flag | ${SED} -ne "s/^\(\-L\)/${ISC_RPATH_FLAG}/p"`" - done - # According to the libtool manual, it should be sufficient if we - # specify the "-R libdir" in our wrapper library of botan (no other - # programs will need libbotan directly); "libdir" should be added to - # the program's binary image. But we've seen in our build environments - # that (some versions of?) libtool doesn't propagate -R as documented, - # and it caused a linker error at run time. To work around this, we - # also add the rpath to the global LDFLAGS. - LDFLAGS="$CRYPTO_RPATH $LDFLAGS" - fi - - # Even though chances are high we already performed a real compilation check - # in the search for the right (pkg)config data, we try again here, to - # be sure. - CPPFLAGS_SAVED=$CPPFLAGS - CPPFLAGS="$CRYPTO_INCLUDES $CPPFLAGS" - LIBS_SAVED="$LIBS" - LIBS="$LIBS $CRYPTO_LIBS" - - # ac_header_preproc is an autoconf symbol (undocumented but stable) that - # is set if the pre-processor phase passes. Thus by adding a custom - # failure handler we can detect the difference between a header not existing - # (or not even passing the pre-processor phase) and a header file resulting - # in compilation failures. - AC_CHECK_HEADERS([botan/botan.h],,[ - CRYPTO_INCLUDES="" - CRYPTO_LIBS="" - CRYPTO_LDFLAGS="" - CRYPTO_RPATH="" - if test "x$ac_header_preproc" = "xyes"; then - AC_MSG_RESULT([ - botan/botan.h was found but is unusable. The most common cause of this problem - is attempting to use an updated C++ compiler with older C++ libraries, such as - the version of Botan that comes with your distribution. If you have updated - your C++ compiler we highly recommend that you use support libraries such as - Boost and Botan that were compiled with the same compiler version.]) - else - AC_MSG_RESULT([Missing required header files.]) - fi] - ) - CPPFLAGS=$CPPFLAGS_SAVED - LIBS=$LIBS_SAVED - fi - - if test "x${CRYPTO_LIBS}" != "x" - then - CPPFLAGS_SAVED=$CPPFLAGS - CPPFLAGS="$CRYPTO_INCLUDES $CPPFLAGS" - LIBS_SAVED="$LIBS" - LIBS="$LIBS $CRYPTO_LIBS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include - #include - #include - ], - [using namespace Botan; - LibraryInitializer::initialize(); - HashFunction *h = get_hash("MD5"); - ])], - [AC_MSG_RESULT([checking for Botan library... yes])], - [AC_MSG_RESULT([checking for Botan library... no]) - CRYPTO_INCLUDES="" - CRYPTO_LIBS="" - CRYPTO_LDFLAGS="" - CRYPTO_RPATH="" - AC_MSG_RESULT([Needs Botan library 1.8 or higher. On some systems, - the botan package has a few missing dependencies (libbz2 and - libgmp), if libbotan has been installed and you see this message, - try upgrading to a higher version of botan or installing libbz2 - and libgmp.])] - ) - CPPFLAGS=$CPPFLAGS_SAVED - LIBS=$LIBS_SAVED - fi - - if test "x${CRYPTO_LIBS}" != "x" - then - CRYPTO_NAME="Botan" - DISABLED_CRYPTO="OpenSSL" - CRYPTO_PACKAGE="botan-1.8" - CRYPTO_CFLAGS="" - DISTCHECK_CRYPTO_CONFIGURE_FLAG="$distcheck_botan" - AC_DEFINE_UNQUOTED([WITH_BOTAN], [], [Compile with Botan crypto]) - else - CRYPTO_NAME="OpenSSL" - DISABLED_CRYPTO="Botan" - CRYPTO_PACKAGE="openssl-1.0.2" - AC_DEFINE_UNQUOTED([WITH_OPENSSL], [], [Compile with OpenSSL crypto]) - AC_MSG_CHECKING(for OpenSSL library) - # from bind9 - - if test "${use_openssl}" = "auto" ; then - use_openssl="yes" - fi - if test "${use_openssl}" = "yes" ; then - for d in /usr /usr/local /usr/local/ssl /usr/pkg /usr/sfw; do - if test -f $d/include/openssl/opensslv.h; then - use_openssl=$d; break - fi - done - fi - if test "${use_openssl}" = "yes" ; then - AC_MSG_ERROR([OpenSSL auto detection failed]) - fi - if ! test -f "${use_openssl}"/include/openssl/opensslv.h ; then - AC_MSG_ERROR([OpenSSL not found at ${use_openssl}]) - fi - AC_MSG_RESULT(yes) - if test "${use_openssl}" = "/usr" ; then - CRYPTO_CFLAGS="" - CRYPTO_INCLUDES="" - CRYPTO_LIBS="-lcrypto" - DISTCHECK_CRYPTO_CONFIGURE_FLAG="--with-openssl" - else - CRYPTO_CFLAGS="" - CRYPTO_INCLUDES="-I${use_openssl}/include" - DISTCHECK_CRYPTO_CONFIGURE_FLAG="--with-openssl=${use_openssl}" - case $host in - *-solaris*) - CRYPTO_LIBS="-L${use_openssl}/lib -R${use_openssl}/lib -lcrypto" - ;; - *-hp-hpux*) - CRYPTO_LIBS="-L${use_openssl}/lib -Wl,+b: -lcrypto" - ;; - *-apple-darwin*) - if test -f "${use_openssl}/lib/libcrypto.dylib" ; then - CRYPTO_LIBS="-L${use_openssl}/lib -lcrypto" - else - CRYPTO_LIBS="${use_openssl}/lib/libcrypto.a" - fi - ;; - *) - CRYPTO_LIBS="-L${use_openssl}/lib -lcrypto" - ;; - esac - fi - dnl Determine the OpenSSL version - # Officially we support >= 1.0.1, 0.9.8 should fail the HMAC API, - # 1.0.0 could work but is not recommended. - AC_MSG_CHECKING([OpenSSL version]) - cat > conftest.cpp << EOF - #include - AUTOCONF_OPENSSL_VERSION=OPENSSL_VERSION_TEXT - EOF - - CRYPTO_VERSION=`$CPPP $CPPFLAGS $CRYPTO_INCLUDES conftest.cpp | grep '^AUTOCONF_OPENSSL_VERSION=' | $SED -e 's/^AUTOCONF_OPENSSL_VERSION=//' -e 's/"//g' 2> /dev/null` - if test -z "$CRYPTO_VERSION" ; then - CRYPTO_VERSION="unknown" - fi - $RM -f conftest.cpp - AC_MSG_RESULT([$CRYPTO_VERSION]) - #CRYPTO_LDFLAGS="-ldl" - CRYPTO_LDFLAGS="" - CRYPTO_RPATH="" - dnl Check availability of SHA-2 - AC_MSG_CHECKING([support of SHA-2]) - LIBS_SAVED=${LIBS} - LIBS="$LIBS $CRYPTO_LIBS" - CPPFLAGS_SAVED=${CPPFLAGS} - CPPFLAGS="$CRYPTO_INCLUDES $CPPFLAGS" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include ], - [const EVP_MD* h224 = EVP_sha224(); - const EVP_MD* h256 = EVP_sha256(); - const EVP_MD* h384 = EVP_sha384(); - const EVP_MD* h512 = EVP_sha512(); - ])], - [AC_MSG_RESULT([yes])], - [AC_MSG_ERROR([missing EVP entry for SHA-2])]) - dnl Check HMAC API - AC_MSG_CHECKING([HMAC functions returning ints]) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([#include - #include ], - [#if OPENSSL_VERSION_NUMBER < 0x10100000L - HMAC_CTX ctx, tmp; - int n = HMAC_Init(&ctx, NULL, 0, NULL); - n += HMAC_Update(&ctx, NULL, 0); - n += HMAC_CTX_copy(&tmp, &ctx); - n += HMAC_Final(&tmp, NULL, NULL); - #endif - ])], - [AC_MSG_RESULT([yes])], - [AC_MSG_ERROR([HMAC functions return void: please use OpenSSL version 1.0.1 or later])]) - LIBS=${LIBS_SAVED} - CPPFLAGS=${CPPFLAGS_SAVED} - fi - - AM_CONDITIONAL(HAVE_BOTAN, test "$CRYPTO_NAME" = "Botan") - AM_CONDITIONAL(HAVE_OPENSSL, test "$CRYPTO_NAME" = "OpenSSL") - AC_SUBST(CRYPTO_INCLUDES) - AC_SUBST(CRYPTO_CFLAGS) - AC_SUBST(CRYPTO_LIBS) - AC_SUBST(CRYPTO_LDFLAGS) - AC_SUBST(CRYPTO_PACKAGE) - AC_SUBST(CRYPTO_RPATH) - AC_SUBST(DISTCHECK_CRYPTO_CONFIGURE_FLAG) + # Sets up for use of botan unless openssl is specified + # sets variables CRYPTO_* + AX_CRYPTO # Check for MySql. The path to the mysql_config program is given with # the --with-mysql-config (default to /usr/bin/mysql-config). By default,