Files
transmission/cmake/Findlibdeflate.cmake

74 lines
2.8 KiB
CMake

find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE)
include(FindPackageHandleStandardArgs)
if(${CMAKE_FIND_PACKAGE_NAME}_FOUND)
if(TARGET libdeflate::libdeflate_static AND (${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB OR NOT TARGET libdeflate::libdeflate_shared))
add_library(libdeflate::libdeflate ALIAS libdeflate::libdeflate_static)
else()
add_library(libdeflate::libdeflate ALIAS libdeflate::libdeflate_shared)
endif()
find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE)
return()
endif()
if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB)
set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
if(WIN32)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES})
else()
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
endif()
endif()
if(UNIX)
find_package(PkgConfig QUIET)
# pkg-config support added in libdeflate v1.9
pkg_check_modules(_DEFLATE QUIET libdeflate)
endif()
find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR
NAMES libdeflate.h
HINTS ${_DEFLATE_INCLUDEDIR})
find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY
NAMES deflate
HINTS ${_DEFLATE_LIBDIR})
if(_DEFLATE_VERSION)
set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_DEFLATE_VERSION})
elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR)
file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/libdeflate.h" ${CMAKE_FIND_PACKAGE_NAME}_VERSION_STR
REGEX "^#define[\t ]+LIBDEFLATE_VERSION_STRING[\t ]+\"[^\"]+\"")
if(${CMAKE_FIND_PACKAGE_NAME}_VERSION_STR MATCHES "\"([^\"]+)\"")
set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${CMAKE_MATCH_1}")
endif()
endif()
find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS
${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR
${CMAKE_FIND_PACKAGE_NAME}_LIBRARY
VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION)
if(${CMAKE_FIND_PACKAGE_NAME}_FOUND)
set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR})
set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY})
if(NOT TARGET libdeflate::libdeflate)
add_library(libdeflate::libdeflate INTERFACE IMPORTED)
target_include_directories(libdeflate::libdeflate
INTERFACE
${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR})
target_link_libraries(libdeflate::libdeflate
INTERFACE
${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY})
endif()
endif()
mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY)
if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
endif()