93a70a42d3depends: Update URL for `qrencode` package source tarball (Hennadii Stepanov)6de8051263depends: Use hash instead of file name for package download stamp (Hennadii Stepanov)46135d90eadepends: Drop redundant check for downloaded file (Hennadii Stepanov)771978952adepends: Fix `$(package)_fetched` target (Hennadii Stepanov) Pull request description: The https://fukuchi.org/ homepage no longer links to the source tarball, and previously available files appear to have been removed. The homepage now instructs users to download source tarballs from the GitHub [releases](https://github.com/fukuchi/libqrencode/releases) page instead. The diff between the source trees is immaterial: ```diff --- old +++ new @@ -1,19 +1,16 @@ 27e7deccd2925c94e4190ee64794a051199f215f145f76fd664cdebedbbf8a35 acinclude.m4 -e1e35b1309482f699a9700a2065a0bce09c2108dd1f78ba7bfbe0f7f0bdcd2e6 aclocal.m4 a9308eec78790720dbcd5452ab8f241b5f1c6939ccf3389917b8e78cb2b58c9e autogen.sh aa36725d577048f0370dc7415a1acb578fbdfb531c1b384a836d9360a81f6f5c bitstream.c 3feaacd7d096834fc5956215598564ec287ad443185c4433c3f8007cc53ceaa6 bitstream.h 21bd5a34c90d3d6ee540ceb48c3d5aea5f21bd6b829ef3112db832af0bd423d8 ChangeLog f8a7a94c9622fab721df47e8121533ebfcb79885aca01ecec2fff00dfb84caef cmake/FindIconv.cmake 6345e7eecb92473f361a8eb98dd373aa09cae79a43408cf4b42b00b411c9c197 CMakeLists.txt -031d560570eab2eda57c2f9ee9952445002f8bf4a23965fcaf43bbc2c61590e2 config.h.in -d2f42cc5771b69f2d2ecd4b31509864ae2b18b25c823986390bb372ee07030fa configure 02867a8ea08206c84d5f4c05f41a15c639291091e3dfac27f3a9029d8f5d3028 configure.ac a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING 76c41754bccbf69a60fb7833776637c60b86f59104705c0a5cea9ee3a2968f3d Doxyfile 36d84f714cf28397b02d6c44860106a7cb858fc6d25239a2698a72fa5136e5c3 libqrencode.pc.in f0ce93a7e1b1f0fab87dd071ec3c8dd80a567d778dfc5930d9f375d676ecb9a0 Makefile.am -507c2385fb49c5724e8e3dfca97feb24cbdd4e651f3f0bfa62524e60088091a0 Makefile.in +dcb782b1b382328c0bce9194944bdcc65a6035d8e9f89e39436ed2e55ae8b969 makeREADME.sh 6046d347c6c564fc13a24dc0a15a09a83023e00a4e0d0f23029a81f86ac4d024 mask.c 9f853cee7d72191a8dbf018b7a86c0f0b6ca661e27a51fab677af911f2ff9e7e mask.h a4e17b68d8db573e152132ebcbdc837b55415c12027f81232662db645faf79f0 mmask.c @@ -30,7 +27,7 @@ 6e9ff66002b4a839c6e78bcd6a55342d9eb8b289273fa838441b27ee9969e293 qrinput.h 68831e02ee1ba602b1937328abec000e616c4472d9dc40067dd45ab7072df172 qrspec.c a2a9a5af4d62015e82b48b8316aea2b70031dcdc1ed2b829c0102ea5dc02aca2 qrspec.h -8730d006f1d45b90dc0ef9a20e4119420f15b37a09483c929baa4225e21f7900 README +a56773b55989ea5cae8a43f2d845ce0afa9576a26170937fbe36a69fee953cd4 README.md ace480f2e16001e276c73a5e965c282915ad81e2c28cce3ef574b5a8db7210e8 rsecc.c c731ebe26d58d5e5df3b2d694de0fb1c4ae80a36cf0559c49b04e989dee8b182 rsecc.h 8ed1af4414b5628845519581c82bf51ba2b4dee1f8352c1fd01b50afcd0a0ed7 split.c @@ -46,7 +43,6 @@ e26b20198a7393b3c060891876fa45edb81488aef9df6d6cf45893a605e5e5e4 tests/decoder.h adabfbddb0f25de2e2cae970195fcfdf11ad1fa66ce64e237d83f821346f64c4 tests/frame 23c283a3d3b5f1bbb3108603ebf05d7a95951ba86a288e09140eab612a5eb258 tests/Makefile.am -c8b819bf7f00c979ab0b6f0d0fb10289d2006bc6acda1737d2f1c383a60e1e66 tests/Makefile.in ebd71b937d4d39f382f8c57f362a01f11fd617b66dbdf6f1a3c4897c8c42e235 tests/prof_qrencode.c d4adcb234d4c31473cd9ffedd1bfa9645ba336d426640ba5893dfe6e75db171d tests/pthread_qrencode.c 62298641504b0a2c1d199cd7f656cb376959200169042de76f7c5950d2d42395 tests/rscode.c @@ -63,6 +59,7 @@ cf5792cbfb92ba46f7f5f14b98f00813b0e7e4f5e7c790c6a28793774474bf26 tests/test_monkey.c 3a2c58346d57f6bb2a634d6febf3c65ac524259a2d789657f8d60c678bf8d658 tests/test_mqrspec.c b9d8c569ba36a2258cb1ad0d1f85ce4fb2935fad519e902bade59aa9772321aa tests/test_qrencode.c +785fe14a6f8bc096b20ec271771fb09f22f29eb4f9d729f5b40d6b4cc824ce36 tests/test_qrenc.sh d0eee6eddf98ee4595c07f7da40c7de548651bf839b26995756e94db2599451f tests/test_qrinput.c ace7885e435ef77cc127da0ac23c724498aaa8d80d53b908063f79c9f0b7acce tests/test_qrspec.c fde9c2735ce94be51e1b0bbffe65415aa3afd2da5bd4c0e2c5e50e1a2f1ea3f7 tests/test_rs.c @@ -71,12 +68,4 @@ 6f35c0e1235b31d0068c4ab175d8110c736e60df0309d4be7b3e57dd62d316f6 tests/URI_testset.inc 6be3983fc397cd5dade1dd219ad6cbe7977f416410b1509984006ecec51605b5 tests/view_qrcode.c 92b5be1ca2239399232d51503715c848dae9bf3db71b1f03157bfa9779826910 TODO -c8af04e62bad4ab75dafd22119026e5e3943f385bdcbe7731a4938102453754c use/compile -1d9048b0ac9d4d1dfce7aa4e3a0b59ccfd32db2f7693814aa6f4c778560f5669 use/config.guess b522487f9c47661d321367d133f3d41247dd16d435f2d4b9c643dee95bf65eee use/config.rpath -5bf0da2576ebb21ab60a9d9291a85b40af0e956a9eafb709ca8b20dcb105f4ee use/config.sub -732bcd6b9e23f241e015d71b0a3a862104053aba20718c1f56b292cee7e29371 use/depcomp -608b76d735bb2ec2bcb1271644c3d5e7a428fb8d2338e114e8a48ebf91ccfd23 use/install-sh -2304d53af1f63b76a11651efdd18578adf2bda1ffc2c257100cba374b55f284b use/ltmain.sh -f038345dab184e538098d22a8edc423762da66a90ebe269f23bfef85287cd30c use/missing -7c1ae35455771ae32050c2ed109e3d297160b6d1a2f70b0278cf6968e5e7e98c use/test-driver ``` --- **UPDATE 2025-09-30** A few commits have been added: 1. The first commit fixes the `$(package)_fetched` target, which erroneously succeeds on the second run after a failure on the master branch: ``` $ gmake -C depends clean-all $ gmake -C depends qrencode_fetched FALLBACK_DOWNLOAD_PATH="https://fallback.invalid" $ gmake -C depends qrencode_fetched FALLBACK_DOWNLOAD_PATH="https://fallback.invalid" $ echo $? 0 ``` With the first commit applied: ``` $ gmake -C depends clean-all $ gmake -C depends qrencode_fetched FALLBACK_DOWNLOAD_PATH="https://fallback.invalid" $ gmake -C depends qrencode_fetched FALLBACK_DOWNLOAD_PATH="https://fallback.invalid" $ echo $? 2 ``` 2. The second and third commits allow the depends build subsystem to detect when the source tarball content has been modified and needs to be re-downloaded, even if the file name remains the same. ACKs for top commit: m3dwards: ACK93a70a42d3achow101: ACK93a70a42d3vasild: ACK93a70a42d3janb84: ACK93a70a42d3Tree-SHA512: 38b7c029070426196c747fc45c9d00bae534eeeb2d9cd9f221580fce8380f4f8aecb6c48b2563e322edd8c9534f5dd42d8f4e110ada42bb83568cf2dcfb7dc22
Depends build
This is a system of building and caching dependencies necessary for building Bitcoin Core. It supports cross-compilation. For more details see description.md, as well as packages.md for how to add packages.
Usage
Ubuntu & Debian
apt install cmake curl make patch
Skip the following packages if you don't intend to use the GUI and will build with NO_QT=1:
apt install bison g++ ninja-build pkgconf python3 xz-utils
To build dependencies for the current arch+OS:
make
macOS
Install Xcode Command Line Tools and Homebrew Package Manager, see build-osx.md.
brew install cmake make ninja
To build dependencies for the current arch+OS:
gmake
FreeBSD
pkg install bash cmake curl gmake
Skip the following packages if you don't intend to use the GUI and will build with NO_QT=1:
pkg install bison ninja pkgconf python3
To build dependencies for the current arch+OS:
gmake
NetBSD
pkgin install bash cmake curl gmake perl
To build dependencies for the current arch+OS:
gmake
OpenBSD
pkg_add bash cmake curl gmake gtar
To build dependencies for the current arch+OS:
gmake
Alpine
apk add bash build-base cmake curl make patch
Skip the following packages if you don't intend to use the GUI and will build with NO_QT=1:
apk add bison linux-headers samurai pkgconf python3
To build dependencies for the current arch+OS:
make
Configuring Bitcoin Core
When configuring Bitcoin Core, CMake by default will ignore the depends output. In
order for it to pick up libraries, tools, and settings from the depends build,
you must specify the toolchain file.
In the above example for Ubuntu, a file named depends/x86_64-pc-linux-gnu/toolchain.cmake will be
created. To use it during configuring Bitcoin Core:
cmake -B build --toolchain depends/x86_64-pc-linux-gnu/toolchain.cmake
Dependency Options
The following can be set when running make: make FOO=bar
SOURCES_PATH: Downloaded sources will be placed hereBASE_CACHE: Built packages will be placed hereSDK_PATH: Path where SDKs can be found (used by macOS)FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving upC_STANDARD: Set the C standard version used. Defaults toc11.CXX_STANDARD: Set the C++ standard version used. Defaults toc++20.NO_BOOST: Don't download/build/cache BoostNO_LIBEVENT: Don't download/build/cache LibeventNO_QT: Don't download/build/cache Qt and its dependenciesNO_QR: Don't download/build/cache packages needed for enabling qrencodeNO_ZMQ: Don't download/build/cache packages needed for enabling ZeroMQNO_WALLET: Don't download/build/cache libs needed to enable the wallet (SQLite)NO_USDT: Don't download/build/cache packages needed for enabling USDT tracepointsNO_IPC: Don't build Cap’n Proto and libmultiprocess packages. Default on Windows.DEBUG: Disable some optimizations and enable more runtime checkingHOST_ID_SALT: Optional salt to use when generating host package idsBUILD_ID_SALT: Optional salt to use when generating build package idsLOG: Use file-based logging for individual packages. During a package build its log file resides in thedependsdirectory, and the log file is printed out automatically in case of build error. After successful build log files are moved along with package archivesLTO: Enable options needed for LTO. Does not add-fltorelated options to *FLAGS.
If some packages are not built, for example make NO_WALLET=1, the appropriate CMake cache
variables will be set when generating the Bitcoin Core buildsystem. In this case, -DENABLE_WALLET=OFF.
Cross compilation
To build for another arch/OS:
make HOST=host-platform-triplet
For example:
make HOST=x86_64-w64-mingw32 -j4
Common host-platform-triplets for cross compilation are:
i686-pc-linux-gnufor Linux x86 32 bitx86_64-pc-linux-gnufor Linux x86 64 bitx86_64-w64-mingw32for Win64x86_64-apple-darwinfor macOSarm64-apple-darwinfor ARM macOSarm-linux-gnueabihffor Linux ARM 32 bitaarch64-linux-gnufor Linux ARM 64 bitpowerpc64-linux-gnufor Linux POWER 64 bit (big endian)powerpc64le-linux-gnufor Linux POWER 64 bit (little endian)riscv32-linux-gnufor Linux RISC-V 32 bitriscv64-linux-gnufor Linux RISC-V 64 bits390x-linux-gnufor Linux S390X
The paths are automatically configured and no other options are needed.
For macOS cross compilation
apt install clang lld llvm zip
Clang 18 or later is required. You must also obtain the macOS SDK before
proceeding with a cross-compile. Under the depends directory, create a
subdirectory named SDKs. Then, place the extracted SDK under this new directory.
For more information, see SDK Extraction.
For Win64 cross compilation
apt install g++-mingw-w64-x86-64-posix
For linux (including i386, ARM) cross compilation
Common linux dependencies:
sudo apt-get install g++-multilib binutils
For linux ARM cross compilation:
sudo apt-get install g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
For linux AARCH64 cross compilation:
sudo apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
For linux POWER 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu
For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
For linux S390X cross compilation:
sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu
Additional targets
download: run 'make download' to fetch all sources without building them
download-osx: run 'make download-osx' to fetch all sources needed for macOS builds
download-win: run 'make download-win' to fetch all sources needed for win builds
download-linux: run 'make download-linux' to fetch all sources needed for linux builds