| 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() |