FindOpenSSL: Add support for version-range
This commit is contained in:
parent
c5691f03e5
commit
bc00cf9300
4
Help/release/dev/FindOpenSSL-version-range.rst
Normal file
4
Help/release/dev/FindOpenSSL-version-range.rst
Normal file
@ -0,0 +1,4 @@
|
||||
FindOpenSSL-version-range
|
||||
-------------------------
|
||||
|
||||
* :module:`FindOpenSSL` module gains the capability to manage a version range.
|
@ -7,6 +7,13 @@ FindOpenSSL
|
||||
|
||||
Find the OpenSSL encryption library.
|
||||
|
||||
This module finds an installed OpenSSL library and determines its version.
|
||||
|
||||
.. versionadded:: 3.19
|
||||
When a version is requested, it can be specified as a simple value or as a
|
||||
range. For a detailed description of version range usage and capabilities,
|
||||
refer to the :command:`find_package` command.
|
||||
|
||||
.. versionadded:: 3.18
|
||||
Support for OpenSSL 3.0.
|
||||
|
||||
@ -566,6 +573,7 @@ find_package_handle_standard_args(OpenSSL
|
||||
OPENSSL_INCLUDE_DIR
|
||||
VERSION_VAR
|
||||
OPENSSL_VERSION
|
||||
HANDLE_VERSION_RANGE
|
||||
HANDLE_COMPONENTS
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
||||
|
@ -239,6 +239,9 @@ add_RunCMake_test(FileAPI -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
|
||||
add_RunCMake_test(FindBoost)
|
||||
add_RunCMake_test(FindLua)
|
||||
add_RunCMake_test(FindOpenGL)
|
||||
if(CMake_TEST_FindOpenSSL)
|
||||
add_RunCMake_test(FindOpenSSL)
|
||||
endif()
|
||||
if(CMake_TEST_UseSWIG)
|
||||
add_RunCMake_test(FindSWIG)
|
||||
add_RunCMake_test(UseSWIG -DCMake_TEST_FindPython=${CMake_TEST_FindPython})
|
||||
|
3
Tests/RunCMake/FindOpenSSL/CMakeLists.txt
Normal file
3
Tests/RunCMake/FindOpenSSL/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.19...3.20)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
5
Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake
Normal file
5
Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
include(RunCMake)
|
||||
|
||||
run_cmake(version)
|
||||
run_cmake(version-exact)
|
||||
run_cmake(version-range)
|
19
Tests/RunCMake/FindOpenSSL/version-exact.cmake
Normal file
19
Tests/RunCMake/FindOpenSSL/version-exact.cmake
Normal file
@ -0,0 +1,19 @@
|
||||
cmake_minimum_required (VERSION 3.19...3.20)
|
||||
|
||||
find_package (OpenSSL REQUIRED COMPONENTS Crypto)
|
||||
# Store version without a possibly trailing letter.
|
||||
string (REGEX MATCH "^([0-9.]+)" version "${OPENSSL_VERSION}")
|
||||
|
||||
# clean-up OpenSSL variables
|
||||
unset (OPENSSL_INCLUDE_DIR)
|
||||
unset (OPENSSL_CRYPTO_LIBRARY)
|
||||
unset (OPENSSL_CRYPTO_LIBRARIES)
|
||||
unset (OPENSSL_LIBRARIES)
|
||||
unset (OPENSSL_VERSION)
|
||||
unset (OPENSSL_FOUND)
|
||||
|
||||
|
||||
find_package (OpenSSL ${version} EXACT COMPONENTS Crypto)
|
||||
if (NOT OPENSSL_FOUND)
|
||||
message (FATAL_ERROR "Failed to find OpenSSL with version ${version} EXACT")
|
||||
endif()
|
37
Tests/RunCMake/FindOpenSSL/version-range.cmake
Normal file
37
Tests/RunCMake/FindOpenSSL/version-range.cmake
Normal file
@ -0,0 +1,37 @@
|
||||
cmake_minimum_required (VERSION 3.19...3.20)
|
||||
|
||||
find_package (OpenSSL REQUIRED COMPONENTS Crypto)
|
||||
# Store version without a possibly trailing letter.
|
||||
string (REGEX MATCH "^([0-9.]+)" version "${OPENSSL_VERSION}")
|
||||
|
||||
# clean-up OpenSSL variables
|
||||
unset (OPENSSL_INCLUDE_DIR)
|
||||
unset (OPENSSL_CRYPTO_LIBRARY)
|
||||
unset (OPENSSL_CRYPTO_LIBRARIES)
|
||||
unset (OPENSSL_LIBRARIES)
|
||||
unset (OPENSSL_VERSION)
|
||||
unset (OPENSSL_FOUND)
|
||||
|
||||
## Specify a range including current OpenSSL version
|
||||
string (REGEX MATCH "^([0-9]+)" upper_version "${version}")
|
||||
math (EXPR upper_version "${upper_version} + 1")
|
||||
|
||||
find_package (OpenSSL 0.9...${upper_version}.0 COMPONENTS Crypto)
|
||||
if (NOT OPENSSL_FOUND)
|
||||
message (FATAL_ERROR "Failed to find OpenSSL with version range 0.9...${upper_version}.0")
|
||||
endif()
|
||||
|
||||
# clean-up OpenSSL variables
|
||||
unset (OPENSSL_INCLUDE_DIR)
|
||||
unset (OPENSSL_CRYPTO_LIBRARY)
|
||||
unset (OPENSSL_CRYPTO_LIBRARIES)
|
||||
unset (OPENSSL_LIBRARIES)
|
||||
unset (OPENSSL_VERSION)
|
||||
unset (OPENSSL_FOUND)
|
||||
|
||||
## Specify a range excluding current OpenSSL version
|
||||
set (range 0.9...<${version})
|
||||
find_package (OpenSSL ${range} COMPONENTS Crypto)
|
||||
if (OPENSSL_FOUND)
|
||||
message (FATAL_ERROR "Unexpectedly find OpenSSL with version range ${range}")
|
||||
endif()
|
19
Tests/RunCMake/FindOpenSSL/version.cmake
Normal file
19
Tests/RunCMake/FindOpenSSL/version.cmake
Normal file
@ -0,0 +1,19 @@
|
||||
cmake_minimum_required (VERSION 3.19...3.20)
|
||||
|
||||
find_package (OpenSSL REQUIRED COMPONENTS Crypto)
|
||||
# Store version without a possibly trailing letter.
|
||||
string (REGEX MATCH "^([0-9.]+)" version "${OPENSSL_VERSION}")
|
||||
|
||||
# clean-up OpenSSL variables
|
||||
unset (OPENSSL_INCLUDE_DIR)
|
||||
unset (OPENSSL_CRYPTO_LIBRARY)
|
||||
unset (OPENSSL_CRYPTO_LIBRARIES)
|
||||
unset (OPENSSL_LIBRARIES)
|
||||
unset (OPENSSL_VERSION)
|
||||
unset (OPENSSL_FOUND)
|
||||
|
||||
|
||||
find_package (OpenSSL ${version} COMPONENTS Crypto)
|
||||
if (NOT OPENSSL_FOUND)
|
||||
message (FATAL_ERROR "Failed to find OpenSSL with version ${version}")
|
||||
endif()
|
Loading…
Reference in New Issue
Block a user