Peter Stuge wrote: > * Neither --without-x nor --with-x=no makes configure skip the check > * --with-x=/path is prefered over --with-x-prefix=/path .. > it should be similar to what happens for OpenSSL and I'd also > like to remove the LDFLAGS and CFLAGS stuff; AC_LIB_HAVE_LINKFLAGS > already sets LTLIBGCRYPT and LTLIBMBEDTLS anyway.
Here's my proposed patch. If no objections I'll send a proper commit. //Peter
diff --git a/acinclude.m4 b/acinclude.m4 index 06583e9..28b85c2 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -382,80 +382,56 @@ AC_DEFUN([CURL_CONFIGURE_REENTRANT], [ # ]) -AC_DEFUN([LIBSSH2_CHECKFOR_MBEDTLS], [ - - old_LDFLAGS=$LDFLAGS - old_CFLAGS=$CFLAGS - if test -n "$use_mbedtls" && test "$use_mbedtls" != "no"; then - LDFLAGS="$LDFLAGS -L$use_mbedtls/lib" - CFLAGS="$CFLAGS -I$use_mbedtls/include" +AC_DEFUN([LIBSSH2_CHECKFOR_OPENSSL], [ + if test "$found_crypto" = "none" && test "$use_openssl" != "no"; then + AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [#include <openssl/ssl.h>]) fi + if test "$ac_cv_libssl" = "yes"; then + AC_DEFINE(LIBSSH2_OPENSSL, 1, [Use OpenSSL]) + LIBSREQUIRED=libssl,libcrypto - if test "$use_mbedtls" != "no"; then - AC_LIB_HAVE_LINKFLAGS([mbedtls], [], [ - #include <mbedtls/version.h> - ]) - fi + # Not all OpenSSL have AES-CTR functions. + save_LIBS="$LIBS" + LIBS="$LIBS $LIBSSL" + AC_CHECK_FUNCS(EVP_aes_128_ctr) + LIBS="$save_LIBS" - if test "$ac_cv_libmbedtls" = "yes"; then - AC_DEFINE(LIBSSH2_MBEDTLS, 1, [Use mbedtls]) - LIBSREQUIRED= # mbedtls doesn't provide a .pc file - LIBS="$LIBS -lmbedtls -lmbedcrypto" - found_crypto=libmbedtls - support_clear_memory=yes - else - # restore - LDFLAGS=$old_LDFLAGS - CFLAGS=$old_CFLAGS + found_crypto="OpenSSL (AES-CTR: ${ac_cv_func_EVP_aes_128_ctr:-N/A})" fi ]) AC_DEFUN([LIBSSH2_CHECKFOR_GCRYPT], [ - - old_LDFLAGS=$LDFLAGS - old_CFLAGS=$CFLAGS - if test -n "$use_libgcrypt" && test "$use_libgcrypt" != "no"; then - LDFLAGS="$LDFLAGS -L$use_libgcrypt/lib" - CFLAGS="$CFLAGS -I$use_libgcrypt/include" - fi - - if test "$use_libgcrypt" != "no"; then - AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [ - #include <gcrypt.h> - ]) + if test "$found_crypto" = "none" && test "$use_libgcrypt" != "no"; then + AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [#include <gcrypt.h>]) fi - if test "$ac_cv_libgcrypt" = "yes"; then AC_DEFINE(LIBSSH2_LIBGCRYPT, 1, [Use libgcrypt]) LIBSREQUIRED= # libgcrypt doesn't provide a .pc file. sad face. LIBS="$LIBS -lgcrypt" found_crypto=libgcrypt - else - # restore - LDFLAGS=$old_LDFLAGS - CFLAGS=$old_CFLAGS fi ]) - AC_DEFUN([LIBSSH2_CHECKFOR_WINCNG], [ + if test "$found_crypto" = "none" && test "$use_wincng" != "no"; then - # Look for Windows Cryptography API: Next Generation + # Look for Windows Cryptography API: Next Generation - AC_LIB_HAVE_LINKFLAGS([bcrypt], [], [ - #include <windows.h> - #include <bcrypt.h> - ]) - AC_LIB_HAVE_LINKFLAGS([crypt32], [], [ - #include <windows.h> - #include <wincrypt.h> - ]) - AC_CHECK_HEADERS([ntdef.h ntstatus.h], [], [], [ - #include <windows.h> - ]) - AC_CHECK_DECLS([SecureZeroMemory], [], [], [ - #include <windows.h> - ]) + AC_LIB_HAVE_LINKFLAGS([bcrypt], [], [ + #include <windows.h> + #include <bcrypt.h> + ]) + AC_LIB_HAVE_LINKFLAGS([crypt32], [], [ + #include <windows.h> + #include <wincrypt.h> + ]) + AC_CHECK_HEADERS([ntdef.h ntstatus.h], [], [], [ + #include <windows.h> + ]) + AC_CHECK_DECLS([SecureZeroMemory], [], [], [ + #include <windows.h> + ]) + fi if test "$ac_cv_libbcrypt" = "yes"; then AC_DEFINE(LIBSSH2_WINCNG, 1, [Use Windows CNG]) @@ -470,3 +446,16 @@ AC_DEFUN([LIBSSH2_CHECKFOR_WINCNG], [ fi fi ]) + +AC_DEFUN([LIBSSH2_CHECKFOR_MBEDTLS], [ + if test "$found_crypto" = "none" && test "$use_mbedtls" != "no"; then + AC_LIB_HAVE_LINKFLAGS([mbedtls], [], [#include <mbedtls/version.h>]) + fi + if test "$ac_cv_libmbedtls" = "yes"; then + AC_DEFINE(LIBSSH2_MBEDTLS, 1, [Use mbedtls]) + LIBSREQUIRED= # mbedtls doesn't provide a .pc file + LIBS="$LIBS -lmbedtls -lmbedcrypto" + found_crypto=mbedtls + support_clear_memory=yes + fi +]) diff --git a/configure.ac b/configure.ac index fe290ec..b8c74bb 100644 --- a/configure.ac +++ b/configure.ac @@ -86,47 +86,33 @@ AC_SYS_LARGEFILE found_crypto=none # Configure parameters -AC_ARG_WITH(openssl, + +AC_ARG_WITH([openssl], AC_HELP_STRING([--with-openssl],[Use OpenSSL for crypto]), use_openssl=$withval,use_openssl=auto) -AC_ARG_WITH(libgcrypt, + +AC_ARG_WITH([libgcrypt], AC_HELP_STRING([--with-libgcrypt],[Use libgcrypt for crypto]), - [ use_libgcrypt=$withval - LIBSSH2_CHECKFOR_GCRYPT - ], use_libgcrypt=auto) -AC_ARG_WITH(wincng, + use_libgcrypt=$withval,use_libgcrypt=auto) + +AC_ARG_WITH([wincng], AC_HELP_STRING([--with-wincng],[Use Windows CNG for crypto]), - [ use_wincng=$withval - LIBSSH2_CHECKFOR_WINCNG - ] ,use_wincng=auto) + use_wincng=$withval,use_wincng=auto) + AC_ARG_WITH([mbedtls], AC_HELP_STRING([--with-mbedtls],[Use mbedTLS for crypto]), - [ use_mbedtls=$withval - LIBSSH2_CHECKFOR_MBEDTLS - ], use_mbedtls=auto -) -AC_ARG_WITH(libz, + use_mbedtls=$withval,use_mbedtls=auto) + +AC_ARG_WITH([libz], AC_HELP_STRING([--with-libz],[Use zlib for compression]), use_libz=$withval,use_libz=auto) support_clear_memory=no -# Look for OpenSSL -if test "$found_crypto" = "none" && test "$use_openssl" != "no"; then - AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [#include <openssl/ssl.h>]) -fi -if test "$ac_cv_libssl" = "yes"; then - AC_DEFINE(LIBSSH2_OPENSSL, 1, [Use OpenSSL]) - LIBSREQUIRED=libssl,libcrypto - - # Not all OpenSSL have AES-CTR functions. - save_LIBS="$LIBS" - LIBS="$LIBS $LIBSSL" - AC_CHECK_FUNCS(EVP_aes_128_ctr) - LIBS="$save_LIBS" - - found_crypto="OpenSSL (AES-CTR: ${ac_cv_func_EVP_aes_128_ctr:-N/A})" -fi +LIBSSH2_CHECKFOR_OPENSSL +LIBSSH2_CHECKFOR_GCRYPT +LIBSSH2_CHECKFOR_WINCNG +LIBSSH2_CHECKFOR_MBEDTLS AM_CONDITIONAL(OPENSSL, test "$ac_cv_libssl" = "yes") AM_CONDITIONAL(WINCNG, test "$ac_cv_libbcrypt" = "yes") diff --git a/src/Makefile.am b/src/Makefile.am index c14dc7c..6ba122b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -65,4 +65,4 @@ VERSION=-version-info 1:1:0 libssh2_la_LDFLAGS = $(VERSION) -no-undefined \ -export-symbols-regex '^libssh2_.*' \ - $(LTLIBGCRYPT) $(LTLIBSSL) $(LTLIBZ) + $(LTLIBSSL) $(LTLIBGCRYPT) $(LTLIBMBEDTLS) $(LTLIBZ)
_______________________________________________ libssh2-devel https://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel