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 <mas...@apache.org>
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()

Reply via email to