Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
6a8085d
scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME
hebasto Jun 8, 2026
51c7877
cmake: Require Qt Qml and Qt Quick modules when `BUILD_GUI=ON`
hebasto Jun 8, 2026
09508f4
depends: Add Qt Qml and Qt Quick modules
hebasto Jun 8, 2026
13b010d
cmake: Add `bitcoin-qml` executable
hebasto Jun 8, 2026
d5ac8c5
cmake: Incorporate `qml` subdirectory
hebasto Jun 8, 2026
b0db305
qml: Add stub window
hebasto Jun 8, 2026
bb7cd4d
doc: introduce qml/README.md
jarolrod Jul 9, 2021
e7d35e5
qml: Add NodeModel module
hebasto Jul 13, 2021
3d16d56
qt: Rename `DebugMessageHandler` to `BitcoinQtDebugMessageHandler`
hebasto Jun 8, 2026
9f688db
qml: Add start/shutdown functionality
hebasto Jun 8, 2026
89a345e
qml: Add message box for InitError calls
hebasto Jun 8, 2025
8fef54d
qml: Handle initialization errors
hebasto Aug 7, 2021
0e3b082
qml: Check whether initerrormessage.qml is loaded correctly
hebasto Aug 27, 2021
245eff8
doc: document runtime dependencies
jarolrod Aug 23, 2021
73a2ac6
qml: Add copyright headers to QML files
hebasto Aug 30, 2021
181932f
qml: Add QmlUtil::GraphicsApi utility function
hebasto Aug 30, 2021
f586e3f
qml: Use QmlUtil::GraphicsApi utility function for logging
hebasto Aug 30, 2021
06040b6
qml: Add blockTipHeight property to NodeModel, and expose it to QML
hebasto Aug 29, 2021
ec7a1df
qml: Add BlockCounter QML component prototype
hebasto Jun 8, 2025
b30a14c
qml: Pass Node instance to the NodeModel constructor
hebasto Aug 29, 2021
d2ab694
qml: Connect NodeModel to the NotifyBlockTip core signal
hebasto Jun 8, 2026
9a5a170
qml: Add qInstallMessageHandler
hebasto Oct 2, 2021
1ffb736
qml: Import QtQuick.Layouts
hebasto Oct 3, 2021
8c93d35
qml: Add imageprovider module
hebasto Oct 2, 2021
4174ecf
qml: Integrate ImageProvider into qml/bitcoin.cpp
hebasto Jun 9, 2025
9f71711
qml: Add a demo Image object
hebasto Oct 2, 2021
0623910
qml: Include missed <cassert> headers
hebasto Oct 10, 2021
80c700d
qml: Add regular and semibold typefaces of Inter font
promag Oct 6, 2021
344d3b4
qml: Set tab focus behavior
promag Oct 21, 2021
10bfd18
doc: introduce icon policy documentation
Bosch-0 Jan 9, 2021
e2047f4
qml: Use window color instead of background
promag Oct 22, 2021
88039e4
qml: Remove explicit height of BlockCounter
promag Oct 22, 2021
bb22a88
qml: Use ColumnLayout in application window
promag Oct 22, 2021
5466e9e
qml: Add OptionButton control
promag Oct 22, 2021
f4d7ed7
qml: Add ConnectionOptions component
promag Oct 22, 2021
3bdb52b
qml: Show ConnectionOptions
promag Oct 22, 2021
7c63351
qml: Replace QtQuick.Dialogs with QtQuick.Controls 2 Dialog
hebasto Oct 30, 2021
5038f31
qml: Add ProgressIndicator control
promag Oct 22, 2021
29dc6d6
qml: Demo ProgressIndicator control
promag Oct 22, 2021
04784e4
doc: introduce translator comment policy documentation
jarolrod Nov 4, 2021
b439d09
Add run information to README
secondl1ght Dec 17, 2021
06745bf
qml: introduce Header qml control
jarolrod Jan 3, 2022
d4a5b18
qml: demo Header control
jarolrod Jan 3, 2022
8d9889a
doc: standardize headings in qml README
jarolrod Dec 23, 2021
6d9fb92
doc: qml README wording clarifications
jarolrod Dec 23, 2021
e7b793c
doc: mention development policies in qml README
jarolrod Dec 23, 2021
987da90
qml, doc: add Fedora as supported platform
hebasto Dec 21, 2021
700eeb2
qml: make header property required in header control
jarolrod Jan 5, 2022
0bd9a36
qml: Support detail item inside OptionButton
promag Jan 5, 2022
6ac69c1
qml: Demo OptionButton detail in wifi-only option
promag Jan 5, 2022
339b141
qml: Add m_verification_progress to display working progress bar
shaavan Jan 6, 2022
b66682d
qml: Used verificationProgress in stub.qml
shaavan Jan 6, 2022
d47ab9a
qml: Add shutdown polling facilities to the NodeModel class
hebasto Jan 6, 2022
76378af
qml: Use NodeModel's shutdown polling facilities
hebasto Jan 6, 2022
c4a3466
qml: Drop no longer used NodeModel::startNodeShutdown()
hebasto Jan 6, 2022
5821f16
qml: introduce ContinueButton control
jarolrod Jan 3, 2022
5ae2be4
qml: introduce OptionSwitch control
jarolrod Jan 3, 2022
52fc0ba
qml: introduce Setting control
jarolrod Jan 3, 2022
2567b4c
qml: introduce ConnectionSettings component
jarolrod Jan 3, 2022
8fdac94
qml: refactor OptionButton to utilize Header control
jarolrod Jan 5, 2022
b0d8203
qml: introduce StorageOptions component
jarolrod Jan 4, 2022
016f8f6
qml: introduce TextButton control
jarolrod Jan 4, 2022
f2a6c6c
qml: Using qsTr() with strings in ConnectionSettings.qml
shaavan Jan 13, 2022
751e324
qml: Use Math.round() in OptionSwitch.qml
shaavan Jan 13, 2022
bca38b0
qml: Replace GridLayout with nested Column Row Layout in Settings.qml
shaavan Jan 13, 2022
52add4c
qml: Make further suggested changes to Settings.qml
shaavan Jan 13, 2022
e5383e0
qml: introduce PageIndicator control
jarolrod Jan 4, 2022
a60abf2
qml: introduce Theme singleton
jarolrod Jan 6, 2022
14ce925
qml: update UI elements to use Theme color definitions
jarolrod Jan 6, 2022
f95848e
doc: fix link to optimize-pngs.py script
jarolrod May 25, 2022
7ef6fa8
qml: introduce info icon
jarolrod May 25, 2022
6da93cf
qml: introduce caret-left icon
jarolrod May 25, 2022
8c6e87d
qml: introduce caret-right icon
jarolrod May 25, 2022
8b23a65
qml: introduce export icon
jarolrod May 25, 2022
ba1cd3e
qml: introduce Wizard control
jarolrod Jan 4, 2022
303ef23
qml: Changes to Wizard Control
jarolrod Jun 6, 2022
c599ca3
qml: Changes to Header.qml TextButton.qml, OptionButton.qml and Setti…
shaavan May 31, 2022
5058673
qml: Add Information.qml in src/qml/controls
shaavan May 31, 2022
afc643f
qml: Add onboarding01 and its subpages
shaavan May 31, 2022
3f8fa95
qml: Add onboarding02.qml file
shaavan May 31, 2022
028b17d
qml: Added onboarding03.qml
shaavan May 31, 2022
f16393c
qml: Add onboarding04.qml page
shaavan May 31, 2022
0cf98d1
qml: Add onboarding05.qml page and its subpages
shaavan May 31, 2022
dba3ae7
qml: Add onboarding06.qml pages and its subpages
shaavan May 31, 2022
564defe
qml: Update stub.qml to display onboarding views
shaavan May 31, 2022
be532c9
qml: handle undefined active state in header control
jarolrod Jun 1, 2022
092adb5
qml: introduce ExternalLink control
jarolrod Aug 3, 2022
4b00e49
qml: introduce arrow-up icon
jarolrod Aug 11, 2022
d2693db
qml: introduce basic ValueInput control
jarolrod Aug 3, 2022
d00c3df
qml: introduce arrow-down icon
jarolrod Aug 11, 2022
5d8b40d
qml: allow the settings component to load a dynamic action item.
jarolrod Aug 3, 2022
66498bd
qml: remove information qml
jarolrod Aug 3, 2022
c06cad0
qml: temporary dark mode button
jarolrod Aug 11, 2022
d21975b
qml: use caret-right icon instead of greater than symbol
jarolrod Aug 3, 2022
5033211
qml: introduce OnboardingInfo control
jarolrod Aug 8, 2022
80986ff
qml: use OnboardingInfo control
jarolrod Aug 8, 2022
ced2fe8
qml: introduce gear icon
jarolrod Aug 13, 2022
0cd0a82
qml: introduce NavButton control
jarolrod Aug 9, 2022
6136244
qml: introduce OnboardingNav control
jarolrod Aug 9, 2022
58f57db
qml: onboarding views navbar cleanup
jarolrod Aug 9, 2022
7c4831b
qml: temporarily set dark mode as default
jarolrod Aug 14, 2022
c673806
qml: introduce static backup for lottie blocktime element
jarolrod Aug 14, 2022
15c4d9b
qml: use static backup for lottie blocktime element
jarolrod Aug 14, 2022
5fdea2e
qml: introduce cross icon
jarolrod Aug 16, 2022
ec5e23c
qml: introduce static backup for lottie network element
jarolrod Aug 14, 2022
af321ac
qml: use static backup for lottie network element
jarolrod Aug 14, 2022
ac3977e
qml: out with the stub in with the main
jarolrod Aug 15, 2022
76f1e12
qml: introduce OutlineButton control
jarolrod Aug 16, 2022
970f28f
qml: reduce usage of ternaries in Theme file
jarolrod Aug 21, 2022
e07540c
qml: split background and indicator on option switch
promag Sep 8, 2022
16a3698
qml: fix Bitcoin icon size to match spec
Sep 17, 2022
198fbad
qml: introduce static backup for lottie storage element
jarolrod Aug 17, 2022
533d0f8
qml: connection settings IBD onboarding view page
jarolrod Aug 14, 2022
6106d58
qml: cleanup connection settings
hebasto Jun 8, 2026
664101e
qml: cleanup storage settings
jarolrod Aug 14, 2022
5885340
qml: cleanup storage location settings
jarolrod Aug 14, 2022
4b30dc6
qml: cleanup developer options
jarolrod Aug 14, 2022
61a42f0
qml: add AppMode QObject to store app device mode
Sep 13, 2022
e6f610f
qml: adjust OnboardingInfo ContinueButton anchors for DESKTOP/MOBILE
Sep 16, 2022
807319c
qml: introduce bitcoin-circle icon
jarolrod Sep 26, 2022
4b25850
qml: Header is not a Control
Oct 6, 2022
f9f1712
qml: fix onboarding width and padding to work for mobile
Sep 23, 2022
cfc98b6
qml: Remove extra line breaks in StorageOptions header
Oct 11, 2022
6ea49b4
qml: fix anchor warning in ContinueButton
Oct 21, 2022
9c8b02d
qml: Allow OnboardingNav to display a middle element
jarolrod Oct 19, 2022
a23ea1c
qml: Rename OnboardingNav to NavigationBar
jarolrod Oct 19, 2022
bb04c1e
qml: Update block tip in the gui thread
promag Sep 28, 2021
e2d5943
qml: constrain Options views to 450 pixels plus padding
Oct 28, 2022
f5af7fb
qml: conditionally load the banner in the OnboardingInfo control
jarolrod Oct 26, 2022
1f4adfd
qml: allow OnboardingInfo to load a detail into its ColumnLayout
jarolrod Oct 26, 2022
bf53d8d
qml: The Setting control should just be of type ColumnLayout
jarolrod Dec 6, 2022
4d1b16f
qml: make continueButton text optional in the OnboardingInfo control
jarolrod Nov 23, 2022
7fbd14b
qml: use the OnboardingInfo control for onboarding settings views
jarolrod Nov 23, 2022
accbf05
qml: deduplicate onboarding code with encapsulation of page definition
jarolrod Nov 23, 2022
0cd4933
qml: ensure translation function for strings in use in onboarding views
jarolrod Nov 23, 2022
58a1de1
qml: ensure use of index decrement function instead of arithmetic
jarolrod Dec 6, 2022
b2a0545
qml: make settings pages independent from onboarding pages
jarolrod Dec 7, 2022
e6ac550
qml: do not load settings pages from url inside of onboarding pages
jarolrod Dec 7, 2022
4e56415
qml: define the settings pages nav elements at page instantiation
jarolrod Dec 7, 2022
af914ba
qml: better ExternalLink control defaults
jarolrod Dec 7, 2022
cd204ec
qml: constrain ContinueButton width to 300 pixels
Nov 19, 2022
a49c182
qml: remove extra Layout properties
Dec 8, 2022
47383b3
qml: give onboarding views descriptive names
jarolrod Dec 7, 2022
87f5e93
qml: remove unused inSubPage bool
jarolrod Dec 7, 2022
b4a5d0d
qml: do not load onboarding pages from url
jarolrod Dec 7, 2022
c844ba2
qml: remove wizard control
jarolrod Dec 13, 2022
9c68348
qml: introduce check icon
jarolrod Dec 14, 2022
6820564
qml: entangle the About and Developer options pages
jarolrod Dec 9, 2022
fa9ff81
qml: use node specific pages, introduce node settings
jarolrod Dec 9, 2022
e7c109b
qml: remove extra ColumnLayouts
Dec 14, 2022
58ae2c5
qml: add check mark to OptionButton control
jarolrod Dec 14, 2022
29c2404
qml: storage options description fixups
jarolrod Dec 14, 2022
7b871a3
qml: make the TextButton control default values more usable
jarolrod Dec 7, 2022
14b6bd1
qml: Make links, data location and numerical description value un-tra…
shaavan Aug 15, 2022
9c32204
qml: contain oboarding information in a scroll view
Nov 23, 2022
ec26316
qml: allow ContinueButton to stay at the bottom
Dec 21, 2022
401cf76
qml, build: Add `OptionsQmlModel` class with basic implementation
hebasto Oct 26, 2022
412a0d0
qml: Add "-prune" settings to `OptionsQmlModel` class
hebasto Jun 8, 2026
062912f
qml: Wire Storage amount options to OptionsModel backend
jarolrod Dec 14, 2022
c899563
qml: refactor initerror window
jarolrod Aug 16, 2022
fbb104f
qml: add and wire listen setting to OptionsModel backend
jarolrod Jan 24, 2023
33c2dfa
qml: add and wire natpmp setting to OptionsModel backend
jarolrod Jan 24, 2023
f94f82c
qml: add and wire server setting to OptionsModel backend
jarolrod Jan 24, 2023
f77fc64
Add getBlockTime interface method in src/interfaces/chain.h
shaavan Nov 28, 2022
3959586
qml: add ability to pause NodeModel
johnny9 Jan 29, 2023
a060dd1
qml: add additional properties in Header
johnny9 Jan 29, 2023
8158f37
qml: add sync time related properties to NodeModel
johnny9 Jan 29, 2023
215a735
qml: introduce ChainModel
johnny9 Jan 29, 2023
1ea2743
qml: introduce the BlockClock
johnny9 Jan 29, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ if(WITH_USDT)
endif()

