diff options
Diffstat (limited to 'tiff/cmake/FindDeflate.cmake')
-rw-r--r-- | tiff/cmake/FindDeflate.cmake | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tiff/cmake/FindDeflate.cmake b/tiff/cmake/FindDeflate.cmake new file mode 100644 index 00000000..ef6a5765 --- /dev/null +++ b/tiff/cmake/FindDeflate.cmake @@ -0,0 +1,116 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindDeflate +-------- + +Find the native Deflate includes and library. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``Deflate::Deflate``, if +Deflate has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +:: + + Deflate_INCLUDE_DIRS - where to find deflate.h, etc. + Deflate_LIBRARIES - List of libraries when using deflate. + Deflate_FOUND - True if deflate found. + +:: + + Deflate_VERSION_STRING - The version of deflate found (x.y.z) + Deflate_VERSION_MAJOR - The major version of deflate + Deflate_VERSION_MINOR - The minor version of deflate + + Debug and Release variants are found separately. +#]=======================================================================] + +# Standard names to search for +set(Deflate_NAMES deflate deflatestatic) +set(Deflate_NAMES_DEBUG deflated deflatestaticd) + +find_path(Deflate_INCLUDE_DIR + NAMES libdeflate.h + PATH_SUFFIXES include) + +set(Deflate_OLD_FIND_LIBRARY_PREFIXES "${CMAKE_FIND_LIBRARY_PREFIXES}") +# Library has a "lib" prefix even on Windows. +set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "") + +# Allow Deflate_LIBRARY to be set manually, as the location of the deflate library +if(NOT Deflate_LIBRARY) + find_library(Deflate_LIBRARY_RELEASE + NAMES ${Deflate_NAMES} + PATH_SUFFIXES lib) + find_library(Deflate_LIBRARY_DEBUG + NAMES ${Deflate_NAMES_DEBUG} + PATH_SUFFIXES lib) + + include(SelectLibraryConfigurations) + select_library_configurations(Deflate) +endif() + +set(CMAKE_FIND_LIBRARY_PREFIXES "${Deflate_OLD_FIND_LIBRARY_PREFIXES}") + +unset(Deflate_NAMES) +unset(Deflate_NAMES_DEBUG) +unset(Deflate_OLD_FIND_LIBRARY_PREFIXES) + +mark_as_advanced(Deflate_INCLUDE_DIR) + +if(Deflate_INCLUDE_DIR AND EXISTS "${Deflate_INCLUDE_DIR}/deflate.h") + file(STRINGS "${Deflate_INCLUDE_DIR}/libdeflate.h" Deflate_H REGEX "^#define LIBDEFLATE_VERSION_STRING\s+\"[^\"]*\"$") + + string(REGEX REPLACE "^.*Deflate_VERSION \"([0-9]+).*$" "\\1" Deflate_MAJOR_VERSION "${Deflate_H}") + string(REGEX REPLACE "^.*Deflate_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" Deflate_MINOR_VERSION "${Deflate_H}") + set(Deflate_VERSION_STRING "${Deflate_MAJOR_VERSION}.${Deflate_MINOR_VERSION}") + + set(Deflate_MAJOR_VERSION "${Deflate_VERSION_MAJOR}") + set(Deflate_MINOR_VERSION "${Deflate_VERSION_MINOR}") +endif() + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Deflate + REQUIRED_VARS Deflate_LIBRARY Deflate_INCLUDE_DIR + VERSION_VAR Deflate_VERSION_STRING) + +if(Deflate_FOUND) + set(Deflate_INCLUDE_DIRS ${Deflate_INCLUDE_DIR}) + + if(NOT Deflate_LIBRARIES) + set(Deflate_LIBRARIES ${Deflate_LIBRARY}) + endif() + + if(NOT TARGET Deflate::Deflate) + add_library(Deflate::Deflate UNKNOWN IMPORTED) + set_target_properties(Deflate::Deflate PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Deflate_INCLUDE_DIRS}") + + if(Deflate_LIBRARY_RELEASE) + set_property(TARGET Deflate::Deflate APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(Deflate::Deflate PROPERTIES + IMPORTED_LOCATION_RELEASE "${Deflate_LIBRARY_RELEASE}") + endif() + + if(Deflate_LIBRARY_DEBUG) + set_property(TARGET Deflate::Deflate APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(Deflate::Deflate PROPERTIES + IMPORTED_LOCATION_DEBUG "${Deflate_LIBRARY_DEBUG}") + endif() + + if(NOT Deflate_LIBRARY_RELEASE AND NOT Deflate_LIBRARY_DEBUG) + set_target_properties(Deflate::Deflate PROPERTIES + IMPORTED_LOCATION_RELEASE "${Deflate_LIBRARY}") + endif() + endif() +endif() |