From b5b7cb54597910d6cf69dd5af1d12ae99b93e111 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Fri, 12 Jun 2026 17:53:16 +0000 Subject: [PATCH] cmake: prefer system miniupnpc library (#4567) --- CMakeLists.txt | 3 ++- cmake/Findminiupnpc.cmake | 16 ++++++++++++++++ externals/CMakeLists.txt | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cmake/Findminiupnpc.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b2441124..407d25898 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -235,6 +235,7 @@ find_package(Freetype 2.14.1 MODULE) find_package(glslang 15 CONFIG) find_package(half 1.12.0 MODULE) find_package(magic_enum 0.9.7 CONFIG) +find_package(miniupnpc 2.3.3 MODULE) find_package(miniz 3.1 CONFIG) find_package(nlohmann_json 3.12 CONFIG) find_package(PNG 1.6 MODULE) @@ -1188,7 +1189,7 @@ create_target_directory_groups(shadps4) target_link_libraries(shadps4 PRIVATE spdlog::spdlog) target_link_libraries(shadps4 PRIVATE magic_enum::magic_enum fmt::fmt toml11::toml11 tsl::robin_map xbyak::xbyak Tracy::TracyClient RenderDoc::API FFmpeg::ffmpeg Dear_ImGui ImGuiFileDialog gcn half::half ZLIB::ZLIB PNG::PNG minimp3) target_link_libraries(shadps4 PRIVATE Boost::headers GPUOpen::VulkanMemoryAllocator LibAtrac9 sirit Vulkan::Headers xxHash::xxhash Zydis::Zydis glslang::glslang SDL3::SDL3 pugixml::pugixml) -target_link_libraries(shadps4 PRIVATE stb::headers lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz::miniz fdk-aac CLI11::CLI11 OpenAL::OpenAL Cpp_Httplib libminiupnpc-static) +target_link_libraries(shadps4 PRIVATE stb::headers lfreist-hwinfo::hwinfo nlohmann_json::nlohmann_json miniz::miniz fdk-aac CLI11::CLI11 OpenAL::OpenAL Cpp_Httplib miniupnpc::miniupnpc) target_link_libraries(shadps4 PRIVATE Freetype::Freetype) if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") diff --git a/cmake/Findminiupnpc.cmake b/cmake/Findminiupnpc.cmake new file mode 100644 index 000000000..b80977e6b --- /dev/null +++ b/cmake/Findminiupnpc.cmake @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: Copyright 2026 shadPS4 Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +find_package(PkgConfig QUIET) +pkg_search_module(MINIUPNPC QUIET IMPORTED_TARGET miniupnpc) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(miniupnpc + REQUIRED_VARS MINIUPNPC_LINK_LIBRARIES + VERSION_VAR MINIUPNPC_VERSION +) + +if (miniupnpc_FOUND AND NOT TARGET miniupnpc::miniupnpc) + target_include_directories(PkgConfig::MINIUPNPC INTERFACE "${MINIUPNPC_INCLUDEDIR}/miniupnpc") + add_library(miniupnpc::miniupnpc ALIAS PkgConfig::MINIUPNPC) +endif() diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 36be5600c..bc16b789e 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -297,12 +297,14 @@ if (NOT TARGET CLI11::CLI11) endif() # miniupnpc +if (NOT TARGET miniupnpc::miniupnpc) set(UPNPC_BUILD_STATIC ON CACHE BOOL "" FORCE) set(UPNPC_BUILD_SHARED OFF CACHE BOOL "" FORCE) set(UPNPC_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(UPNPC_BUILD_SAMPLE OFF CACHE BOOL "" FORCE) set(UPNPC_NO_INSTALL ON CACHE BOOL "" FORCE) add_subdirectory(miniupnp/miniupnpc) +endif() # minimp3 add_library(minimp3 INTERFACE)