if(BUILD_GUI)
set(qt_components Core Gui Widgets LinguistTools)
set(qt_components Core Gui Widgets Qml Quick QuickControls2 LinguistTools)
if(ENABLE_WALLET)
list(APPEND qt_components Network)
endif()
Expand Down
6 changes: 3 additions & 3 deletions cmake/module/Maintenance.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function(add_windows_deploy_target)
OUTPUT ${PROJECT_BINARY_DIR}/bitcoin-win64-setup.exe
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/release
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoin> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoin>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoin-qt> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoin-qt>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoin-qml> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoin-qml>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoind> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoind>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoin-cli> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoin-cli>
COMMAND ${CMAKE_STRIP} $<TARGET_FILE:bitcoin-tx> -o ${PROJECT_BINARY_DIR}/release/$<TARGET_FILE_NAME:bitcoin-tx>
Expand Down Expand Up @@ -65,8 +65,8 @@ function(add_macos_deploy_target)

add_custom_command(
OUTPUT ${PROJECT_BINARY_DIR}/${macos_app}/Contents/MacOS/Bitcoin-Qt
COMMAND ${CMAKE_COMMAND} --install ${PROJECT_BINARY_DIR} --config $<CONFIG> --component bitcoin-qt --prefix ${macos_app}/Contents/MacOS --strip
COMMAND ${CMAKE_COMMAND} -E rename ${macos_app}/Contents/MacOS/bin/$<TARGET_FILE_NAME:bitcoin-qt> ${macos_app}/Contents/MacOS/Bitcoin-Qt
COMMAND ${CMAKE_COMMAND} --install ${PROJECT_BINARY_DIR} --config $<CONFIG> --component bitcoin-qml --prefix ${macos_app}/Contents/MacOS --strip
COMMAND ${CMAKE_COMMAND} -E rename ${macos_app}/Contents/MacOS/bin/$<TARGET_FILE_NAME:bitcoin-qml> ${macos_app}/Contents/MacOS/Bitcoin-Qt
COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/bin
COMMAND ${CMAKE_COMMAND} -E rm -rf ${macos_app}/Contents/MacOS/share
VERBATIM
Expand Down
2 changes: 2 additions & 0 deletions contrib/guix/symbol-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@
'Metal', # 3D graphics
'QuartzCore', # animation
'Security', # access control and authentication
'SystemConfiguration', # network configuration
'UniformTypeIdentifiers', # collection of types that map to MIME and file types
}

