This is an automated email from the ASF dual-hosted git repository.
maskit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new 0e321c9866 cmake: Add a check for BoringSSL version (#10949)
0e321c9866 is described below
commit 0e321c98660b6a931d760403295848d77f00cded
Author: Masakazu Kitajo <[email protected]>
AuthorDate: Tue Jan 9 22:08:23 2024 -0700
cmake: Add a check for BoringSSL version (#10949)
---
CMakeLists.txt | 18 ++++++++++++++----
cmake/CheckOpenSSLIsBoringSSL.cmake | 12 ++++++++++--
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d7bf216bd4..4646c54356 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -281,10 +281,20 @@ find_package(PCRE REQUIRED)
include(CheckOpenSSLIsBoringSSL)
find_package(OpenSSL REQUIRED)
-check_openssl_is_boringssl(OPENSSL_IS_BORINGSSL "${OPENSSL_INCLUDE_DIR}")
-
-if(NOT OPENSSL_IS_BORINGSSL AND OPENSSL_VERSION VERSION_LESS "1.1.1")
- message(FATAL_ERROR "OpenSSL version greater than 1.0.1 or BoringSSL
required")
+check_openssl_is_boringssl(OPENSSL_IS_BORINGSSL BORINGSSL_VERSION
"${OPENSSL_INCLUDE_DIR}")
+
+if(OPENSSL_IS_BORINGSSL)
+ # The consensus is a commit newer than
a1843d660b47116207877614af53defa767be46a
+ # The commit that changes API_VERSION to 27 is actually a little bit older
than the commit but still a reasonable commit
+ set(min_bssl "27")
+ if(BORINGSSL_VERSION VERSION_LESS "${min_bssl}")
+ message(FATAL_ERROR "BoringSSL API version >= ${min_bssl} or OpenSSL
required")
+ endif()
+else()
+ set(min_ossl "1.1.1")
+ if(OPENSSL_VERSION VERSION_LESS "${min_ossl}")
+ message(FATAL_ERROR "OpenSSL version >= ${min_ossl} or BoringSSL required")
+ endif()
endif()
if(OPENSSL_VERSION VERSION_GREATER_EQUAL "3.0.0")
diff --git a/cmake/CheckOpenSSLIsBoringSSL.cmake
b/cmake/CheckOpenSSLIsBoringSSL.cmake
index a779c487a1..b5c5c12831 100644
--- a/cmake/CheckOpenSSLIsBoringSSL.cmake
+++ b/cmake/CheckOpenSSLIsBoringSSL.cmake
@@ -15,7 +15,7 @@
#
#######################
-function(CHECK_OPENSSL_IS_BORINGSSL OUT_VAR OPENSSL_INCLUDE_DIR)
+function(CHECK_OPENSSL_IS_BORINGSSL OUT_IS_BORING OUT_VERSION
OPENSSL_INCLUDE_DIR)
set(CHECK_PROGRAM
"
#include <openssl/base.h>
@@ -31,5 +31,13 @@ function(CHECK_OPENSSL_IS_BORINGSSL OUT_VAR
OPENSSL_INCLUDE_DIR)
)
set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
include(CheckCXXSourceCompiles)
- check_cxx_source_compiles("${CHECK_PROGRAM}" ${OUT_VAR})
+ check_cxx_source_compiles("${CHECK_PROGRAM}" ${OUT_IS_BORING})
+ if(${${OUT_IS_BORING}})
+ file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/base.h" version_line REGEX
"^#define BORINGSSL_API_VERSION [0-9]+")
+ string(REGEX MATCH "[0-9]+" version ${version_line})
+ set(${OUT_VERSION}
+ ${version}
+ PARENT_SCOPE
+ )
+ endif()
endfunction()