mirror of
https://github.com/transmission/transmission.git
synced 2026-02-14 23:19:34 +00:00
build: improve building with system miniupnpc (#8190)
This commit is contained in:
@@ -53,6 +53,7 @@ set(GTKMM3_MINIMUM 3.24.0)
|
||||
set(GTKMM4_MINIMUM 4.11.1)
|
||||
set(OPENSSL_MINIMUM 1.1.0)
|
||||
set(MBEDTLS_MINIMUM 2.7)
|
||||
set(MINIUPNPC_MINIMUM 2.2.1)
|
||||
set(NPM_MINIMUM 10.2.3) # Node.js 20.10 (eslint-plugin-unicorn)
|
||||
set(PSL_MINIMUM 0.21.0)
|
||||
set(QT_MINIMUM 5.15)
|
||||
@@ -547,14 +548,16 @@ if(WIN32)
|
||||
else()
|
||||
set(TR_MINIUPNPC_LIBNAME miniupnpc)
|
||||
endif()
|
||||
tr_add_external_auto_library_legacy(MINIUPNPC miniupnp/miniupnpc ${TR_MINIUPNPC_LIBNAME}
|
||||
TARGET miniupnpc::libminiupnpc
|
||||
tr_add_external_auto_library(MINIUPNPC miniupnpc
|
||||
LIBNAME ${TR_MINIUPNPC_LIBNAME}
|
||||
SOURCE_DIR miniupnp/miniupnpc
|
||||
TARGET miniupnpc::miniupnpc
|
||||
CMAKE_ARGS
|
||||
-DUPNPC_BUILD_STATIC=ON
|
||||
-DUPNPC_BUILD_SHARED=OFF
|
||||
-DUPNPC_BUILD_TESTS=OFF)
|
||||
if(NOT USE_SYSTEM_MINIUPNPC)
|
||||
target_compile_definitions(miniupnpc::libminiupnpc
|
||||
target_compile_definitions(miniupnpc::miniupnpc
|
||||
INTERFACE
|
||||
MINIUPNP_STATICLIB)
|
||||
endif()
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
if(MINIUPNPC_PREFER_STATIC_LIB)
|
||||
set(MINIUPNPC_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_check_modules(_MINIUPNPC QUIET libminiupnpc)
|
||||
endif()
|
||||
|
||||
find_path(MINIUPNPC_INCLUDE_DIR
|
||||
NAMES miniupnpc/miniupnpc.h
|
||||
HINTS ${_MINIUPNPC_INCLUDEDIR})
|
||||
find_library(MINIUPNPC_LIBRARY
|
||||
NAMES
|
||||
miniupnpc
|
||||
libminiupnpc
|
||||
HINTS ${_MINIUPNPC_LIBDIR})
|
||||
|
||||
set(MINIUPNPC_INCLUDE_DIRS ${MINIUPNPC_INCLUDE_DIR})
|
||||
set(MINIUPNPC_LIBRARIES ${MINIUPNPC_LIBRARY})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_package_handle_standard_args(MINIUPNPC
|
||||
REQUIRED_VARS
|
||||
MINIUPNPC_LIBRARY
|
||||
MINIUPNPC_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(MINIUPNPC_INCLUDE_DIR MINIUPNPC_LIBRARY)
|
||||
|
||||
if(MINIUPNPC_PREFER_STATIC_LIB)
|
||||
set(CMAKE_FIND_LIBRARY_SUFFIXES ${MINIUPNPC_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
||||
unset(MINIUPNPC_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
|
||||
endif()
|
||||
68
cmake/Findminiupnpc.cmake
Normal file
68
cmake/Findminiupnpc.cmake
Normal file
@@ -0,0 +1,68 @@
|
||||
find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
if(${CMAKE_FIND_PACKAGE_NAME}_FOUND)
|
||||
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_check_modules(_MINIUPNPC QUIET libminiupnpc)
|
||||
endif()
|
||||
|
||||
find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR
|
||||
NAMES miniupnpc/miniupnpc.h
|
||||
HINTS ${_MINIUPNPC_INCLUDEDIR})
|
||||
find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY
|
||||
NAMES
|
||||
miniupnpc
|
||||
libminiupnpc
|
||||
HINTS ${_MINIUPNPC_LIBDIR})
|
||||
|
||||
if(_MINIUPNPC_VERSION)
|
||||
set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_MINIUPNPC_VERSION})
|
||||
elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR)
|
||||
file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/miniupnpc/miniupnpc.h" _MINIUPNPC_VERSION_STR
|
||||
REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"[^\"]+\"")
|
||||
if(_MINIUPNPC_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}_LIBRARY
|
||||
${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR
|
||||
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 miniupnpc::miniupnpc)
|
||||
add_library(miniupnpc::miniupnpc INTERFACE IMPORTED)
|
||||
target_include_directories(miniupnpc::miniupnpc
|
||||
INTERFACE
|
||||
${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR})
|
||||
target_link_libraries(miniupnpc::miniupnpc
|
||||
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()
|
||||
@@ -271,7 +271,7 @@ target_link_libraries(${TR_NAME}
|
||||
FastFloat::fast_float
|
||||
psl::psl
|
||||
natpmp::natpmp
|
||||
miniupnpc::libminiupnpc
|
||||
miniupnpc::miniupnpc
|
||||
dht::dht
|
||||
libutp::libutp
|
||||
libb64::libb64
|
||||
|
||||
Reference in New Issue
Block a user