summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-08-22 19:08:35 (GMT)
committerBrad King <brad.king@kitware.com>2023-08-22 19:08:35 (GMT)
commit903439495033da40f798db9ec064d9b16ea672fc (patch)
tree3e0cb28aa1e80445e31914bc0ca5ca2b18b151fd
parent1d1d905e15f1c0bdc4873acb992b2cb3f644afce (diff)
downloadCMake-903439495033da40f798db9ec064d9b16ea672fc.zip
CMake-903439495033da40f798db9ec064d9b16ea672fc.tar.gz
CMake-903439495033da40f798db9ec064d9b16ea672fc.tar.bz2
FindZLIB: Fix extraction of two-component version number 1.3
Fixes: #25200
-rw-r--r--Modules/FindZLIB.cmake35
1 files changed, 17 insertions, 18 deletions
diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake
index d0deb87..4e7d5d6 100644
--- a/Modules/FindZLIB.cmake
+++ b/Modules/FindZLIB.cmake
@@ -175,25 +175,24 @@ unset(ZLIB_NAMES_DEBUG)
mark_as_advanced(ZLIB_INCLUDE_DIR)
if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
- file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
-
- string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
- string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
- string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
- set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
-
- # only append a TWEAK version if it exists:
+ file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
+ if(ZLIB_H MATCHES "ZLIB_VERSION \"(([0-9]+)\\.([0-9]+)(\\.([0-9]+)(\\.([0-9]+))?)?)")
+ set(ZLIB_VERSION_STRING "${CMAKE_MATCH_1}")
+ set(ZLIB_VERSION_MAJOR "${CMAKE_MATCH_2}")
+ set(ZLIB_VERSION_MINOR "${CMAKE_MATCH_3}")
+ set(ZLIB_VERSION_PATCH "${CMAKE_MATCH_5}")
+ set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_7}")
+ else()
+ set(ZLIB_VERSION_STRING "")
+ set(ZLIB_VERSION_MAJOR "")
+ set(ZLIB_VERSION_MINOR "")
+ set(ZLIB_VERSION_PATCH "")
set(ZLIB_VERSION_TWEAK "")
- if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
- set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
- string(APPEND ZLIB_VERSION_STRING ".${ZLIB_VERSION_TWEAK}")
- endif()
-
- set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
- set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
- set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
-
- set(ZLIB_VERSION ${ZLIB_VERSION_STRING})
+ endif()
+ set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
+ set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
+ set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
+ set(ZLIB_VERSION "${ZLIB_VERSION_STRING}")
endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)