0004-configure-ac-use-pkg-config-to-retrieve-openssl.patch 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. From 656dedad48c81541060448d008b90290196263c5 Mon Sep 17 00:00:00 2001
  2. From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  3. Date: Sun, 6 Sep 2020 23:38:19 +0200
  4. Subject: [PATCH] configure.ac: use pkg-config to retrieve openssl
  5. Use pkg-config to retrieve openssl dependencies such as -latomic or -lz
  6. Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
  7. [Retrieved from:
  8. https://github.com/memcached/memcached/commit/656dedad48c81541060448d008b90290196263c5]
  9. ---
  10. README.md | 2 +-
  11. configure.ac | 133 ++++++++++++++++++++++++++-------------------------
  12. 2 files changed, 69 insertions(+), 66 deletions(-)
  13. diff --git a/README.md b/README.md
  14. index 3ce1bc2156..8fe067b767 100644
  15. --- a/README.md
  16. +++ b/README.md
  17. @@ -21,7 +21,7 @@ list to ask questions, github issues aren't seen by everyone!
  18. * libseccomp (optional, experimental, linux) - enables process restrictions for
  19. better security. Tested only on x86-64 architectures.
  20. * openssl (optional) - enables TLS support. need relatively up to date
  21. - version.
  22. + version. pkg-config is needed to find openssl dependencies (such as -lz).
  23. ## Environment
  24. diff --git a/configure.ac b/configure.ac
  25. index a0851f2131..2959a86c89 100644
  26. --- a/configure.ac
  27. +++ b/configure.ac
  28. @@ -437,80 +437,83 @@ AC_ARG_WITH(libssl,
  29. dnl ----------------------------------------------------------------------------
  30. dnl libssl detection. swiped from libevent. modified for openssl detection.
  31. +PKG_PROG_PKG_CONFIG
  32. OPENSSL_URL=https://www.openssl.org/
  33. if test "x$enable_tls" = "xyes"; then
  34. - AC_CACHE_CHECK([for libssl directory], ac_cv_libssl_dir, [
  35. - saved_LIBS="$LIBS"
  36. - saved_LDFLAGS="$LDFLAGS"
  37. - saved_CPPFLAGS="$CPPFLAGS"
  38. - le_found=no
  39. - for ledir in $trylibssldir "" $prefix /usr/local ; do
  40. + PKG_CHECK_MODULES(OPENSSL, openssl, [LIBS="$LIBS $OPENSSL_LIBS" CFLAGS="$CFLAGS $OPENSSL_CFLAGS"], [
  41. + AC_CACHE_CHECK([for libssl directory], ac_cv_libssl_dir, [
  42. + saved_LIBS="$LIBS"
  43. + saved_LDFLAGS="$LDFLAGS"
  44. + saved_CPPFLAGS="$CPPFLAGS"
  45. + le_found=no
  46. + for ledir in $trylibssldir "" $prefix /usr/local ; do
  47. + LDFLAGS="$saved_LDFLAGS"
  48. + LIBS="-lssl -lcrypto $saved_LIBS"
  49. +
  50. + # Skip the directory if it isn't there.
  51. + if test ! -z "$ledir" -a ! -d "$ledir" ; then
  52. + continue;
  53. + fi
  54. + if test ! -z "$ledir" ; then
  55. + if test -d "$ledir/lib" ; then
  56. + LDFLAGS="-L$ledir/lib $LDFLAGS"
  57. + else
  58. + LDFLAGS="-L$ledir $LDFLAGS"
  59. + fi
  60. + if test -d "$ledir/include" ; then
  61. + CPPFLAGS="-I$ledir/include $CPPFLAGS"
  62. + else
  63. + CPPFLAGS="-I$ledir $CPPFLAGS"
  64. + fi
  65. + fi
  66. + # Can I compile and link it?
  67. + AC_TRY_LINK([#include <sys/time.h>
  68. + #include <sys/types.h>
  69. + #include <assert.h>
  70. + #include <openssl/ssl.h>], [ SSL_CTX* ssl_ctx = SSL_CTX_new(TLS_server_method());
  71. + assert(OPENSSL_VERSION_NUMBER >= 0x10100000L);],
  72. + [ libssl_linked=yes ], [ libssl_linked=no ])
  73. + if test $libssl_linked = yes; then
  74. + if test ! -z "$ledir" ; then
  75. + ac_cv_libssl_dir=$ledir
  76. + _myos=`echo $target_os | cut -f 1 -d .`
  77. + AS_IF(test "$SUNCC" = "yes" -o "x$_myos" = "xsolaris2",
  78. + [saved_LDFLAGS="$saved_LDFLAGS -Wl,-R$ledir/lib"],
  79. + [AS_IF(test "$GCC" = "yes",
  80. + [saved_LDFLAGS="$saved_LDFLAGS -Wl,-rpath,$ledir/lib"])])
  81. + else
  82. + ac_cv_libssl_dir="(system)"
  83. + fi
  84. + le_found=yes
  85. + break
  86. + fi
  87. + done
  88. + LIBS="$saved_LIBS"
  89. LDFLAGS="$saved_LDFLAGS"
  90. - LIBS="-lssl -lcrypto $saved_LIBS"
  91. + CPPFLAGS="$saved_CPPFLAGS"
  92. + if test $le_found = no ; then
  93. + AC_MSG_ERROR([libssl (at least version 1.1.0) is required. You can get it from $OPENSSL_URL
  94. - # Skip the directory if it isn't there.
  95. - if test ! -z "$ledir" -a ! -d "$ledir" ; then
  96. - continue;
  97. + If it's already installed, specify its path using --with-libssl=/dir/
  98. + ])
  99. fi
  100. - if test ! -z "$ledir" ; then
  101. - if test -d "$ledir/lib" ; then
  102. - LDFLAGS="-L$ledir/lib $LDFLAGS"
  103. - else
  104. - LDFLAGS="-L$ledir $LDFLAGS"
  105. - fi
  106. - if test -d "$ledir/include" ; then
  107. - CPPFLAGS="-I$ledir/include $CPPFLAGS"
  108. - else
  109. - CPPFLAGS="-I$ledir $CPPFLAGS"
  110. - fi
  111. + ])
  112. + LIBS="-lssl -lcrypto $LIBS"
  113. + if test $ac_cv_libssl_dir != "(system)"; then
  114. + if test -d "$ac_cv_libssl_dir/lib" ; then
  115. + LDFLAGS="-L$ac_cv_libssl_dir/lib $LDFLAGS"
  116. + le_libdir="$ac_cv_libssl_dir/lib"
  117. + else
  118. + LDFLAGS="-L$ac_cv_libssl_dir $LDFLAGS"
  119. + le_libdir="$ac_cv_libssl_dir"
  120. fi
  121. - # Can I compile and link it?
  122. - AC_TRY_LINK([#include <sys/time.h>
  123. - #include <sys/types.h>
  124. - #include <assert.h>
  125. - #include <openssl/ssl.h>], [ SSL_CTX* ssl_ctx = SSL_CTX_new(TLS_server_method());
  126. - assert(OPENSSL_VERSION_NUMBER >= 0x10100000L);],
  127. - [ libssl_linked=yes ], [ libssl_linked=no ])
  128. - if test $libssl_linked = yes; then
  129. - if test ! -z "$ledir" ; then
  130. - ac_cv_libssl_dir=$ledir
  131. - _myos=`echo $target_os | cut -f 1 -d .`
  132. - AS_IF(test "$SUNCC" = "yes" -o "x$_myos" = "xsolaris2",
  133. - [saved_LDFLAGS="$saved_LDFLAGS -Wl,-R$ledir/lib"],
  134. - [AS_IF(test "$GCC" = "yes",
  135. - [saved_LDFLAGS="$saved_LDFLAGS -Wl,-rpath,$ledir/lib"])])
  136. - else
  137. - ac_cv_libssl_dir="(system)"
  138. - fi
  139. - le_found=yes
  140. - break
  141. + if test -d "$ac_cv_libssl_dir/include" ; then
  142. + CPPFLAGS="-I$ac_cv_libssl_dir/include $CPPFLAGS"
  143. + else
  144. + CPPFLAGS="-I$ac_cv_libssl_dir $CPPFLAGS"
  145. fi
  146. - done
  147. - LIBS="$saved_LIBS"
  148. - LDFLAGS="$saved_LDFLAGS"
  149. - CPPFLAGS="$saved_CPPFLAGS"
  150. - if test $le_found = no ; then
  151. - AC_MSG_ERROR([libssl (at least version 1.1.0) is required. You can get it from $OPENSSL_URL
  152. -
  153. - If it's already installed, specify its path using --with-libssl=/dir/
  154. - ])
  155. fi
  156. ])
  157. - LIBS="-lssl -lcrypto $LIBS"
  158. - if test $ac_cv_libssl_dir != "(system)"; then
  159. - if test -d "$ac_cv_libssl_dir/lib" ; then
  160. - LDFLAGS="-L$ac_cv_libssl_dir/lib $LDFLAGS"
  161. - le_libdir="$ac_cv_libssl_dir/lib"
  162. - else
  163. - LDFLAGS="-L$ac_cv_libssl_dir $LDFLAGS"
  164. - le_libdir="$ac_cv_libssl_dir"
  165. - fi
  166. - if test -d "$ac_cv_libssl_dir/include" ; then
  167. - CPPFLAGS="-I$ac_cv_libssl_dir/include $CPPFLAGS"
  168. - else
  169. - CPPFLAGS="-I$ac_cv_libssl_dir $CPPFLAGS"
  170. - fi
  171. - fi
  172. fi
  173. if test "x$enable_static" = "xyes"; then