Expand Down Expand Up @@ -158,6 +159,7 @@
'NETAPI32.dll', # network management
'ole32.dll', # component object model
'OLEAUT32.dll', # OLE Automation API
'Secur32.dll', # SSPI (Security Support Provider Interface)
'SHLWAPI.dll', # light weight shell API
'USER32.dll', # user interface
'USERENV.dll', # user management
Expand Down
22 changes: 19 additions & 3 deletions depends/packages/native_qt.mk
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,21 @@ $(package)_patches += rcc_hardcode_timestamp.patch
$(package)_patches += qttools_skip_dependencies.patch
$(package)_patches += fix-macos26-qyield.patch

$(package)_qtshadertools_file_name=$(qt_details_qtshadertools_file_name)
$(package)_qtshadertools_sha256_hash=$(qt_details_qtshadertools_sha256_hash)

$(package)_qtdeclarative_file_name=$(qt_details_qtdeclarative_file_name)
$(package)_qtdeclarative_sha256_hash=$(qt_details_qtdeclarative_sha256_hash)

$(package)_qttranslations_file_name=$(qt_details_qttranslations_file_name)
$(package)_qttranslations_sha256_hash=$(qt_details_qttranslations_sha256_hash)

$(package)_qttools_file_name=$(qt_details_qttools_file_name)
$(package)_qttools_sha256_hash=$(qt_details_qttools_sha256_hash)

