build: improve building with system libnatpmp (#8189)

This commit is contained in:
Yat Ho
2026-01-26 02:11:31 +08:00
committed by GitHub
parent 2d75dea939
commit 0845c44c14
3 changed files with 41 additions and 38 deletions

View File

@@ -525,7 +525,8 @@ tr_add_external_auto_library_legacy(EVENT2 libevent event
-DEVENT__DISABLE_SAMPLES:BOOL=ON
-DEVENT__LIBRARY_TYPE:STRING=STATIC)
tr_add_external_auto_library_legacy(NATPMP libnatpmp natpmp
tr_add_external_auto_library(NATPMP libnatpmp
LIBNAME natpmp
TARGET natpmp::natpmp
CMAKE_ARGS
-DBUILD_SHARED_LIBS=OFF)

View File

@@ -1,37 +0,0 @@
if(NATPMP_PREFER_STATIC_LIB)
set(NATPMP_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(_NATPMP QUIET libnatpmp)
endif()
find_path(NATPMP_INCLUDE_DIR
NAMES natpmp.h
HINTS ${_NATPMP_INCLUDEDIR})
find_library(NATPMP_LIBRARY
NAMES natpmp
HINTS ${_NATPMP_LIBDIR})
set(NATPMP_INCLUDE_DIRS ${NATPMP_INCLUDE_DIR})
set(NATPMP_LIBRARIES ${NATPMP_LIBRARY})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(NATPMP
REQUIRED_VARS
NATPMP_LIBRARY
NATPMP_INCLUDE_DIR)
mark_as_advanced(NATPMP_INCLUDE_DIR NATPMP_LIBRARY)
if(NATPMP_PREFER_STATIC_LIB)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${NATPMP_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
unset(NATPMP_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES)
endif()

39
cmake/Findlibnatpmp.cmake Normal file
View File

@@ -0,0 +1,39 @@
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(_NATPMP QUIET libnatpmp)
endif()
find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR
NAMES natpmp.h
HINTS ${_NATPMP_INCLUDEDIR})
find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY
NAMES natpmp
HINTS ${_NATPMP_LIBDIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS
${CMAKE_FIND_PACKAGE_NAME}_LIBRARY
${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR)
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})
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()