mirror of
https://github.com/transmission/transmission.git
synced 2026-05-08 09:39:08 +01:00
build: improve building with system libdeflate (#8188)
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
if(DEFLATE_PREFER_STATIC_LIB)
|
||||
set(DEFLATE_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(DEFLATE_INCLUDE_DIR
|
||||
NAMES libdeflate.h
|
||||
HINTS ${_DEFLATE_INCLUDEDIR})
|
||||
find_library(DEFLATE_LIBRARY
|
||||
NAMES deflate
|
||||
HINTS ${_DEFLATE_LIBDIR})
|
||||
|
||||
set(DEFLATE_INCLUDE_DIRS ${DEFLATE_INCLUDE_DIR})
|
||||
set(DEFLATE_LIBRARIES ${DEFLATE_LIBRARY})
|
||||
|
||||
if(_DEFLATE_VERSION)
|
||||
set(DEFLATE_VERSION ${_DEFLATE_VERSION})
|
||||
elseif(DEFLATE_INCLUDE_DIR)
|
||||
file(STRINGS "${DEFLATE_INCLUDE_DIR}/libdeflate.h" DEFLATE_VERSION_STR
|
||||
REGEX "^#define[\t ]+LIBDEFLATE_VERSION_STRING[\t ]+\"[^\"]+\"")
|
||||
if(DEFLATE_VERSION_STR MATCHES "\"([^\"]+)\"")
|
||||
set(DEFLATE_VERSION "${CMAKE_MATCH_1}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(DEFLATE
|
||||
REQUIRED_VARS
|
||||
DEFLATE_INCLUDE_DIR
|
||||
DEFLATE_LIBRARY
|
||||
VERSION_VAR DEFLATE_VERSION)
|
||||
|
||||
mark_as_advanced(DEFLATE_INCLUDE_DIR DEFLATE_LIBRARY)
|
||||
|
||||
if(DEFLATE_PREFER_STATIC_LIB)
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${DEFLATE_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
unset(DEFLATE_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||
endif()
|
||||
@@ -0,0 +1,73 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user