cmake: Add libnatpmp optional package support

This commit is contained in:
Hennadii Stepanov 2024-06-04 13:44:32 +01:00
parent e73e9304a1
commit 6480e1dcdb
No known key found for this signature in database
GPG key ID: 410108112E7EA81F
3 changed files with 40 additions and 0 deletions

View file

@ -106,6 +106,11 @@ cmake_dependent_option(BUILD_WALLET_TOOL "Build bitcoin-wallet tool." ${BUILD_TE
option(WITH_CCACHE "Attempt to use ccache for compiling." ON)
option(WITH_NATPMP "Enable NAT-PMP." OFF)
if(WITH_NATPMP)
find_package(NATPMP MODULE REQUIRED)
endif()
set(configure_warnings)
include(CheckPIESupported)
@ -278,6 +283,8 @@ if(ENABLE_WALLET)
message(" - descriptor wallets (SQLite) ...... ${WITH_SQLITE}")
message(" - legacy wallets (Berkeley DB) ..... ${WITH_BDB}")
endif()
message(" port mapping:")
message(" - using NAT-PMP .................... ${WITH_NATPMP}")
message("Tests:")
message(" test_bitcoin ........................ ${BUILD_TESTS}")
message("")

View file

@ -0,0 +1,32 @@
# Copyright (c) 2023-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or https://opensource.org/license/mit/.
find_path(NATPMP_INCLUDE_DIR
NAMES natpmp.h
)
find_library(NATPMP_LIBRARY
NAMES natpmp
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(NATPMP
REQUIRED_VARS NATPMP_LIBRARY NATPMP_INCLUDE_DIR
)
if(NATPMP_FOUND AND NOT TARGET NATPMP::NATPMP)
add_library(NATPMP::NATPMP UNKNOWN IMPORTED)
set_target_properties(NATPMP::NATPMP PROPERTIES
IMPORTED_LOCATION "${NATPMP_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${NATPMP_INCLUDE_DIR}"
)
set_property(TARGET NATPMP::NATPMP PROPERTY
INTERFACE_COMPILE_DEFINITIONS USE_NATPMP=1 $<$<PLATFORM_ID:Windows>:NATPMP_STATICLIB>
)
endif()
mark_as_advanced(
NATPMP_INCLUDE_DIR
NATPMP_LIBRARY
)

View file

@ -268,6 +268,7 @@ target_link_libraries(bitcoin_node
Boost::headers
$<TARGET_NAME_IF_EXISTS:libevent::libevent>
$<TARGET_NAME_IF_EXISTS:libevent::pthreads>
$<TARGET_NAME_IF_EXISTS:NATPMP::NATPMP>
)