$(package)_extra_sources := $($(package)_qttranslations_file_name)
$(package)_extra_sources := $($(package)_qtshadertools_file_name)
$(package)_extra_sources += $($(package)_qtdeclarative_file_name)
$(package)_extra_sources += $($(package)_qttranslations_file_name)
$(package)_extra_sources += $($(package)_qttools_file_name)

$(package)_top_download_path=$(qt_details_top_download_path)
Expand Down Expand Up @@ -51,14 +59,13 @@ $(package)_config_opts += -no-feature-concurrent
$(package)_config_opts += -no-feature-network
$(package)_config_opts += -no-feature-printsupport
$(package)_config_opts += -no-feature-sql
$(package)_config_opts += -no-feature-testlib
$(package)_config_opts += -no-feature-xml
$(package)_config_opts += -no-gui
$(package)_config_opts += -no-widgets

$(package)_config_opts += -no-glib
$(package)_config_opts += -no-icu
$(package)_config_opts += -no-libudev
$(package)_config_opts += -no-opengl
$(package)_config_opts += -no-openssl
$(package)_config_opts += -no-zstd
$(package)_config_opts += -qt-pcre
Expand All @@ -67,6 +74,7 @@ $(package)_config_opts += -no-feature-backtrace
$(package)_config_opts += -no-feature-permissions
$(package)_config_opts += -no-feature-process
$(package)_config_opts += -no-feature-settings
$(package)_config_opts += -no-feature-vulkan

