cmake: Remove optional definitions from `bitcoin-build-config.h` #35072

pull hebasto wants to merge 5 commits into bitcoin:master from hebasto:260414-sans-gui-config changing 25 files +12 −61
  1. hebasto commented at 5:33 PM on April 14, 2026: member

    On the master branch, modifying optional settings to reconfigure the build system triggers unnecessary rebuilds.

    For example, consider the following workflow:

    cmake -B build -DBUILD_TESTS=OFF
    cmake --build build
    cmake -B build -DBUILD_TESTS=OFF -DBUILD_GUI=ON
    cmake --build build
    

    The final command should only build bitcoin-qt and bitcoin-gui, but instead, it unnecessarily rebuilds other targets as well.

    This occurs because optional definitions like USE_DBUS and USE_QRCODE are included in bitcoin-build-config.h. Modifying these settings alters the header, triggering a recompilation of every target that consumes it.

    This PR resolves the issue. While beneficial on its own, it also serves as a necessary prerequisite for effectively addressing #29914.

  2. hebasto added the label Build system on Apr 14, 2026
  3. DrahtBot commented at 5:33 PM on April 14, 2026: contributor

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--006a51241073e994b41acfe9ec718e94-->

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/35072.

    <!--021abf342d371248e50ceaed478a90ca-->

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    Concept NACK fanquake
    Stale ACK BrandonOdiwuor

    If your review is incorrectly listed, please copy-paste <code>&lt;!--meta-tag:bot-skip--&gt;</code> into the comment that the bot should ignore.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #35011 (ci, iwyu: Fix warnings in src/script and treat them as errors by BrandonOdiwuor)
    • #33828 (Check required interfaces before generating manpages by 151henry151)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  4. BrandonOdiwuor commented at 9:31 AM on April 17, 2026: contributor

    Tested ACK 9f65a7a4942c1addf3efed47a64a54b0889215bf

    Tested that only Qt-related targets are rebuilt when BUILD_GUI=ON is enabled. Non-GUI targets (bitcoind, bitcoin-node, bitcoin, bitcoin_clientversion, bitcoin_util, etc.) remain untouched.

    Tested on Ubuntu 24.04.4 LTS

    cmake -B build -DBUILD_TESTS=OFF
    cmake --build build
    cmake -B build -DBUILD_TESTS=OFF -DBUILD_GUI=ON
    cmake --build build
    

    Master (before PR)

    <details> <summary>Running `cmake --build build` after GUI is enabled</summary

    cmake --build build_m/ -j3
    [  0%] Generating bitcoin-build-info.h
    [  1%] Built target univalue
    [  2%] Built target bitcoin_consensus
    [  2%] Built target secp256k1_precomputed
    [  3%] Built target crc32c
    [  8%] Built target bitcoin_crypto
    [ 11%] Built target minisketch
    [ 11%] Built target mputil
    [ 18%] Built target leveldb
    [ 19%] Built target bitcoin_cli
    [ 38%] Built target bitcoinqt_lrelease
    [ 39%] Built target secp256k1
    [ 39%] Built target multiprocess
    [ 39%] Built target mpgen
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/mining.cpp.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/interfaces.cpp.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/common.capnp.proxy-client.c++.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/common.capnp.proxy-server.c++.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/common.capnp.proxy-types.c++.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/init.capnp.proxy-client.c++.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/init.capnp.proxy-server.c++.o
    [ 39%] Built target generate_build_info
    [ 39%] Building CXX object src/CMakeFiles/bitcoin_clientversion.dir/clientversion.cpp.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/init.capnp.proxy-types.c++.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/mining.capnp.proxy-client.c++.o
    [ 39%] Linking CXX static library ../lib/libbitcoin_clientversion.a
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/mining.capnp.proxy-server.c++.o
    [ 39%] Built target bitcoin_clientversion
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/mining.capnp.proxy-types.c++.o
    [ 39%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/check.cpp.o
    [ 39%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/rpc.capnp.proxy-client.c++.o
    [ 40%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/rpc.capnp.proxy-server.c++.o
    [ 40%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/fs_helpers.cpp.o
    [ 40%] Building CXX object src/ipc/CMakeFiles/bitcoin_ipc.dir/capnp/rpc.capnp.proxy-types.c++.o
    [ 41%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/syserror.cpp.o
    [ 41%] Linking CXX static library ../../lib/libbitcoin_ipc.a
    [ 41%] Building CXX object src/CMakeFiles/bitcoin_common.dir/coins.cpp.o
    [ 41%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/tokenpipe.cpp.o
    [ 41%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/__/random.cpp.o
    [ 41%] Building CXX object src/CMakeFiles/bitcoin_common.dir/common/license_info.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/bitcoin_common.dir/common/netif.cpp.o
    [ 43%] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/__/randomenv.cpp.o
    [ 43%] Building CXX object src/CMakeFiles/bitcoin_common.dir/common/run_command.cpp.o
    [ 43%] Linking CXX static library ../../lib/libbitcoin_util.a
    [ 43%] Building CXX object src/CMakeFiles/bitcoin_common.dir/common/settings.cpp.o
    [ 47%] Built target bitcoin_util
    [ 47%] Building CXX object src/CMakeFiles/bitcoin_common.dir/common/system.cpp.o
    [ 47%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/coinselection.cpp.o
    [ 47%] Building CXX object src/CMakeFiles/bitcoin_common.dir/external_signer.cpp.o
    [ 47%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/crypter.cpp.o
    [ 52%] Built target bitcoin_ipc
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_node.dir/addrdb.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_common.dir/init/common.cpp.o
    [ 52%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/db.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_node.dir/addrman.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_common.dir/net_permissions.cpp.o
    [ 52%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/dump.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_node.dir/banman.cpp.o
    [ 52%] Building CXX object src/CMakeFiles/bitcoin_common.dir/netbase.cpp.o
    [ 53%] Building CXX object src/CMakeFiles/bitcoin_node.dir/blockencodings.cpp.o
    [ 54%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/external_signer_scriptpubkeyman.cpp.o
    [ 55%] Building CXX object src/CMakeFiles/bitcoin_common.dir/protocol.cpp.o
    [ 55%] Building CXX object src/CMakeFiles/bitcoin_node.dir/init.cpp.o
    [ 55%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/feebumper.cpp.o
    [ 56%] Linking CXX static library ../lib/libbitcoin_common.a
    [ 56%] Building CXX object src/CMakeFiles/bitcoin_node.dir/mapport.cpp.o
    [ 56%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/fees.cpp.o
    [ 56%] Building CXX object src/CMakeFiles/bitcoin_node.dir/net.cpp.o
    [ 56%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/interfaces.cpp.o
    [ 58%] Building CXX object src/CMakeFiles/bitcoin_node.dir/net_processing.cpp.o
    [ 58%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/caches.cpp.o
    [ 58%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/load.cpp.o
    [ 58%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/migrate.cpp.o
    [ 58%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/chainstatemanager_args.cpp.o
    [ 58%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/receive.cpp.o
    [ 58%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/interfaces.cpp.o
    [ 65%] Built target bitcoin_common
    [ 65%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/kernel_notifications.cpp.o
    [ 66%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/addresses.cpp.o
    [ 67%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/mempool_persist.cpp.o
    [ 67%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/txreconciliation.cpp.o
    [ 67%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/backup.cpp.o
    [ 68%] Building CXX object src/CMakeFiles/bitcoin_node.dir/node/warnings.cpp.o
    [ 68%] Building CXX object src/CMakeFiles/bitcoin_node.dir/policy/fees/block_policy_estimator.cpp.o
    [ 68%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/blockchain.cpp.o
    [ 68%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/coins.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/external_signer.cpp.o
    [ 69%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/encrypt.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/mining.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/net.cpp.o
    [ 69%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/signmessage.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/node.cpp.o
    [ 69%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/spend.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/rpc/server.cpp.o
    [ 69%] Building CXX object src/CMakeFiles/bitcoin_node.dir/txmempool.cpp.o
    [ 70%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/transactions.cpp.o
    [ 72%] Building CXX object src/CMakeFiles/bitcoin_node.dir/validation.cpp.o
    [ 72%] Building CXX object src/CMakeFiles/bitcoin_node.dir/wallet/init.cpp.o
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/util.cpp.o
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/rpc/wallet.cpp.o
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/scriptpubkeyman.cpp.o
    [ 72%] Linking CXX static library ../lib/libbitcoin_node.a
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/spend.cpp.o
    [ 72%] Building CXX object src/CMakeFiles/bitcoin.dir/bitcoin.cpp.o
    [ 72%] Linking CXX executable ../bin/bitcoin
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/sqlite.cpp.o
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/wallet.cpp.o
    [ 72%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/walletdb.cpp.o
    [ 72%] Built target bitcoin
    [ 72%] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
    [ 72%] Linking CXX static library ../../lib/libbitcoin_wallet.a
    [ 72%] Linking CXX executable ../bin/bitcoin-cli
    [ 72%] Built target bitcoin-cli
    [ 74%] Built target bitcoin_wallet
    [ 74%] Built target bitcoinqt_autogen_timestamp_deps
    [ 84%] Built target bitcoin_node
    [ 84%] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
    [ 84%] Building CXX object src/CMakeFiles/bitcoin-node.dir/bitcoind.cpp.o
    [ 84%] Automatic MOC and UIC for target bitcoinqt
    [ 86%] Linking CXX executable ../bin/bitcoind
    [ 86%] Linking CXX executable ../bin/bitcoin-node
    [ 86%] Built target bitcoinqt_autogen
    [ 86%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoinqt_autogen/mocs_compilation.cpp.o
    [ 87%] Built target bitcoind
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoin.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoingui.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/clientmodel.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/intro.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/modaloverlay.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/notificator.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/optionsdialog.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/optionsmodel.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/rpcconsole.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/splashscreen.cpp.o
    [ 89%] Built target bitcoin-node
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/utilitydialog.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/addresstablemodel.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/coincontroldialog.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/createwalletdialog.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/paymentserver.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qrimagewidget.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/receivecoinsdialog.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/receiverequestdialog.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/recentrequeststablemodel.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/sendcoinsdialog.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/signverifymessagedialog.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactiondesc.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletcontroller.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletmodel.cpp.o
    [ 93%] Linking CXX static library ../../lib/libbitcoinqt.a
    [ 98%] Built target bitcoinqt
    [ 98%] Built target bitcoin-qt_autogen_timestamp_deps
    [ 98%] Built target bitcoin-gui_autogen_timestamp_deps
    [ 98%] Built target bitcoin-qt_autogen
    [ 98%] Built target bitcoin-gui_autogen
    [ 98%] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
    [100%] Building CXX object src/qt/CMakeFiles/bitcoin-gui.dir/main.cpp.o
    [100%] Linking CXX executable ../../bin/bitcoin-qt
    [100%] Linking CXX executable ../../bin/bitcoin-gui
    [100%] Built target bitcoin-qt
    [100%] Built target bitcoin-gui
    
    

    </details>

    PR at 9f65a7a4942c1addf3efed47a64a54b0889215bf

    <details> <summary>Running `cmake --build build` after GUI is enabled</summary

    cmake --build build -j3
    [  0%] Generating bitcoin-build-info.h
    [  1%] Built target univalue
    [  1%] Built target secp256k1_precomputed
    [  2%] Built target bitcoin_consensus
    [  3%] Built target crc32c
    [  8%] Built target bitcoin_crypto
    [ 11%] Built target minisketch
    [ 11%] Built target mputil
    [ 12%] Built target bitcoin_cli
    [ 31%] Built target bitcoinqt_lrelease
    [ 38%] Built target leveldb
    [ 39%] Built target secp256k1
    [ 39%] Built target multiprocess
    [ 39%] Built target mpgen
    [ 45%] Built target bitcoin_ipc
    [ 45%] Built target generate_build_info
    [ 45%] Built target bitcoin_clientversion
    [ 51%] Built target bitcoin_util
    [ 56%] Built target bitcoin_wallet
    [ 56%] Built target bitcoinqt_autogen_timestamp_deps
    [ 67%] Built target bitcoin_common
    [ 67%] Built target bitcoin
    [ 67%] Automatic MOC and UIC for target bitcoinqt
    [ 67%] Built target bitcoin-cli
    [ 84%] Built target bitcoin_node
    [ 86%] Built target bitcoin-node
    [ 87%] Built target bitcoind
    [ 87%] Built target bitcoinqt_autogen
    [ 87%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bantablemodel.cpp.o
    [ 87%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoinqt_autogen/mocs_compilation.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoin.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoinaddressvalidator.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoinamountfield.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoingui.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/bitcoinunits.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/clientmodel.cpp.o
    [ 88%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/csvmodelwriter.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/freespacechecker.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/guiutil.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/initexecutor.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/intro.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/modaloverlay.cpp.o
    [ 89%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/networkstyle.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/notificator.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/optionsdialog.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/optionsmodel.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/peertablemodel.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/peertablesortproxy.cpp.o
    [ 90%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/platformstyle.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qvalidatedlineedit.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qvaluecombobox.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/rpcconsole.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/splashscreen.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/trafficgraphwidget.cpp.o
    [ 91%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/utilitydialog.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qrc_bitcoin.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qrc_bitcoin_locale.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/addressbookpage.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/addresstablemodel.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/askpassphrasedialog.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/coincontroldialog.cpp.o
    [ 93%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/coincontroltreewidget.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/createwalletdialog.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/editaddressdialog.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/openuridialog.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/overviewpage.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/paymentserver.cpp.o
    [ 94%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/psbtoperationsdialog.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/qrimagewidget.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/receivecoinsdialog.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/receiverequestdialog.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/recentrequeststablemodel.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/sendcoinsdialog.cpp.o
    [ 95%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/sendcoinsentry.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/signverifymessagedialog.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactiondesc.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactiondescdialog.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactionfilterproxy.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactionoverviewwidget.cpp.o
    [ 96%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactionrecord.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactiontablemodel.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/transactionview.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletcontroller.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletframe.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletmodel.cpp.o
    [ 97%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletmodeltransaction.cpp.o
    [ 98%] Building CXX object src/qt/CMakeFiles/bitcoinqt.dir/walletview.cpp.o
    [ 98%] Linking CXX static library ../../lib/libbitcoinqt.a
    [ 98%] Built target bitcoinqt
    [ 98%] Built target bitcoin-qt_autogen_timestamp_deps
    [ 98%] Built target bitcoin-gui_autogen_timestamp_deps
    [ 98%] Automatic MOC and UIC for target bitcoin-gui
    [ 98%] Automatic MOC and UIC for target bitcoin-qt
    [ 98%] Built target bitcoin-qt_autogen
    [ 98%] Built target bitcoin-gui_autogen
    [ 98%] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
    [ 98%] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/__/init/bitcoin-qt.cpp.o
    [100%] Building CXX object src/qt/CMakeFiles/bitcoin-gui.dir/main.cpp.o
    [100%] Building CXX object src/qt/CMakeFiles/bitcoin-gui.dir/__/init/bitcoin-gui.cpp.o
    [100%] Linking CXX executable ../../bin/bitcoin-qt
    [100%] Linking CXX executable ../../bin/bitcoin-gui
    [100%] Built target bitcoin-qt
    [100%] Built target bitcoin-gui
    

    </details>

  5. fanquake commented at 9:58 AM on April 17, 2026: member

    but it is also a necessary prerequisite for effectively addressing #29914.

    It would be good to see the changes that require this. The same logic applies to other optional dependencies, so it'd be good to be clear about what should live in build-config.h, or shouldn't, and why this needs to be moved out.

  6. DrahtBot added the label CI failed on Apr 19, 2026
  7. hebasto force-pushed on Apr 19, 2026
  8. hebasto force-pushed on Apr 19, 2026
  9. DrahtBot removed the label CI failed on Apr 19, 2026
  10. hebasto force-pushed on Apr 24, 2026
  11. hebasto renamed this:
    cmake: Remove GUI-specific definitions from `bitcoin-build-config.h`
    cmake: Remove optional definitions from `bitcoin-build-config.h`
    on Apr 24, 2026
  12. hebasto force-pushed on Apr 24, 2026
  13. DrahtBot added the label CI failed on Apr 24, 2026
  14. hebasto force-pushed on Apr 24, 2026
  15. hebasto commented at 3:24 PM on April 24, 2026: member

    but it is also a necessary prerequisite for effectively addressing #29914.

    It would be good to see the changes that require this. The same logic applies to other optional dependencies, so it'd be good to be clear about what should live in build-config.h, or shouldn't, and why this needs to be moved out.

    Reworked. The PR description has been updated.

  16. DrahtBot removed the label CI failed on Apr 24, 2026
  17. hebasto commented at 1:16 PM on April 27, 2026: member

    My Guix build:

    aarch64
    dfbe1dce053a80d7a0a50ba4bba644ec6c76e51e516b3ba45a627fbaec62afb8  guix-build-138a4c583aad/output/aarch64-linux-gnu/SHA256SUMS.part
    bf34fb34afe907028f26d630bfc11cd9de17467607a50ce502a02d8e6a0d92f3  guix-build-138a4c583aad/output/aarch64-linux-gnu/bitcoin-138a4c583aad-aarch64-linux-gnu-debug.tar.gz
    d577a9a5247e3d3036251b46e210cf68eec8d118f0a00c75fbc1b4b5d6b6e23d  guix-build-138a4c583aad/output/aarch64-linux-gnu/bitcoin-138a4c583aad-aarch64-linux-gnu.tar.gz
    26af8fa53cd0173dc70025d776871b19bb0a641b258441860ce249dbf6bbadea  guix-build-138a4c583aad/output/arm-linux-gnueabihf/SHA256SUMS.part
    364ae7ae55c5259b68494167baf7302fc5a3fc9a0276da11eeda9b83cab8a8c0  guix-build-138a4c583aad/output/arm-linux-gnueabihf/bitcoin-138a4c583aad-arm-linux-gnueabihf-debug.tar.gz
    d7352a9db151a401a60dfcc111680986965c4778b69eae03e4883630f8eda37e  guix-build-138a4c583aad/output/arm-linux-gnueabihf/bitcoin-138a4c583aad-arm-linux-gnueabihf.tar.gz
    12f51fc0b308e909f697ee4133b3298820004cfcc479949f4635655ca1e7601c  guix-build-138a4c583aad/output/arm64-apple-darwin/SHA256SUMS.part
    efc3697f06f232bb977db4b9fea9b638fb1f6a2fbe801e44a31c74b290069a14  guix-build-138a4c583aad/output/arm64-apple-darwin/bitcoin-138a4c583aad-arm64-apple-darwin-codesigning.tar.gz
    065c6cfbe4e794d3e925df5b682444facf69e86236ad83a8ce1743027f899a32  guix-build-138a4c583aad/output/arm64-apple-darwin/bitcoin-138a4c583aad-arm64-apple-darwin-unsigned.tar.gz
    97500452ef27dee71eb479bfbc98af4d2f660b45befbe515f357afbd2d1b3a8a  guix-build-138a4c583aad/output/arm64-apple-darwin/bitcoin-138a4c583aad-arm64-apple-darwin-unsigned.zip
    f121520263382057c5a75516e5a0512fc1ec9660298e4a406336499e689d3622  guix-build-138a4c583aad/output/dist-archive/bitcoin-138a4c583aad.tar.gz
    6acbb8095895b3d11da4d4f75e7e4cfdd4e9df9a6981fa54589b4fd9e07b953e  guix-build-138a4c583aad/output/powerpc64-linux-gnu/SHA256SUMS.part
    a03c2a993951ddae7d5c5eed85e742a00d59ad94d97fb37045495c88455d9ccf  guix-build-138a4c583aad/output/powerpc64-linux-gnu/bitcoin-138a4c583aad-powerpc64-linux-gnu-debug.tar.gz
    8c6c7483d766ecb2d0527d6ff2fc7d05f724637c6123f040a38fec8a516b5b98  guix-build-138a4c583aad/output/powerpc64-linux-gnu/bitcoin-138a4c583aad-powerpc64-linux-gnu.tar.gz
    70ed4b27f83d778b5c8b4beb43d66f836ae10492fa8e7d34048cfa0e6b6352a5  guix-build-138a4c583aad/output/riscv64-linux-gnu/SHA256SUMS.part
    44c6b4477e7663c35d2fe9b1ec42f95928c1af4f09ff96f29be98fbc26596773  guix-build-138a4c583aad/output/riscv64-linux-gnu/bitcoin-138a4c583aad-riscv64-linux-gnu-debug.tar.gz
    a7514afe11fb79c22b2cbf9427c7ed388bbce7d4cd5bd7533c4251eb89721846  guix-build-138a4c583aad/output/riscv64-linux-gnu/bitcoin-138a4c583aad-riscv64-linux-gnu.tar.gz
    1a1298335c3b0b44120d2754547c63e859a271d88801eecfff98940667350c25  guix-build-138a4c583aad/output/x86_64-apple-darwin/SHA256SUMS.part
    f0bb0471ff05437740cef69a8e41825439a9d90515902ba927ae954b14be87f5  guix-build-138a4c583aad/output/x86_64-apple-darwin/bitcoin-138a4c583aad-x86_64-apple-darwin-codesigning.tar.gz
    9dff5bf571461ae09483243206a855d01e15af25b65a2ae263a54248664b3acd  guix-build-138a4c583aad/output/x86_64-apple-darwin/bitcoin-138a4c583aad-x86_64-apple-darwin-unsigned.tar.gz
    34a9744ca9ac2c354eccaa2b38f7fc1d4aad74520f11cab4dece184469de1950  guix-build-138a4c583aad/output/x86_64-apple-darwin/bitcoin-138a4c583aad-x86_64-apple-darwin-unsigned.zip
    7b5e47ba1fb582ab62196e3ff0fd716c9431dd5559e894f3e8dc46f6a8d4d3ac  guix-build-138a4c583aad/output/x86_64-linux-gnu/SHA256SUMS.part
    062b141a71ea6993d2f00af71c8ece8d09d0e6ad40db68eb01810e1ae53ce81c  guix-build-138a4c583aad/output/x86_64-linux-gnu/bitcoin-138a4c583aad-x86_64-linux-gnu-debug.tar.gz
    36a46d92f23e3d239c00150b07b42c32df4cac1d472ffe499ea9038542aac46d  guix-build-138a4c583aad/output/x86_64-linux-gnu/bitcoin-138a4c583aad-x86_64-linux-gnu.tar.gz
    3f28b00ad498c69cbdd393392e87d3222322ee93a2388d2b0fc86d016679d94e  guix-build-138a4c583aad/output/x86_64-w64-mingw32/SHA256SUMS.part
    95ad64f35e3df8174a70263a44365027155bcb247d9dc8b0a9a1533c2d72f2a6  guix-build-138a4c583aad/output/x86_64-w64-mingw32/bitcoin-138a4c583aad-win64-codesigning.tar.gz
    14962162083957e50636c53e4522a56ae3c7059a37c52d8f20b04ae90be6b9b8  guix-build-138a4c583aad/output/x86_64-w64-mingw32/bitcoin-138a4c583aad-win64-debug.zip
    0cfe52b1e59178049b880d95a28175e69be65ab41cef9e4cbad031837de7d778  guix-build-138a4c583aad/output/x86_64-w64-mingw32/bitcoin-138a4c583aad-win64-setup-unsigned.exe
    edfa2a73a6bd1de70022292f6622acf8d6cf548c93b6fa3bc5a97c4b85183aa2  guix-build-138a4c583aad/output/x86_64-w64-mingw32/bitcoin-138a4c583aad-win64-unsigned.zip
    
  18. 151henry151 commented at 9:31 PM on April 29, 2026: contributor

    PR #33828 has gen-manpages.py read build/src/bitcoin-build-config.h for a few macros (HAVE_SYSTEM, ENABLE_WALLET, WITH_ZMQ). As optional defines move out of that header: it would be nice to have a single source of truth for “what was enabled” for this kind of tooling, though combining sources (header where it still exists, CMakeCache.txt or similar otherwise) may be fine. That ties into the earlier thread here about what belongs in build-config.h vs elsewhere—any guidance on what you’d prefer for scripts like this?

  19. fanquake commented at 12:38 PM on May 21, 2026: member

    Concept NACK

    This change seems more like a side-effect of the approach taken in #35098 (where it's used to share objects between builds), rather than something that makes sense standalone; and I'm not sure about the approach in #35098, given it doesn't work for something like #25573.

    modifying optional settings to reconfigure the build system triggers unnecessary rebuilds.

    I think the point of a (shared) config header, is to trigger rebuilds of modules that use it, when the header/config changes. If it's been determined that certain things shouldn't be in the config header, then it'd be good to explain the difference between what is being moved out here, and what is being left in, rather than just what is needed for #35098, or calling the rebuilding "unnecessary".

    As pointed out above, it may also be useful to have a single point of "truth" of our configuration, and that would seem to get more complicated with the changes here.

  20. 151henry151 commented at 2:21 AM on May 22, 2026: contributor

    For scripts/tooling, it would be nice to agree on one canonical source for enabled features. It would be straightforward to update gen-manpages.py to match whatever source maintainers prefer, such as bitcoin-build-config.h, CMakeCache.txt, or some other generated file.

  21. DrahtBot added the label Needs rebase on May 26, 2026
  22. hebasto force-pushed on May 28, 2026
  23. hebasto marked this as a draft on May 28, 2026
  24. hebasto commented at 2:17 PM on May 28, 2026: member

    This change seems more like a side-effect of the approach taken in #35098 (where it's used to share objects between builds), rather than something that makes sense standalone;

    I still think that disentangling different parts of the build system is beneficial.

    Converting to a draft until the other concerns raised by reviewers are addressed.

  25. DrahtBot removed the label Needs rebase on May 28, 2026
  26. DrahtBot added the label CI failed on May 28, 2026
  27. DrahtBot commented at 5:15 PM on May 28, 2026: contributor

    <!--85328a0da195eb286784d51f73fa0af9-->

    🚧 At least one of the CI tasks failed. <sub>Task lint: https://github.com/bitcoin/bitcoin/actions/runs/26580153237/job/78322459544</sub> <sub>LLM reason (✨ experimental): CI failed due to a lint error (includes_build_config): src/node/interfaces.cpp includes bitcoin-build-config.h but doesn’t use any of its declared symbols.</sub>

    <details><summary>Hints</summary>

    Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

    </details>

  28. cmake: Move `USE_DBUS` to `bitcoinqt` target
    This removes the `USE_DBUS` definition from `bitcoin-build-config.h`,
    reducing the dependency of non-GUI code on GUI-specific definitions.
    a4cdf7b1e0
  29. cmake: Move `USE_QRCODE` to `bitcoinqt` target
    This removes the `USE_QRCODE` definition from `bitcoin-build-config.h`,
    reducing the dependency of non-GUI code on GUI-specific definitions.
    
    Additionally, `QRencode::QRencode` is now linked only when wallet is
    enabled, because the `qrencode.h` header is used exclusively in
    wallet-specific code.
    716896100f
  30. cmake: Move `ENABLE_WALLET` to `bitcoinqt` and `test_bitcoin-qt` targets
    This removes the `ENABLE_WALLET` definition from
    `bitcoin-build-config.h`, reducing the dependency of core code on the
    optional definitions.
    73ef841b67
  31. cmake: Move `ENABLE_TRACING` to `USDT::headers` target
    This removes the `ENABLE_TRACING` definition from
    `bitcoin-build-config.h`, reducing the dependency of core code on the
    optional definitions.
    
    Additionally, the `FindUSDT` module is refactored to use
    `target_include_directories` instead of `set_target_properties`.
    afe538c455
  32. cmake: Move `ENABLE_EXTERNAL_SIGNER` to `bitcoin_common` target
    This removes the `ENABLE_EXTERNAL_SIGNER` definition from
    `bitcoin-build-config.h`, reducing the dependency of core code on the
    optional definitions.
    04a1ea6686
  33. hebasto force-pushed on May 29, 2026
  34. DrahtBot added the label Needs rebase on May 29, 2026
  35. DrahtBot commented at 11:32 AM on May 29, 2026: contributor

    <!--cf906140f33d8803c4a75a2196329ecb-->

    🐙 This pull request conflicts with the target branch and needs rebase.


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-06-04 07:51 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me