version-range.cmake 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. cmake_minimum_required (VERSION 3.19...3.20)
  2. find_package (OpenSSL REQUIRED COMPONENTS Crypto)
  3. # Store version without a possibly trailing letter.
  4. string (REGEX MATCH "^([0-9.]+)" version "${OPENSSL_VERSION}")
  5. # clean-up OpenSSL variables
  6. unset (OPENSSL_INCLUDE_DIR)
  7. unset (OPENSSL_CRYPTO_LIBRARY)
  8. unset (OPENSSL_CRYPTO_LIBRARIES)
  9. unset (OPENSSL_LIBRARIES)
  10. unset (OPENSSL_VERSION)
  11. unset (OPENSSL_FOUND)
  12. ## Specify a range including current OpenSSL version
  13. string (REGEX MATCH "^([0-9]+)" upper_version "${version}")
  14. math (EXPR upper_version "${upper_version} + 1")
  15. find_package (OpenSSL 0.9...${upper_version}.0 COMPONENTS Crypto)
  16. if (NOT OPENSSL_FOUND)
  17. message (FATAL_ERROR "Failed to find OpenSSL with version range 0.9...${upper_version}.0")
  18. endif()
  19. # clean-up OpenSSL variables
  20. unset (OPENSSL_INCLUDE_DIR)
  21. unset (OPENSSL_CRYPTO_LIBRARY)
  22. unset (OPENSSL_CRYPTO_LIBRARIES)
  23. unset (OPENSSL_LIBRARIES)
  24. unset (OPENSSL_VERSION)
  25. unset (OPENSSL_FOUND)
  26. ## Specify a range excluding current OpenSSL version
  27. set (range 0.9...<${version})
  28. find_package (OpenSSL ${range} COMPONENTS Crypto)
  29. if (OPENSSL_FOUND)
  30. message (FATAL_ERROR "Unexpectedly find OpenSSL with version range ${range}")
  31. endif()