# Core tools.
$(package)_config_opts += -no-feature-androiddeployqt
Expand Down Expand Up @@ -106,6 +114,8 @@ endef

define $(package)_fetch_cmds
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtdeclarative_file_name),$($(package)_qtdeclarative_file_name),$($(package)_qtdeclarative_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttranslations_file_name),$($(package)_qttranslations_file_name),$($(package)_qttranslations_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_top_download_path),$($(package)_top_cmakelists_download_file),$($(package)_top_cmakelists_file_name)-$($(package)_version),$($(package)_top_cmakelists_sha256_hash)) && \
Expand All @@ -116,6 +126,8 @@ endef
define $(package)_extract_cmds
mkdir -p $($(package)_extract_dir) && \
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtshadertools_sha256_hash) $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtdeclarative_sha256_hash) $($(package)_source_dir)/$($(package)_qtdeclarative_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_top_cmakelists_sha256_hash) $($(package)_source_dir)/$($(package)_top_cmakelists_file_name)-$($(package)_version)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
Expand All @@ -124,6 +136,10 @@ define $(package)_extract_cmds
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir -p qtbase && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
mkdir -p qtshadertools && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
mkdir -p qtdeclarative && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtdeclarative_file_name) -C qtdeclarative && \
mkdir -p qttranslations && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations && \
mkdir -p qttools && \
Expand Down
27 changes: 26 additions & 1 deletion depends/packages/qt.mk
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,21 @@ $(package)_patches += fix-gcc16-sfinae-qanystringview.patch
$(package)_patches += fix-macos26-qyield.patch
$(package)_patches += fix-qbytearray-include.patch

