115 lines
4 KiB
CMake
115 lines
4 KiB
CMake
# 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}/libdeflate.h")
|
|
file(STRINGS "${Deflate_INCLUDE_DIR}/libdeflate.h" Deflate_H REGEX "^#define[\t ]+LIBDEFLATE_VERSION_STRING[\t ]+.*")
|
|
string(REGEX REPLACE "^.*LIBDEFLATE_VERSION_STRING[\t ]+\"([0-9]+).*$" "\\1" Deflate_MAJOR_VERSION "${Deflate_H}")
|
|
string(REGEX REPLACE "^.*LIBDEFLATE_VERSION_STRING[\t ]\"[0-9]+\\.([0-9]+).*$" "\\1" Deflate_MINOR_VERSION "${Deflate_H}")
|
|
set(Deflate_VERSION_STRING "${Deflate_MAJOR_VERSION}.${Deflate_MINOR_VERSION}")
|
|
|
|
set(Deflate_VERSION_MAJOR "${Deflate_MAJOR_VERSION}")
|
|
set(Deflate_VERSION_MINOR "${Deflate_MINOR_VERSION}")
|
|
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 "${Deflate_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
endif()
|