4bb8351414
We no longer define the ZLIB_LIBRARY cache entry, so we should not mark it as advanced either. We only use this variable when someone else defines it in order to remain compatible with older versions of this module, but we never create the entry ourselves anymore.
159 lines
5.2 KiB
CMake
159 lines
5.2 KiB
CMake
#.rst:
|
|
# FindZLIB
|
|
# --------
|
|
#
|
|
# Find the native ZLIB includes and library.
|
|
#
|
|
# IMPORTED Targets
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
|
|
# ZLIB has been found.
|
|
#
|
|
# Result Variables
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module defines the following variables:
|
|
#
|
|
# ::
|
|
#
|
|
# 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_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
|
|
#
|
|
# Backward Compatibility
|
|
# ^^^^^^^^^^^^^^^^^^^^^^
|
|
#
|
|
# 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
|
|
#
|
|
# Hints
|
|
# ^^^^^
|
|
#
|
|
# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
|
|
# module where to look.
|
|
|
|
#=============================================================================
|
|
# Copyright 2001-2011 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.)
|
|
|
|
set(_ZLIB_SEARCHES)
|
|
|
|
# Search ZLIB_ROOT first if it is set.
|
|
if(ZLIB_ROOT)
|
|
set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
|
|
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
|
|
endif()
|
|
|
|
# Normal search.
|
|
set(_ZLIB_SEARCH_NORMAL
|
|
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
|
"$ENV{PROGRAMFILES}/zlib"
|
|
)
|
|
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
|
|
|
|
set(ZLIB_NAMES z zlib zdll zlib1)
|
|
set(ZLIB_NAMES_DEBUG zlibd zlibd1)
|
|
|
|
# Try each search configuration.
|
|
foreach(search ${_ZLIB_SEARCHES})
|
|
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
|
|
endforeach()
|
|
|
|
# Allow ZLIB_LIBRARY to be set manually, as the location of the zlib library
|
|
if(NOT ZLIB_LIBRARY)
|
|
foreach(search ${_ZLIB_SEARCHES})
|
|
find_library(ZLIB_LIBRARY_RELEASE NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
|
find_library(ZLIB_LIBRARY_DEBUG NAMES ${ZLIB_NAMES_DEBUG} ${${search}} PATH_SUFFIXES lib)
|
|
endforeach()
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake)
|
|
select_library_configurations(ZLIB)
|
|
endif()
|
|
|
|
unset(ZLIB_NAMES)
|
|
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:
|
|
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()
|
|
|
|
set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
|
|
set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
|
|
set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
|
|
endif()
|
|
|
|
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
|
# all listed variables are TRUE
|
|
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
|
|
VERSION_VAR ZLIB_VERSION_STRING)
|
|
|
|
if(ZLIB_FOUND)
|
|
set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
|
|
|
if(NOT ZLIB_LIBRARIES)
|
|
set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
|
endif()
|
|
|
|
if(NOT TARGET ZLIB::ZLIB)
|
|
add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
|
|
set_target_properties(ZLIB::ZLIB PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
|
|
|
|
if(ZLIB_LIBRARY_RELEASE)
|
|
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS RELEASE)
|
|
set_target_properties(ZLIB::ZLIB PROPERTIES
|
|
IMPORTED_LOCATION_RELEASE "${ZLIB_LIBRARY_RELEASE}")
|
|
endif()
|
|
|
|
if(ZLIB_LIBRARY_DEBUG)
|
|
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS DEBUG)
|
|
set_target_properties(ZLIB::ZLIB PROPERTIES
|
|
IMPORTED_LOCATION_DEBUG "${ZLIB_LIBRARY_DEBUG}")
|
|
endif()
|
|
|
|
if(NOT ZLIB_LIBRARY_RELEASE AND NOT ZLIB_LIBRARY_DEBUG)
|
|
set_property(TARGET ZLIB::ZLIB APPEND PROPERTY
|
|
IMPORTED_LOCATION "${ZLIB_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
endif()
|