|
| 1 | +# - Find zlib |
| 2 | +# Find the native ZLIB includes and library. |
| 3 | +# Once done this will define |
| 4 | +# |
| 5 | +# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc. |
| 6 | +# ZLIB_LIBRARIES - List of libraries when using zlib. |
| 7 | +# ZLIB_FOUND - True if zlib found. |
| 8 | +# |
| 9 | +# ZLIB_VERSION_STRING - The version of zlib found (x.y.z) |
| 10 | +# ZLIB_VERSION_MAJOR - The major version of zlib |
| 11 | +# ZLIB_VERSION_MINOR - The minor version of zlib |
| 12 | +# ZLIB_VERSION_PATCH - The patch version of zlib |
| 13 | +# ZLIB_VERSION_TWEAK - The tweak version of zlib |
| 14 | +# |
| 15 | +# The following variable are provided for backward compatibility |
| 16 | +# |
| 17 | +# ZLIB_MAJOR_VERSION - The major version of zlib |
| 18 | +# ZLIB_MINOR_VERSION - The minor version of zlib |
| 19 | +# ZLIB_PATCH_VERSION - The patch version of zlib |
| 20 | +# |
| 21 | +# An includer may set ZLIB_ROOT to a zlib installation root to tell |
| 22 | +# this module where to look. |
| 23 | + |
| 24 | +#============================================================================= |
| 25 | +# Copyright 2001-2011 Kitware, Inc. |
| 26 | +# |
| 27 | +# Distributed under the OSI-approved BSD License (the "License"); |
| 28 | +# see accompanying file Copyright.txt for details. |
| 29 | +# |
| 30 | +# This software is distributed WITHOUT ANY WARRANTY; without even the |
| 31 | +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| 32 | +# See the License for more information. |
| 33 | +#============================================================================= |
| 34 | +# (To distribute this file outside of CMake, substitute the full |
| 35 | +# License text for the above reference.) |
| 36 | + |
| 37 | +set(_ZLIB_SEARCHES) |
| 38 | + |
| 39 | +# Search ZLIB_ROOT first if it is set. |
| 40 | +if(ZLIB_ROOT) |
| 41 | + set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH) |
| 42 | + list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT) |
| 43 | +endif() |
| 44 | + |
| 45 | +# Normal search. |
| 46 | +set(_ZLIB_SEARCH_NORMAL |
| 47 | + PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]" |
| 48 | + "$ENV{PROGRAMFILES}/zlib" |
| 49 | + ) |
| 50 | +list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL) |
| 51 | + |
| 52 | +set(ZLIB_RELEASE_NAMES z zlib zdll zlib1 zlibstatic) |
| 53 | +set(ZLIB_DEBUG_NAMES zlibd zlibd1 zlibstaticd) |
| 54 | + |
| 55 | +# Try each search configuration. |
| 56 | +foreach(search ${_ZLIB_SEARCHES}) |
| 57 | + find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include) |
| 58 | + find_library(ZLIB_DEBUG_LIBRARY NAMES ${ZLIB_DEBUG_NAMES} ${${search}} PATH_SUFFIXES lib) |
| 59 | + find_library(ZLIB_RELEASE_LIBRARY NAMES ${ZLIB_RELEASE_NAMES} ${${search}} PATH_SUFFIXES lib) |
| 60 | +endforeach() |
| 61 | +message(STATUS "zlib found: ${ZLIB_DEBUG_LIBRARY} ${ZLIB_RELEASE_LIBRARY}") |
| 62 | + |
| 63 | +mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR) |
| 64 | + |
| 65 | +if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h") |
| 66 | + file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$") |
| 67 | + |
| 68 | + string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}") |
| 69 | + string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}") |
| 70 | + string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}") |
| 71 | + set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}") |
| 72 | + |
| 73 | + # only append a TWEAK version if it exists: |
| 74 | + set(ZLIB_VERSION_TWEAK "") |
| 75 | + if( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$") |
| 76 | + set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}") |
| 77 | + set(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}") |
| 78 | + endif() |
| 79 | + |
| 80 | + set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}") |
| 81 | + set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}") |
| 82 | + set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}") |
| 83 | +endif() |
| 84 | +if(ZLIB_DEBUG_LIBRARY AND ZLIB_RELEASE_LIBRARY) |
| 85 | + SET(ZLIB_LIBRARY debug ${ZLIB_DEBUG_LIBRARY} optimized ${ZLIB_RELEASE_LIBRARY}) |
| 86 | +else(ZLIB_DEBUG_LIBRARY AND ZLIB_RELEASE_LIBRARY) |
| 87 | + SET(ZLIB_LIBRARY ${ZLIB_RELEASE_LIBRARY}) |
| 88 | +endif(ZLIB_DEBUG_LIBRARY AND ZLIB_RELEASE_LIBRARY) |
| 89 | + |
| 90 | +# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if |
| 91 | +# all listed variables are TRUE |
| 92 | +include(FindPackageHandleStandardArgs) |
| 93 | +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR |
| 94 | + VERSION_VAR ZLIB_VERSION_STRING) |
| 95 | + |
| 96 | +if(ZLIB_FOUND) |
| 97 | + set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR}) |
| 98 | + set(ZLIB_LIBRARIES ${ZLIB_LIBRARY}) |
| 99 | +endif() |
| 100 | + |
0 commit comments