$(package)_qtshadertools_file_name=$(qt_details_qtshadertools_file_name)
$(package)_qtshadertools_sha256_hash=$(qt_details_qtshadertools_sha256_hash)

$(package)_qtdeclarative_file_name=$(qt_details_qtdeclarative_file_name)
$(package)_qtdeclarative_sha256_hash=$(qt_details_qtdeclarative_sha256_hash)

$(package)_qttranslations_file_name=$(qt_details_qttranslations_file_name)
$(package)_qttranslations_sha256_hash=$(qt_details_qttranslations_sha256_hash)

$(package)_qttools_file_name=$(qt_details_qttools_file_name)
$(package)_qttools_sha256_hash=$(qt_details_qttools_sha256_hash)

$(package)_extra_sources := $($(package)_qttranslations_file_name)
$(package)_extra_sources := $($(package)_qtshadertools_file_name)
$(package)_extra_sources += $($(package)_qtdeclarative_file_name)
$(package)_extra_sources += $($(package)_qttranslations_file_name)
$(package)_extra_sources += $($(package)_qttools_file_name)

$(package)_top_download_path=$(qt_details_top_download_path)
Expand Down Expand Up @@ -127,6 +135,9 @@ $(package)_config_opts += -no-feature-macdeployqt
$(package)_config_opts += -no-feature-qmake
$(package)_config_opts += -no-feature-windeployqt

# QML features.
$(package)_config_opts += -no-feature-qml-profiler

ifeq ($(host),$(build))
# Qt Tools module.
$(package)_config_opts += -feature-linguist
Expand Down Expand Up @@ -224,6 +235,8 @@ endef

