]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
cmake: add missing version detection to Find modules
authorViktor Szakats <commit@vsz.me>
Tue, 13 Aug 2024 20:59:50 +0000 (22:59 +0200)
committerViktor Szakats <commit@vsz.me>
Fri, 16 Aug 2024 14:53:44 +0000 (16:53 +0200)
- use `pkg-config` version when available and where it wasn't yet used.

- add manual version detection for dependencies where this is possible
  (via a public header) and where it wasn't done yet.

Closes #14548

CMake/FindCARES.cmake
CMake/FindLibPSL.cmake
CMake/FindLibSSH2.cmake
CMake/FindMbedTLS.cmake
CMake/FindNGHTTP2.cmake
CMake/FindNGHTTP3.cmake
CMake/FindNGTCP2.cmake
CMake/FindWolfSSL.cmake
CMake/FindZstd.cmake

index c836d0099e35346638e730de00cbc51fa2f489bd..bbc942a2beb4dce87039a55b98def2aee5e227ab 100644 (file)
@@ -49,6 +49,13 @@ find_library(CARES_LIBRARY NAMES ${CARES_NAMES} "cares"
 
 if(PC_CARES_VERSION)
   set(CARES_VERSION ${PC_CARES_VERSION})
+elseif(CARES_INCLUDE_DIR AND EXISTS "${CARES_INCLUDE_DIR}/ares_version.h")
+  set(_version_regex "#[\t ]*define[\t ]+ARES_VERSION_STR[\t ]+\"([^\"]*)\"")
+  file(STRINGS "${CARES_INCLUDE_DIR}/ares_version.h" _version_str REGEX "${_version_regex}")
+  string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+  set(CARES_VERSION "${_version_str}")
+  unset(_version_regex)
+  unset(_version_str)
 endif()
 
 include(FindPackageHandleStandardArgs)
index 7a61ebc6f21619674e75a688ec6d55ad0ac9630e..75268aa5cd92686ab50c562e12d25285fef07cec 100644 (file)
@@ -47,7 +47,9 @@ find_library(LIBPSL_LIBRARY NAMES "psl" "libpsl"
     ${PC_LIBPSL_LIBRARY_DIRS}
 )
 
-if(LIBPSL_INCLUDE_DIR)
+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)
index cdb0d3fdf15de6fb206f48a5ec2282175e5671da..22e35ee3bc89e4fdf831b85ffaa78b277687af75 100644 (file)
@@ -47,7 +47,9 @@ find_library(LIBSSH2_LIBRARY NAMES "ssh2" "libssh2"
     ${PC_LIBSSH2_LIBRARY_DIRS}
 )
 
-if(LIBSSH2_INCLUDE_DIR)
+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)
index 1383fcdd0d0908ae5ea84eda2c3ac0e147f1094a..b65885a674621dde49283055013daac4ed33f1f9 100644 (file)
@@ -65,6 +65,23 @@ find_library(MBEDCRYPTO_LIBRARY "mbedcrypto"
 
 if(PC_MBEDTLS_VERSION)
   set(MBEDTLS_VERSION ${PC_MBEDTLS_VERSION})
+elseif(MBEDTLS_INCLUDE_DIR)
+  if(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h")  # 3.x
+    set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h")
+  elseif(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h")  # 2.x
+    set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h")
+  else()
+    unset(_version_header)
+  endif()
+  if(_version_header)
+    set(_version_regex "#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([0-9.]+)\"")
+    file(STRINGS "${_version_header}" _version_str REGEX "${_version_regex}")
+    string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+    set(MBEDTLS_VERSION "${_version_str}")
+    unset(_version_regex)
+    unset(_version_str)
+    unset(_version_header)
+  endif()
 endif()
 
 include(FindPackageHandleStandardArgs)
index 4217416f81e55c471f7e6f1f051524ffda54087c..b85b43f98a4fd51faab46d5ef44f5732613d9328 100644 (file)
@@ -49,6 +49,13 @@ find_library(NGHTTP2_LIBRARY NAMES "nghttp2" "nghttp2_static"
 
 if(PC_NGHTTP2_VERSION)
   set(NGHTTP2_VERSION ${PC_NGHTTP2_VERSION})
+elseif(NGHTTP2_INCLUDE_DIR AND EXISTS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h")
+  set(_version_regex "#[\t ]*define[\t ]+NGHTTP2_VERSION[\t ]+\"([^\"]*)\"")
+  file(STRINGS "${NGHTTP2_INCLUDE_DIR}/nghttp2/nghttp2ver.h" _version_str REGEX "${_version_regex}")
+  string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+  set(NGHTTP2_VERSION "${_version_str}")
+  unset(_version_regex)
+  unset(_version_str)
 endif()
 
 include(FindPackageHandleStandardArgs)
index f29e4038b751627119455c727c89ceeb30e20337..b92936de985bdb148866c1ddf1488d377ff1f4f8 100644 (file)
@@ -49,6 +49,13 @@ find_library(NGHTTP3_LIBRARY NAMES "nghttp3"
 
 if(PC_NGHTTP3_VERSION)
   set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION})
+elseif(NGHTTP3_INCLUDE_DIR AND EXISTS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h")
+  set(_version_regex "#[\t ]*define[\t ]+NGHTTP3_VERSION[\t ]+\"([^\"]*)\"")
+  file(STRINGS "${NGHTTP3_INCLUDE_DIR}/nghttp3/version.h" _version_str REGEX "${_version_regex}")
+  string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+  set(NGHTTP3_VERSION "${_version_str}")
+  unset(_version_regex)
+  unset(_version_str)
 endif()
 
 include(FindPackageHandleStandardArgs)
index 67b8f9c9a0a205776cc26fde0649f2f1da75ffa5..1f584841f7391bd07f67e36380f124c8ec3a1828 100644 (file)
@@ -57,6 +57,13 @@ find_library(NGTCP2_LIBRARY NAMES "ngtcp2"
 
 if(PC_NGTCP2_VERSION)
   set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
+elseif(NGTCP2_INCLUDE_DIR AND EXISTS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h")
+  set(_version_regex "#[\t ]*define[\t ]+NGTCP2_VERSION[\t ]+\"([^\"]*)\"")
+  file(STRINGS "${NGTCP2_INCLUDE_DIR}/ngtcp2/version.h" _version_str REGEX "${_version_regex}")
+  string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
+  set(NGTCP2_VERSION "${_version_str}")
+  unset(_version_regex)
+  unset(_version_str)
 endif()
 
 if(NGTCP2_FIND_COMPONENTS)
index 51b3c2f264aa7b0f29ab9e9ac4f81bd9f78c4055..6e827b16aec3415171d29bffd411a591a75a8dfb 100644 (file)
@@ -47,7 +47,9 @@ find_library(WolfSSL_LIBRARY NAMES "wolfssl"
     ${PC_WOLFSSL_LIBRARY_DIRS}
 )
 
-if(WolfSSL_INCLUDE_DIR)
+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}")
index dee8bfbc093336d1c4447475f56303e4f0341b80..9f812462d36c2833ef25dbeb7228a93798f4fc8c 100644 (file)
@@ -47,7 +47,9 @@ find_library(Zstd_LIBRARY NAMES "zstd"
     ${PC_Zstd_LIBRARY_DIRS}
 )
 
-if(Zstd_INCLUDE_DIR)
+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}")