1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
# - Find zlib
#
# Find the native ZLIB includes and library.
# Once done this will define
#
# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
# ZLIB_LIBRARIES - List of libraries when using zlib.
# ZLIB_FOUND - True if zlib found.
# ZLIB_DLL_DIR - (Windows) Path to the zlib DLL.
# ZLIB_DLL - (Windows) Name of the zlib DLL.
# ZLIB_PDB - (Windows) Name of the zlib PDB.
#
# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
# ZLIB_VERSION_MAJOR - The major version of zlib
# ZLIB_VERSION_MINOR - The minor version of zlib
# ZLIB_VERSION_PATCH - The patch version of zlib
# ZLIB_VERSION_TWEAK - The tweak version of zlib
#
# The following variable are provided for backward compatibility
#
# 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 distribute this file outside of CMake, substitute the full
# License text for the above reference.)
include( FindWSWinLibs )
# Zlib is included with GLib2
FindWSWinLibs( "glib-bundle-*" "ZLIB_HINTS" )
if(MSVC)
# else we'll find Strawberry Perl's version
set (_zlib_sys_env_option NO_SYSTEM_ENVIRONMENT_PATH)
endif()
if (NOT ZLIB_INCLUDE_DIR OR NOT ZLIB_LIBRARY)
if (NOT USE_REPOSITORY) # else we'll find Strawberry Perl's pkgconfig
find_package(PkgConfig)
pkg_search_module(ZLIB zlib)
endif()
FIND_PATH(ZLIB_INCLUDE_DIR
NAMES
zlib.h
HINTS
"${ZLIB_INCLUDEDIR}"
${ZLIB_HINTS}/include
${ZLIB_HINTS}
PATHS
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/include"
${_zlib_sys_env_option}
)
SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1)
FIND_LIBRARY(ZLIB_LIBRARY
NAMES
${ZLIB_NAMES}
HINTS
"${ZLIB_LIBDIR}"
${ZLIB_HINTS}/lib
${ZLIB_HINTS}
PATHS
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]/lib"
${_zlib_sys_env_option}
)
endif()
unset(_zlib_sys_env_option)
MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
# 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 REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
VERSION_VAR ZLIB_VERSION_STRING)
if(ZLIB_FOUND)
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:
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}")
SET(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
ENDIF( "${ZLIB_H}" MATCHES "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+).*$")
SET(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
SET(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
SET(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
ENDIF()
#
# inflatePrime was added in zlib 1.2.2.4 in 2005. We're guaranteed
# to have it on Windows.
#
IF(WIN32)
SET(HAVE_INFLATEPRIME ON)
ELSE()
INCLUDE(CMakePushCheckState)
INCLUDE(CheckFunctionExists)
CMAKE_PUSH_CHECK_STATE()
set(CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${ZLIB_LIBRARY})
#
# Check for inflate() in zlib, to make sure the zlib library is
# usable.
#
# For example, on at least some versions of Fedora, if you have a
# 64-bit machine, have both the 32-bit and 64-bit versions of the
# run-time zlib package installed, and have only the *32-bit*
# version of the zlib development package installed, it'll find the
# header, and think it can use zlib, and will use it in subsequent
# tests, but it'll try and link 64-bit test programs with the 32-bit
# library, causing those tests to falsely fail. Hilarity ensues.
#
CHECK_FUNCTION_EXISTS("inflate" HAVE_INFLATE)
IF(NOT HAVE_INFLATE)
MESSAGE(FATAL_ERROR "zlib.h found but linking with -lz failed to find inflate(); do you have the right developer package installed (32-bit vs. 64-bit)?")
ENDIF()
CHECK_FUNCTION_EXISTS("inflatePrime" HAVE_INFLATEPRIME)
# reset
CMAKE_POP_CHECK_STATE()
ENDIF()
#AddWSWinDLL(ZLIB ZLIB_HINTS "zlib*")
# With zlib-ng the hints does not work
set ( ZLIB_DLL_DIR "${ZLIB_HINTS}/bin"
CACHE PATH "Path to ZLIB DLL"
)
file( GLOB _ZLIB_dll RELATIVE "${ZLIB_DLL_DIR}"
"${ZLIB_DLL_DIR}/zlib1.dll"
)
set ( ZLIB_DLL ${_ZLIB_dll}
CACHE FILEPATH "ZLIB DLL file name"
)
file( GLOB _ZLIB_pdb RELATIVE "${ZLIB_DLL_DIR}"
"${ZLIB_DLL_DIR}/zlib.pdb"
)
set ( ZLIB_PDB ${_ZLIB_pdb}
CACHE FILEPATH "ZLIB PDB file name"
)
SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
ELSE()
SET(ZLIB_INCLUDE_DIRS )
SET(ZLIB_LIBRARIES )
SET(ZLIB_DLL_DIR )
SET(ZLIB_DLL )
SET(ZLIB_PDB )
ENDIF()
|