| From 6a8b5ee14acee6c258bbaeb8b148ee0dd0d62d3d Mon Sep 17 00:00:00 2001 |
| From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be> |
| Date: Fri, 16 Feb 2018 15:36:59 +0100 |
| Subject: [PATCH] configure.ac: use pkg-config for openssl |
| |
| It is better to use pkg-config to detect openssl if that is possible. |
| pkg-config will add e.g. -lz and -ldl when needed. If pkg-config |
| fails, fall back to the old approach of detecting headers and libs. |
| Some of the additional openssl support (e.g. adding -ldl) is moved |
| inside the non-pkg-config path. |
| |
| Since AC_CHECK_LIBS adds the library found to LIBS, do the same in |
| the pkg-config case. Normally the Makefile.am should instead use |
| OPENSSL_LIBS where needed, but this is not done consistently. |
| |
| When --with-openssl=DIR is given, still perform the test (both with |
| pkg-config and by checking headers and libs). I.e., remove |
| $specialssldir. |
| |
| While we're at it, simplify the headers checks by merging them into a |
| single AC_CHECK_HEADERS. |
| |
| Note that it is (still) not an error when openssl is not found, |
| although the build will then fail. |
| |
| Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> |
| --- |
| configure.ac | 67 ++++++++++++++++++++++-------------------------------------- |
| 1 file changed, 24 insertions(+), 43 deletions(-) |
| |
| diff --git a/configure.ac b/configure.ac |
| index 4874c0b..ccab9f4 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -16,7 +16,6 @@ AC_CANONICAL_HOST |
| use_openssl="yes" |
| use_libev="yes" |
| |
| -specialssldir="" |
| AC_ARG_WITH(openssl, |
| [AS_HELP_STRING([--with-openssl=DIR], |
| [Use optional openssl libs and includes from [DIR]/lib/ and [DIR]/include/openssl/])], |
| @@ -27,7 +26,6 @@ AC_ARG_WITH(openssl, |
| use_openssl="no" |
| ;; |
| *) |
| - specialssldir="$with_openssl" |
| LDFLAGS="$LDFLAGS -L$with_openssl/lib" |
| CPPFLAGS="-I$with_openssl/include $CPPFLAGS" |
| ;; |
| @@ -139,59 +137,42 @@ AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK |
| AC_FUNC_REALLOC |
| AC_CHECK_FUNCS([clock_gettime dup2 gethostbyname gettimeofday inet_ntoa malloc memmove memset select socket strcasecmp strchr strdup strerror strncasecmp strrchr uname sched_yield pthread_yield pthread_yield_np]) |
| |
| -# OpenSSL requires dlopen on some platforms |
| -AC_SEARCH_LIBS(dlopen, dl) |
| - |
| # If they didn't specify it, we try to find it |
| -if test "$use_openssl" = "yes" -a -z "$specialssldir" ; then |
| - AC_CHECK_HEADER(openssl/ssl.h,, |
| +if test "$use_openssl" = "yes" ; then |
| + # First try pkg-config; fall back to headers/libs check |
| + PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.0.0], |
| + [LIBS="$OPENSSL_LIBS $LIBS"], |
| + [AC_CHECK_HEADERS([openssl/ssl.h openssl/err.h openssl/rand.h],, |
| [ use_openssl="no" |
| - AC_MSG_WARN([Failed to find openssl/ssl.h so OpenSSL will not be used. |
| - If it is installed you can try the --with-openssl=DIR argument]) ]) |
| - |
| - if test "$use_openssl" = "yes"; then |
| - AC_CHECK_HEADER(openssl/err.h,, |
| - [ use_openssl="no" |
| - AC_MSG_WARN([Failed to find openssl/err.h so OpenSSL will not be used. |
| - If it is installed you can try the --with-openssl=DIR argument]) ]) |
| - fi |
| - |
| - if test "$use_openssl" = "yes"; then |
| - AC_CHECK_HEADER(openssl/rand.h,, |
| - [ use_openssl="no" |
| - AC_MSG_WARN([Failed to find openssl/rand.h so OpenSSL will not be used. |
| - If it is installed you can try the --with-openssl=DIR argument]) ]) |
| - fi |
| - |
| - if test "$use_openssl" = "yes"; then |
| - AC_CHECK_LIB(crypto, BIO_int_ctrl, |
| - [], |
| - [ use_openssl="no" |
| - AC_MSG_WARN([Failed to find libcrypto so OpenSSL will not be used. |
| - If it is installed you can try the --with-openssl=DIR argument]) ]) |
| - fi |
| - |
| - if test "$use_openssl" = "yes"; then |
| - AC_CHECK_LIB(ssl, SSL_new, |
| - [], |
| - [ use_openssl="no" |
| - AC_MSG_WARN([Failed to find libssl so OpenSSL will not be used. |
| + AC_MSG_WARN([Failed to find openssl headers so OpenSSL will not be used. |
| If it is installed you can try the --with-openssl=DIR argument]) ]) |
| - fi |
| + if test "$use_openssl" = "yes"; then |
| + AC_CHECK_LIB(crypto, BIO_int_ctrl, [], |
| + [ use_openssl="no" |
| + AC_MSG_WARN([Failed to find libcrypto so OpenSSL will not be used. |
| +If it is installed you can try the --with-openssl=DIR argument]) ]) |
| + fi |
| + if test "$use_openssl" = "yes"; then |
| + AC_CHECK_LIB(ssl, SSL_new, [], |
| + [ use_openssl="no" |
| + AC_MSG_WARN([Failed to find libssl so OpenSSL will not be used. |
| +If it is installed you can try the --with-openssl=DIR argument]) ]) |
| + fi |
| + if test "$use_openssl" = "yes"; then |
| + # OpenSSL requires dlopen on some platforms |
| + AC_SEARCH_LIBS(dlopen, dl) |
| + OPENSSL_LIBS="-lssl -lcrypto" |
| + fi]) |
| fi |
| |
| -OPENSSL_CFLAGS="" |
| -OPENSSL_LIBS="" |
| if test "$use_openssl" = "yes"; then |
| AC_DEFINE([HAVE_OPENSSL], [1], [Define to 1 if you have OpenSSL.]) |
| - OPENSSL_LIBS="-lssl -lcrypto" |
| # Define in Makefile also. |
| HAVE_OPENSSL=yes |
| - AC_SUBST(HAVE_OPENSSL) |
| fi |
| AC_SUBST([OPENSSL_CFLAGS]) |
| AC_SUBST([OPENSSL_LIBS]) |
| - |
| +AC_SUBST([HAVE_OPENSSL]) |
| |
| |
| LIBEV_CFLAGS="" |
| -- |
| 2.15.1 |
| |