diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ec2fa10d..ec7f0f17a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/cmake/FindMINIUPNPC.cmake b/cmake/FindMINIUPNPC.cmake deleted file mode 100644 index e15af6785..000000000 --- a/cmake/FindMINIUPNPC.cmake +++ /dev/null @@ -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() diff --git a/cmake/Findminiupnpc.cmake b/cmake/Findminiupnpc.cmake new file mode 100644 index 000000000..3f339004b --- /dev/null +++ b/cmake/Findminiupnpc.cmake @@ -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() diff --git a/libtransmission/CMakeLists.txt b/libtransmission/CMakeLists.txt index 629fb6636..a1c4ff3e3 100644 --- a/libtransmission/CMakeLists.txt +++ b/libtransmission/CMakeLists.txt @@ -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