diff options
author | Deniz Bahadir <dbahadir@benocs.com> | 2021-01-29 15:33:23 (GMT) |
---|---|---|
committer | Deniz Bahadir <dbahadir@benocs.com> | 2021-02-01 11:27:05 (GMT) |
commit | bc00cf93009607d53daf56e2e3389ac7b3e6a846 (patch) | |
tree | 953cbe901c6b6b0b622cdb3b356ed2bb99b8c113 | |
parent | c5691f03e5626f30c432d325ab75117ad1e98bd8 (diff) | |
download | CMake-bc00cf93009607d53daf56e2e3389ac7b3e6a846.zip CMake-bc00cf93009607d53daf56e2e3389ac7b3e6a846.tar.gz CMake-bc00cf93009607d53daf56e2e3389ac7b3e6a846.tar.bz2 |
FindOpenSSL: Add support for version-range
-rw-r--r-- | Help/release/dev/FindOpenSSL-version-range.rst | 4 | ||||
-rw-r--r-- | Modules/FindOpenSSL.cmake | 8 | ||||
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/RunCMake/FindOpenSSL/CMakeLists.txt | 3 | ||||
-rw-r--r-- | Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake | 5 | ||||
-rw-r--r-- | Tests/RunCMake/FindOpenSSL/version-exact.cmake | 19 | ||||
-rw-r--r-- | Tests/RunCMake/FindOpenSSL/version-range.cmake | 37 | ||||
-rw-r--r-- | Tests/RunCMake/FindOpenSSL/version.cmake | 19 |
8 files changed, 98 insertions, 0 deletions
diff --git a/Help/release/dev/FindOpenSSL-version-range.rst b/Help/release/dev/FindOpenSSL-version-range.rst new file mode 100644 index 0000000..660bc75 --- /dev/null +++ b/Help/release/dev/FindOpenSSL-version-range.rst @@ -0,0 +1,4 @@ +FindOpenSSL-version-range +------------------------- + +* :module:`FindOpenSSL` module gains the capability to manage a version range. diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake index d574790..b1afa5f 100644 --- a/Modules/FindOpenSSL.cmake +++ b/Modules/FindOpenSSL.cmake @@ -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" diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 323306a..f58e2f3 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -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}) diff --git a/Tests/RunCMake/FindOpenSSL/CMakeLists.txt b/Tests/RunCMake/FindOpenSSL/CMakeLists.txt new file mode 100644 index 0000000..4fc11ae --- /dev/null +++ b/Tests/RunCMake/FindOpenSSL/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.19...3.20) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake b/Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake new file mode 100644 index 0000000..f941a85 --- /dev/null +++ b/Tests/RunCMake/FindOpenSSL/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCMake) + +run_cmake(version) +run_cmake(version-exact) +run_cmake(version-range) diff --git a/Tests/RunCMake/FindOpenSSL/version-exact.cmake b/Tests/RunCMake/FindOpenSSL/version-exact.cmake new file mode 100644 index 0000000..29c2ce3 --- /dev/null +++ b/Tests/RunCMake/FindOpenSSL/version-exact.cmake @@ -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() diff --git a/Tests/RunCMake/FindOpenSSL/version-range.cmake b/Tests/RunCMake/FindOpenSSL/version-range.cmake new file mode 100644 index 0000000..9390032 --- /dev/null +++ b/Tests/RunCMake/FindOpenSSL/version-range.cmake @@ -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() diff --git a/Tests/RunCMake/FindOpenSSL/version.cmake b/Tests/RunCMake/FindOpenSSL/version.cmake new file mode 100644 index 0000000..d06cd1f --- /dev/null +++ b/Tests/RunCMake/FindOpenSSL/version.cmake @@ -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() |