define $(package)_fetch_cmds
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_download_file),$($(package)_file_name),$($(package)_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_file_name),$($(package)_qtshadertools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qtdeclarative_file_name),$($(package)_qtdeclarative_file_name),$($(package)_qtdeclarative_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttranslations_file_name),$($(package)_qttranslations_file_name),$($(package)_qttranslations_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_download_path),$($(package)_qttools_file_name),$($(package)_qttools_file_name),$($(package)_qttools_sha256_hash)) && \
$(call fetch_file,$(package),$($(package)_top_download_path),$($(package)_top_cmakelists_download_file),$($(package)_top_cmakelists_file_name)-$($(package)_version),$($(package)_top_cmakelists_sha256_hash)) && \
Expand All @@ -235,6 +248,8 @@ ifeq ($(host),$(build))
define $(package)_extract_cmds
mkdir -p $($(package)_extract_dir) && \
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtshadertools_sha256_hash) $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtdeclarative_sha256_hash) $($(package)_source_dir)/$($(package)_qtdeclarative_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttranslations_sha256_hash) $($(package)_source_dir)/$($(package)_qttranslations_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qttools_sha256_hash) $($(package)_source_dir)/$($(package)_qttools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_top_cmakelists_sha256_hash) $($(package)_source_dir)/$($(package)_top_cmakelists_file_name)-$($(package)_version)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
Expand All @@ -243,6 +258,10 @@ define $(package)_extract_cmds
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir -p qtbase && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
mkdir -p qtshadertools && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
mkdir -p qtdeclarative && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtdeclarative_file_name) -C qtdeclarative && \
mkdir -p qttranslations && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qttranslations_file_name) -C qttranslations && \
mkdir -p qttools && \
Expand All @@ -256,12 +275,18 @@ else
define $(package)_extract_cmds
mkdir -p $($(package)_extract_dir) && \
echo "$($(package)_sha256_hash) $($(package)_source)" > $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtshadertools_sha256_hash) $($(package)_source_dir)/$($(package)_qtshadertools_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_qtdeclarative_sha256_hash) $($(package)_source_dir)/$($(package)_qtdeclarative_file_name)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_top_cmakelists_sha256_hash) $($(package)_source_dir)/$($(package)_top_cmakelists_file_name)-$($(package)_version)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_top_cmake_ecmoptionaladdsubdirectory_sha256_hash) $($(package)_source_dir)/$($(package)_top_cmake_ecmoptionaladdsubdirectory_file_name)-$($(package)_version)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
echo "$($(package)_top_cmake_qttoplevelhelpers_sha256_hash) $($(package)_source_dir)/$($(package)_top_cmake_qttoplevelhelpers_file_name)-$($(package)_version)" >> $($(package)_extract_dir)/.$($(package)_file_name).hash && \
$(build_SHA256SUM) -c $($(package)_extract_dir)/.$($(package)_file_name).hash && \
mkdir -p qtbase && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source) -C qtbase && \
mkdir -p qtshadertools && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtshadertools_file_name) -C qtshadertools && \
mkdir qtdeclarative && \
$(build_TAR) --no-same-owner --strip-components=1 -xf $($(package)_source_dir)/$($(package)_qtdeclarative_file_name) -C qtdeclarative && \
cp $($(package)_source_dir)/$($(package)_top_cmakelists_file_name)-$($(package)_version) ./$($(package)_top_cmakelists_file_name) && \
mkdir -p cmake && \
cp $($(package)_source_dir)/$($(package)_top_cmake_ecmoptionaladdsubdirectory_file_name)-$($(package)_version) cmake/$($(package)_top_cmake_ecmoptionaladdsubdirectory_file_name) && \
Expand Down
6 changes: 6 additions & 0 deletions depends/packages/qt_details.mk
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ qt_details_suffix := everywhere-src-$(qt_details_version).tar.xz
qt_details_qtbase_file_name := qtbase-$(qt_details_suffix)
qt_details_qtbase_sha256_hash := 56001b905601bb9023d399f3ba780d7fa940f3e4861e496a7c490331f49e0b80

qt_details_qtshadertools_file_name = qtshadertools-$(qt_details_suffix)
qt_details_qtshadertools_sha256_hash = f6ec88bf42deba84d8f6b5d0914636ceed4749ccb51d1945b2f79b322b7ecf47

qt_details_qtdeclarative_file_name = qtdeclarative-$(qt_details_suffix)
qt_details_qtdeclarative_sha256_hash = 1f03a2b8f5588b4face7da87926e9b2c1372b3a32157c52df07a75067a9db1af

qt_details_qttranslations_file_name := qttranslations-$(qt_details_suffix)
qt_details_qttranslations_sha256_hash := c3c61d79c3d8fe316a20b3617c64673ce5b5519b2e45535f49bee313152fa531

Expand Down
8 changes: 3 additions & 5 deletions depends/patches/qt/qtbase_skip_tools.patch
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ Skip building/installing unneeded tools:
1. Wrapper CMake scripts.
2. CI support files.
3. tracepointgen and tracegen tools.
4. Qt Look Ahead LR Parser Generator (qlalr).
5. Qt Vulkan Header Generator (qvkgen).
4. Qt Vulkan Header Generator (qvkgen).


