- use the same pattern across all Find modules:
- verify if the version header exists before reading it.
- use a single regex per lookup.
- sync regexes between Find modules.
- use generic temporary variable names.
- improve readability.
- make it simpler to transition to new CMake syntax in the future:
```cmake
file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str REGEX "<...>")
unset(_version_str)
set(CARES_VERSION "${CMAKE_MATCH_1}")
```
Ref: https://cmake.org/cmake/help/latest/policy/CMP0159.html#policy:CMP0159
- fix zstd version detection to be CMake 3.7 compatible.
Required 3.9 before this patch, for the `CMAKE_MATCH_<n>` feature.
Follow-up to
c5d506e9bbf0669d7605d1d00865ae7e229b2409 #12200
Follow-up to
4e2f3641f80e233738147d82218317f331369c50 #14548
Closes #14572
if(PC_LIBPSL_VERSION)
set(LIBPSL_VERSION ${PC_LIBPSL_VERSION})
-elseif(LIBPSL_INCLUDE_DIR)
- file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" _libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
- string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${_libpsl_version_str}")
- unset(_libpsl_version_str)
+elseif(LIBPSL_INCLUDE_DIR AND EXISTS "${LIBPSL_INCLUDE_DIR}/libpsl.h")
+ set(_version_regex "#[\t ]*define[\t ]+PSL_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(LIBPSL_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
endif()
include(FindPackageHandleStandardArgs)
if(PC_LIBSSH2_VERSION)
set(LIBSSH2_VERSION ${PC_LIBSSH2_VERSION})
-elseif(LIBSSH2_INCLUDE_DIR)
- file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION[\t ]+\"(.*)\"")
- string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBSSH2_VERSION "${_libssh2_version_str}")
- unset(_libssh2_version_str)
+elseif(LIBSSH2_INCLUDE_DIR AND EXISTS "${LIBSSH2_INCLUDE_DIR}/libssh2.h")
+ set(_version_regex "#[\t ]*define[\t ]+LIBSSH2_VERSION[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(LIBSSH2_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
endif()
include(FindPackageHandleStandardArgs)
find_path(NETTLE_INCLUDE_DIR NAMES "nettle/sha2.h")
find_library(NETTLE_LIBRARY NAMES "nettle")
- if(NETTLE_INCLUDE_DIR)
- if(EXISTS "${NETTLE_INCLUDE_DIR}/nettle/version.h")
- set(_version_regex_major "^#define[ \t]+NETTLE_VERSION_MAJOR[ \t]+([0-9]+).*")
- set(_version_regex_minor "^#define[ \t]+NETTLE_VERSION_MINOR[ \t]+([0-9]+).*")
- file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_major REGEX "${_version_regex_major}")
- file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_minor REGEX "${_version_regex_minor}")
- string(REGEX REPLACE "${_version_regex_major}" "\\1" _version_major "${_version_major}")
- string(REGEX REPLACE "${_version_regex_minor}" "\\1" _version_minor "${_version_minor}")
- unset(_version_regex_major)
- unset(_version_regex_minor)
- set(NETTLE_VERSION "${_version_major}.${_version_minor}")
- unset(_version_major)
- unset(_version_minor)
- else()
- set(NETTLE_VERSION "0.0")
- endif()
+ if(NETTLE_INCLUDE_DIR AND EXISTS "${NETTLE_INCLUDE_DIR}/nettle/version.h")
+ set(_version_regex1 "#[\t ]*define[ \t]+NETTLE_VERSION_MAJOR[ \t]+([0-9]+).*")
+ set(_version_regex2 "#[\t ]*define[ \t]+NETTLE_VERSION_MINOR[ \t]+([0-9]+).*")
+ file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_str1 REGEX "${_version_regex1}")
+ file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h" _version_str2 REGEX "${_version_regex2}")
+ string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
+ string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
+ set(NETTLE_VERSION "${_version_str1}.${_version_str2}")
+ unset(_version_regex1)
+ unset(_version_regex2)
+ unset(_version_str1)
+ unset(_version_str2)
endif()
include(FindPackageHandleStandardArgs)
find_path(WOLFSSH_INCLUDE_DIR "wolfssh/ssh.h")
find_library(WOLFSSH_LIBRARY NAMES "wolfssh" "libwolfssh")
-if(WOLFSSH_INCLUDE_DIR)
- file(STRINGS "${WOLFSSH_INCLUDE_DIR}/wolfssh/version.h" _wolfssh_version_str REGEX "#[\t ]*define[\t ]+LIBWOLFSSH_VERSION_STRING[\t ]+\"(.*)\"")
- string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" WOLFSSH_VERSION "${_wolfssh_version_str}")
- unset(_wolfssh_version_str)
+if(WOLFSSH_INCLUDE_DIR AND EXISTS "${WOLFSSH_INCLUDE_DIR}/wolfssh/version.h")
+ set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSH_VERSION_STRING[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${WOLFSSH_INCLUDE_DIR}/wolfssh/version.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(WOLFSSH_VERSION "${_version_str}")
+ unset(_version_regex)
+ unset(_version_str)
endif()
include(FindPackageHandleStandardArgs)
if(PC_WOLFSSL_VERSION)
set(WolfSSL_VERSION ${PC_WOLFSSL_VERSION})
-elseif(WolfSSL_INCLUDE_DIR)
- set(_version_regex "^#define[ \t]+LIBWOLFSSL_VERSION_STRING[ \t]+\"([^\"]+)\".*")
- file(STRINGS "${WolfSSL_INCLUDE_DIR}/wolfssl/version.h" WolfSSL_VERSION REGEX "${_version_regex}")
- string(REGEX REPLACE "${_version_regex}" "\\1" WolfSSL_VERSION "${WolfSSL_VERSION}")
+elseif(WolfSSL_INCLUDE_DIR AND EXISTS "${WolfSSL_INCLUDE_DIR}/wolfssl/version.h")
+ set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"([^\"]*)\"")
+ file(STRINGS "${WolfSSL_INCLUDE_DIR}/wolfssl/version.h" _version_str REGEX "${_version_regex}")
+ string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+ set(WolfSSL_VERSION "${_version_str}")
unset(_version_regex)
+ unset(_version_str)
endif()
include(FindPackageHandleStandardArgs)
if(PC_Zstd_VERSION)
set(Zstd_VERSION ${PC_Zstd_VERSION})
-elseif(Zstd_INCLUDE_DIR)
- file(READ "${Zstd_INCLUDE_DIR}/zstd.h" _zstd_header)
- string(REGEX MATCH ".*define ZSTD_VERSION_MAJOR *([0-9]+).*define ZSTD_VERSION_MINOR *([0-9]+).*define ZSTD_VERSION_RELEASE *([0-9]+)" _zstd_ver "${_zstd_header}")
- set(Zstd_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
- unset(_zstd_header)
- unset(_zstd_ver)
+elseif(Zstd_INCLUDE_DIR AND EXISTS "${Zstd_INCLUDE_DIR}/zstd.h")
+ set(_version_regex1 "#[\t ]*define[ \t]+ZSTD_VERSION_MAJOR[ \t]+([0-9]+).*")
+ set(_version_regex2 "#[\t ]*define[ \t]+ZSTD_VERSION_MINOR[ \t]+([0-9]+).*")
+ set(_version_regex3 "#[\t ]*define[ \t]+ZSTD_VERSION_RELEASE[ \t]+([0-9]+).*")
+ file(STRINGS "${Zstd_INCLUDE_DIR}/zstd.h" _version_str1 REGEX "${_version_regex1}")
+ file(STRINGS "${Zstd_INCLUDE_DIR}/zstd.h" _version_str2 REGEX "${_version_regex2}")
+ file(STRINGS "${Zstd_INCLUDE_DIR}/zstd.h" _version_str3 REGEX "${_version_regex3}")
+ string(REGEX REPLACE "${_version_regex1}" "\\1" _version_str1 "${_version_str1}")
+ string(REGEX REPLACE "${_version_regex2}" "\\1" _version_str2 "${_version_str2}")
+ string(REGEX REPLACE "${_version_regex3}" "\\1" _version_str3 "${_version_str3}")
+ set(Zstd_VERSION "${_version_str1}.${_version_str2}.${_version_str3}")
+ unset(_version_regex1)
+ unset(_version_regex2)
+ unset(_version_regex3)
+ unset(_version_str1)
+ unset(_version_str2)
+ unset(_version_str3)
endif()
include(FindPackageHandleStandardArgs)