Some zlib.h files have ZLIB_VERSION "1.2.3.3" with 4 numbers instead of 3. The regex is changed to grab the first 3 numbers. It was slow because if it failed to find that string near the top of the file, where it usually is, it would read the entire file.
54 lines
1.9 KiB
CMake
54 lines
1.9 KiB
CMake
# - Find zlib
|
|
# Find the native ZLIB includes and library
|
|
#
|
|
# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
|
|
# ZLIB_LIBRARIES - List of libraries when using zlib.
|
|
# ZLIB_FOUND - True if zlib found.
|
|
#
|
|
# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
|
|
# ZLIB_MAJOR_VERSION - the major version of zlib
|
|
# ZLIB_MINOR_VERSION - The minor version of zlib
|
|
# ZLIB_PATCH_VERSION - The patch version of zlib
|
|
|
|
#=============================================================================
|
|
# Copyright 2001-2009 Kitware, Inc.
|
|
#
|
|
# Distributed under the OSI-approved BSD License (the "License");
|
|
# see accompanying file Copyright.txt for details.
|
|
#
|
|
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
|
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
# See the License for more information.
|
|
#=============================================================================
|
|
# (To distributed this file outside of CMake, substitute the full
|
|
# License text for the above reference.)
|
|
|
|
FIND_PATH(ZLIB_INCLUDE_DIR zlib.h
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/include"
|
|
)
|
|
|
|
SET(ZLIB_NAMES z zlib zdll)
|
|
FIND_LIBRARY(ZLIB_LIBRARY
|
|
NAMES
|
|
${ZLIB_NAMES}
|
|
PATHS
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/lib"
|
|
)
|
|
MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
|
|
|
|
IF (ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
|
|
FILE(READ "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H)
|
|
STRING(REGEX REPLACE ".*#define ZLIB_VERSION \"([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1.\\2.\\3" ZLIB_VERSION_STRING "${ZLIB_H}")
|
|
ENDIF()
|
|
|
|
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
|
# all listed variables are TRUE
|
|
INCLUDE(FindPackageHandleStandardArgs)
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB DEFAULT_MSG ZLIB_INCLUDE_DIR ZLIB_LIBRARY)
|
|
|
|
IF (ZLIB_FOUND)
|
|
SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
|
SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
|
ENDIF()
|
|
|