--- a/qtbase/cmake/QtBaseGlobalTargets.cmake
Expand Down Expand Up @@ -47,11 +46,10 @@ Skip building/installing unneeded tools:

--- a/qtbase/src/tools/CMakeLists.txt
+++ b/qtbase/src/tools/CMakeLists.txt
@@ -11,8 +11,6 @@ if (QT_FEATURE_dbus)
add_subdirectory(qdbuscpp2xml)
@@ -12,7 +12,6 @@ if (QT_FEATURE_dbus)
add_subdirectory(qdbusxml2cpp)
endif()
-add_subdirectory(qlalr)
add_subdirectory(qlalr)
-add_subdirectory(qvkgen)
if (QT_FEATURE_commandlineparser)
add_subdirectory(qtpaths)
Expand Down
10 changes: 10 additions & 0 deletions depends/patches/qt/static_fixes.patch
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,13 @@ index e8fb442dd43..e964138115c 100644
CODE
"// xkb.h is using a variable called 'explicit', which is a reserved keyword in C++
#define explicit dont_use_cxx_explicit
--- a/qtbase/src/plugins/platforms/xcb/CMakeLists.txt
+++ b/qtbase/src/plugins/platforms/xcb/CMakeLists.txt
@@ -65,6 +65,7 @@ qt_internal_add_module(XcbQpaPrivate
XCB::XFIXES
XCB::XKB
XKB::XKB
+ $<BUILD_INTERFACE:X11::Xau>
NO_UNITY_BUILD # X11 define clashes
)

1 change: 1 addition & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,7 @@ endif()

if(BUILD_GUI)
add_subdirectory(qt)
add_subdirectory(qml)
endif()


Expand Down
3 changes: 3 additions & 0 deletions src/interfaces/chain.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ class Chain
//! Get block hash. Height must be valid or this function will abort.
virtual uint256 getBlockHash(int height) = 0;

//! Get block time, Height must be valid or this function will abort.
virtual int64_t getBlockTime(int height) = 0;

//! Check that the block is available on disk (i.e. has not been
//! pruned), and contains transactions.
virtual bool haveBlockOnDisk(int height) = 0;
Expand Down
8 changes: 4 additions & 4 deletions src/logging/timer.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,13 @@ class Timer


#define LOG_TIME_MICROS_WITH_CATEGORY(end_msg, log_category) \
BCLog::Timer<std::chrono::microseconds> UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category)
BCLog::Timer<std::chrono::microseconds> BITCOIN_UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category)
#define LOG_TIME_MILLIS_WITH_CATEGORY(end_msg, log_category) \
BCLog::Timer<std::chrono::milliseconds> UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category)
BCLog::Timer<std::chrono::milliseconds> BITCOIN_UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category)
#define LOG_TIME_MILLIS_WITH_CATEGORY_MSG_ONCE(end_msg, log_category) \
BCLog::Timer<std::chrono::milliseconds> UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category, /* msg_on_completion=*/false)
BCLog::Timer<std::chrono::milliseconds> BITCOIN_UNIQUE_NAME(logging_timer)(__func__, end_msg, log_category, /* msg_on_completion=*/false)
#define LOG_TIME_SECONDS(end_msg) \
BCLog::Timer<std::chrono::seconds> UNIQUE_NAME(logging_timer)(__func__, end_msg)
BCLog::Timer<std::chrono::seconds> BITCOIN_UNIQUE_NAME(logging_timer)(__func__, end_msg)


#endif // BITCOIN_LOGGING_TIMER_H
5 changes: 5 additions & 0 deletions src/node/interfaces.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -569,6 +569,11 @@ class ChainImpl : public Chain
LOCK(::cs_main);
return Assert(chainman().ActiveChain()[height])->GetBlockHash();
}
int64_t getBlockTime(int height) override
{
LOCK(::cs_main);
return Assert(chainman().ActiveChain()[height])->GetBlockTime();
}
bool haveBlockOnDisk(int height) override
{
LOCK(::cs_main);
Expand Down
Loading