forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge #77: cmake: Build
bitcoin-qt
executable
7f4babc fixup! ci: Test CMake edge cases (Hennadii Stepanov) de62901 fixup! cmake: Add vcpkg manifest file (Hennadii Stepanov) 923d883 msvc: Fix building with vcpkg's Qt packages (Hennadii Stepanov) b342887 cmake: Build `bitcoin-qt` executable (Hennadii Stepanov) 2609377 fixup! build: Generate `share/toolchain.cmake` in depends (Hennadii Stepanov) adcb895 Revert "build, qt: Do not install *.prl files" (Hennadii Stepanov) Pull request description: A new configuration option `WITH_GUI` has been added. Its valid values are `AUTO`, `Qt5`, `OFF`. Top commit has no ACKs. Tree-SHA512: 3d32fa0ae4d51b772c5721d3035660c6b29e500ebc7add3e2a97e1bfde704aa20c989b5a8ee46e8622fa9f6dd2277de59f98c1cd1d9e525b44650d74a8b20c44
- Loading branch information
Showing
11 changed files
with
250 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# 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/. | ||
|
||
set(WITH_GUI "AUTO" CACHE STRING "Build GUI ([AUTO], Qt5, OFF)") | ||
set(with_gui_values AUTO Qt5 OFF) | ||
if(NOT WITH_GUI IN_LIST with_gui_values) | ||
message(FATAL_ERROR "WITH_GUI value is \"${WITH_GUI}\", but must be one of \"AUTO\", \"Qt5\" or \"OFF\".") | ||
endif() | ||
|
||
if(WITH_GUI) | ||
set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS ON) | ||
set(QT_NO_CREATE_VERSIONLESS_TARGETS ON) | ||
|
||
if(BREW_COMMAND) | ||
execute_process( | ||
COMMAND ${BREW_COMMAND} --prefix qt@5 | ||
OUTPUT_VARIABLE qt5_brew_prefix | ||
ERROR_QUIET | ||
OUTPUT_STRIP_TRAILING_WHITESPACE | ||
) | ||
endif() | ||
|
||
if(WITH_GUI STREQUAL "AUTO") | ||
# The PATH_SUFFIXES option is required on OpenBSD systems. | ||
find_package(QT NAMES Qt5 | ||
COMPONENTS Core | ||
HINTS ${qt5_brew_prefix} | ||
PATH_SUFFIXES Qt5 | ||
) | ||
if(QT_FOUND) | ||
set(WITH_GUI Qt${QT_VERSION_MAJOR}) | ||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") | ||
enable_language(OBJCXX) | ||
set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | ||
set(CMAKE_OBJCXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") | ||
set(CMAKE_OBJCXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") | ||
set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") | ||
endif() | ||
else() | ||
message(WARNING "Qt not found, disabling.\n" | ||
"To skip this warning check, use \"-DWITH_GUI=OFF\".\n") | ||
set(WITH_GUI OFF) | ||
endif() | ||
endif() | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
# 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/. | ||
|
||
# See: | ||
# - https://cmake.org/cmake/help/latest/manual/cmake-qt.7.html | ||
# - https://doc.qt.io/qt-5/cmake-manual.html | ||
|
||
set(CMAKE_AUTOMOC ON) | ||
set(CMAKE_AUTORCC ON) | ||
set(CMAKE_AUTOUIC ON) | ||
set(CMAKE_AUTOUIC_SEARCH_PATHS forms) | ||
|
||
set(qt_minimum_required_version 5.11.3) | ||
|
||
set(qt_components Core Gui Widgets Network LinguistTools) | ||
|
||
if(CMAKE_CROSSCOMPILING) | ||
# The find_package(Qt ...) function internally uses find_library() | ||
# calls for all dependencies to ensure their availability. | ||
# In turn, the find_library() inspects the well-known locations | ||
# on the file system; therefore, it must be able to find | ||
# platform-specific system libraries, for example: | ||
# /usr/x86_64-w64-mingw32/lib/libm.a or /usr/arm-linux-gnueabihf/lib/libm.a. | ||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) | ||
endif() | ||
|
||
find_package(Qt5 ${qt_minimum_required_version} REQUIRED | ||
COMPONENTS ${qt_components} | ||
HINTS ${qt5_brew_prefix} | ||
PATH_SUFFIXES Qt5 # Required on OpenBSD systems. | ||
) | ||
unset(qt_components) | ||
message(STATUS "Found Qt: ${Qt5_DIR} (found suitable version \"${Qt5_VERSION}\", minimum required is \"${qt_minimum_required_version}\")") | ||
unset(qt_minimum_required_version) | ||
|
||
# TODO: The file(GLOB ...) command should be replaced with an explicit | ||
# file list. Such a change must be synced with the corresponding change | ||
# to https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py | ||
file(GLOB ts_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} locale/*.ts) | ||
set_source_files_properties(${ts_files} PROPERTIES OUTPUT_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/locale) | ||
qt5_add_translation(qm_files ${ts_files}) | ||
|
||
configure_file(bitcoin_locale.qrc bitcoin_locale.qrc COPYONLY) | ||
|
||
add_library(bitcoinqt STATIC EXCLUDE_FROM_ALL | ||
bantablemodel.cpp | ||
bitcoin.cpp | ||
bitcoinaddressvalidator.cpp | ||
bitcoinamountfield.cpp | ||
bitcoingui.cpp | ||
bitcoinunits.cpp | ||
clientmodel.cpp | ||
csvmodelwriter.cpp | ||
guiutil.cpp | ||
initexecutor.cpp | ||
intro.cpp | ||
modaloverlay.cpp | ||
networkstyle.cpp | ||
notificator.cpp | ||
optionsdialog.cpp | ||
optionsmodel.cpp | ||
peertablemodel.cpp | ||
peertablesortproxy.cpp | ||
platformstyle.cpp | ||
qvalidatedlineedit.cpp | ||
qvaluecombobox.cpp | ||
rpcconsole.cpp | ||
splashscreen.cpp | ||
trafficgraphwidget.cpp | ||
utilitydialog.cpp | ||
$<$<PLATFORM_ID:Windows>:winshutdownmonitor.cpp> | ||
$<$<PLATFORM_ID:Darwin>:macdockiconhandler.mm> | ||
$<$<PLATFORM_ID:Darwin>:macnotificationhandler.mm> | ||
$<$<PLATFORM_ID:Darwin>:macos_appnap.mm> | ||
bitcoin.qrc | ||
${CMAKE_CURRENT_BINARY_DIR}/bitcoin_locale.qrc | ||
) | ||
target_compile_definitions(bitcoinqt | ||
PUBLIC | ||
QT_NO_KEYWORDS | ||
QT_USE_QSTRINGBUILDER | ||
) | ||
target_include_directories(bitcoinqt | ||
PUBLIC | ||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src> | ||
) | ||
target_link_libraries(bitcoinqt | ||
PUBLIC | ||
Qt5::Widgets | ||
PRIVATE | ||
core_interface | ||
bitcoin_cli | ||
leveldb | ||
Boost::headers | ||
$<TARGET_NAME_IF_EXISTS:NATPMP::NATPMP> | ||
$<TARGET_NAME_IF_EXISTS:MiniUPnPc::MiniUPnPc> | ||
$<$<PLATFORM_ID:Darwin>:-framework\ AppKit> | ||
$<$<CXX_COMPILER_ID:MSVC>:shlwapi> | ||
) | ||
|
||
if(ENABLE_WALLET) | ||
target_sources(bitcoinqt | ||
PRIVATE | ||
addressbookpage.cpp | ||
addresstablemodel.cpp | ||
askpassphrasedialog.cpp | ||
coincontroldialog.cpp | ||
coincontroltreewidget.cpp | ||
createwalletdialog.cpp | ||
editaddressdialog.cpp | ||
openuridialog.cpp | ||
overviewpage.cpp | ||
paymentserver.cpp | ||
psbtoperationsdialog.cpp | ||
qrimagewidget.cpp | ||
receivecoinsdialog.cpp | ||
receiverequestdialog.cpp | ||
recentrequeststablemodel.cpp | ||
sendcoinsdialog.cpp | ||
sendcoinsentry.cpp | ||
signverifymessagedialog.cpp | ||
transactiondesc.cpp | ||
transactiondescdialog.cpp | ||
transactionfilterproxy.cpp | ||
transactionoverviewwidget.cpp | ||
transactionrecord.cpp | ||
transactiontablemodel.cpp | ||
transactionview.cpp | ||
walletcontroller.cpp | ||
walletframe.cpp | ||
walletmodel.cpp | ||
walletmodeltransaction.cpp | ||
walletview.cpp | ||
) | ||
target_link_libraries(bitcoinqt | ||
PRIVATE | ||
bitcoin_wallet | ||
Qt5::Network | ||
) | ||
endif() | ||
|
||
if(CMAKE_CROSSCOMPILING) | ||
target_compile_definitions(bitcoinqt PRIVATE QT_STATICPLUGIN) | ||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND TARGET Qt5::QXcbIntegrationPlugin) | ||
target_compile_definitions(bitcoinqt PRIVATE QT_QPA_PLATFORM_XCB) | ||
elseif(WIN32 AND TARGET Qt5::QWindowsIntegrationPlugin AND TARGET Qt5::QWindowsVistaStylePlugin) | ||
target_compile_definitions(bitcoinqt PRIVATE QT_QPA_PLATFORM_WINDOWS) | ||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND TARGET Qt5::QCocoaIntegrationPlugin AND TARGET Qt5::QMacStylePlugin) | ||
target_compile_definitions(bitcoinqt PRIVATE QT_QPA_PLATFORM_COCOA) | ||
endif() | ||
endif() | ||
|
||
add_executable(bitcoin-qt | ||
main.cpp | ||
../init/bitcoin-qt.cpp | ||
) | ||
|
||
target_link_libraries(bitcoin-qt | ||
core_interface | ||
bitcoinqt | ||
bitcoin_node | ||
) | ||
|
||
if(WIN32) | ||
set_target_properties(bitcoin-qt PROPERTIES WIN32_EXECUTABLE TRUE) | ||
endif() | ||
|
||
install(TARGETS bitcoin-qt | ||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | ||
COMPONENT GUI | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,6 +11,8 @@ | |
"libevent", | ||
"miniupnpc", | ||
"sqlite3", | ||
"qt5-base", | ||
"qt5-tools", | ||
"zeromq" | ||
] | ||
} |