Skip to content

Commit

Permalink
cmake: Add FindQRencode module
Browse files Browse the repository at this point in the history
  • Loading branch information
hebasto committed Nov 5, 2024
1 parent 65b1941 commit 30089b0
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 3 deletions.
3 changes: 1 addition & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,7 @@ cmake_dependent_option(ENABLE_EXTERNAL_SIGNER "Enable external signer support."

cmake_dependent_option(WITH_QRENCODE "Enable QR code support." ON "BUILD_GUI" OFF)
if(WITH_QRENCODE)
find_package(PkgConfig REQUIRED)
pkg_check_modules(libqrencode REQUIRED IMPORTED_TARGET libqrencode)
find_package(QRencode MODULE REQUIRED)
set(USE_QRCODE TRUE)
endif()

Expand Down
71 changes: 71 additions & 0 deletions cmake/module/FindQRencode.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright (c) 2024-present The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or https://opensource.org/license/mit/.

#[=======================================================================[
FindQRencode
------------
Finds the QRencode header and library.
This is a wrapper around find_package()/pkg_check_modules() commands that:
- facilitates searching in various build environments
- prints a standard log message
#]=======================================================================]

find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(PC_QRencode QUIET libqrencode)
endif()

find_path(QRencode_INCLUDE_DIR
NAMES qrencode.h
PATHS ${PC_QRencode_INCLUDE_DIRS}
)

find_library(QRencode_LIBRARY_RELEASE
NAMES qrencode
PATHS ${PC_QRencode_LIBRARY_DIRS}
)
find_library(QRencode_LIBRARY_DEBUG
NAMES qrencoded qrencode
PATHS ${PC_QRencode_LIBRARY_DIRS}
)
include(SelectLibraryConfigurations)
select_library_configurations(QRencode)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(QRencode
REQUIRED_VARS QRencode_LIBRARY QRencode_INCLUDE_DIR
VERSION_VAR PC_QRencode_VERSION
)

if(QRencode_FOUND)
if(NOT TARGET QRencode::QRencode)
add_library(QRencode::QRencode UNKNOWN IMPORTED)
endif()
if(QRencode_LIBRARY_RELEASE)
set_property(TARGET QRencode::QRencode APPEND PROPERTY
IMPORTED_CONFIGURATIONS RELEASE
)
set_target_properties(QRencode::QRencode PROPERTIES
IMPORTED_LOCATION_RELEASE "${QRencode_LIBRARY_RELEASE}"
)
endif()
if(QRencode_LIBRARY_DEBUG)
set_property(TARGET QRencode::QRencode APPEND PROPERTY
IMPORTED_CONFIGURATIONS DEBUG
)
set_target_properties(QRencode::QRencode PROPERTIES
IMPORTED_LOCATION_DEBUG "${QRencode_LIBRARY_DEBUG}"
)
endif()
set_target_properties(QRencode::QRencode PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${QRencode_INCLUDE_DIR}"
)
endif()

mark_as_advanced(
QRencode_INCLUDE_DIR
)
2 changes: 1 addition & 1 deletion src/qt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ target_link_libraries(bitcoinqt
bitcoin_cli
leveldb
Boost::headers
$<TARGET_NAME_IF_EXISTS:PkgConfig::libqrencode>
$<TARGET_NAME_IF_EXISTS:QRencode::QRencode>
$<$<PLATFORM_ID:Darwin>:-framework\ AppKit>
$<$<CXX_COMPILER_ID:MSVC>:shlwapi>
)
Expand Down

0 comments on commit 30089b0

Please sign in to comment.