__has_include
e1f543823b300b28c9edaf5d1a3e1e9badde471b build: replace header checks with __has_include (fanquake)
Pull request description:
Replace the checks in CMake, with the equivalent functionality provided by the standard library (since C++17).
See https://en.cppreference.com/w/cpp/preprocessor/include.
Guix Build:
```bash
66d71c866bd111ffe65bc03b9e1653a95eb678f0b04451759c56af868bfc03d5 guix-build-e1f543823b30/output/aarch64-linux-gnu/SHA256SUMS.part
1a4130d801620a63d86c3069b1fbca39ebc963e610101451d3f48b1c191ca4b3 guix-build-e1f543823b30/output/aarch64-linux-gnu/bitcoin-e1f543823b30-aarch64-linux-gnu-debug.tar.gz
745adbc7767344a8cd0ebe1e7592239614d89f949558c9b6a2ae58f7b2602a32 guix-build-e1f543823b30/output/aarch64-linux-gnu/bitcoin-e1f543823b30-aarch64-linux-gnu.tar.gz
cb69d205a20715ee58a324cc2b8475c2bae0443a062f5de2820baa45f822292c guix-build-e1f543823b30/output/arm-linux-gnueabihf/SHA256SUMS.part
081774dd903256dafa187ee47a569cd44b01eb16adc9dbfeb54b721abc39e944 guix-build-e1f543823b30/output/arm-linux-gnueabihf/bitcoin-e1f543823b30-arm-linux-gnueabihf-debug.tar.gz
1dd857fe6b9e75fae746e73fbfc6b77302b4dbb13685baebb10e9686da7bad01 guix-build-e1f543823b30/output/arm-linux-gnueabihf/bitcoin-e1f543823b30-arm-linux-gnueabihf.tar.gz
e035ba959da69263de2f29282328d4e5b455f94a800a15891801f26ba3b8b325 guix-build-e1f543823b30/output/arm64-apple-darwin/SHA256SUMS.part
ebf973e0e44be688ea5e1ebae804dfce6e71b7ca8aaca5d8249a14d130f37c3f guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-codesigning.tar.gz
3ea687b53032b30d7c4a0760f8a35d19e2f60a8cb3f1f5e2c5cba05897f04e43 guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-unsigned.tar.gz
ebb6a935f2fbc75167f5e61a039d13f231621f7eb0cbd1292616425f7677739c guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-unsigned.zip
9e77422977506f0c3f0373ee19d24c3ad86cbaf3a97cfcf5db202d4fff9c3ae4 guix-build-e1f543823b30/output/dist-archive/bitcoin-e1f543823b30.tar.gz
62d7c8f63a3702b066f88498f829b2c371baa06c596b71b6d8969f638cc2d356 guix-build-e1f543823b30/output/powerpc64-linux-gnu/SHA256SUMS.part
60c00fc85dea24548c212330e5fa097020f17bb74f511e7e764b8b33224afce0 guix-build-e1f543823b30/output/powerpc64-linux-gnu/bitcoin-e1f543823b30-powerpc64-linux-gnu-debug.tar.gz
97b1aa4dc967c9a3767476a262a503900ea77e15b4b292928c6cdddf306cafc9 guix-build-e1f543823b30/output/powerpc64-linux-gnu/bitcoin-e1f543823b30-powerpc64-linux-gnu.tar.gz
ed67fbb0768ce7b1d4d053de2ba0ea3b2798d01a276adf6430c4a2a413461ee2 guix-build-e1f543823b30/output/riscv64-linux-gnu/SHA256SUMS.part
83f7b4e6c244d97caa2eb41b67cdef2bfa71f2f3ef1cfa378fae32db18fc8e25 guix-build-e1f543823b30/output/riscv64-linux-gnu/bitcoin-e1f543823b30-riscv64-linux-gnu-debug.tar.gz
c8ca7793fdfac2346a21d5fc8f6e00f1feb6556d048896fef8148ac614921050 guix-build-e1f543823b30/output/riscv64-linux-gnu/bitcoin-e1f543823b30-riscv64-linux-gnu.tar.gz
a3e99dd3369aa97cad2437fc1b29f84a8950327fd0f0a1c0a8a3e7ce49369f1a guix-build-e1f543823b30/output/x86_64-apple-darwin/SHA256SUMS.part
1c22d2967c72a5b901d54b9914d243aaf8f52216e48399f09bf17f34455369ec guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-codesigning.tar.gz
28c731d91d84f41a0b94cfb420474f150edd2bd33db1e9c38d52c9452e44b3f1 guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-unsigned.tar.gz
f6b74d1756af4de4a7e250c11f0a48a93fafc67139951afc4a55888ce24dc01a guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-unsigned.zip
16d7a33003e89f53b3d8ce31a121250a4f836c83482f39b0c40721a2dd32faca guix-build-e1f543823b30/output/x86_64-linux-gnu/SHA256SUMS.part
d17606b3fec3c045d84dadff4b107186cc6e51daa80a16588de4e213585a98cd guix-build-e1f543823b30/output/x86_64-linux-gnu/bitcoin-e1f543823b30-x86_64-linux-gnu-debug.tar.gz
52ee77c9ff6bbe6965100165847d107c4e3ddcf8c2a960746f663ade074295a5 guix-build-e1f543823b30/output/x86_64-linux-gnu/bitcoin-e1f543823b30-x86_64-linux-gnu.tar.gz
daeba27cb9ce21e3a6a01b9487ef81738eec0c84ad80ca0ba1287412c0d4eeda guix-build-e1f543823b30/output/x86_64-w64-mingw32/SHA256SUMS.part
38ccc35fe32895688f4fc0f22ed8a03233d06636a487b49de74a215fc6b67002 guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-codesigning.tar.gz
22863abb1a4d1fed1e4753e602f33a743296caf297bdc7ed9330010f5d3f79f3 guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-debug.zip
1cbc8ae43899d96664e75fa2c3fce2efbb2cfac34b279fe1e240a616646cb3e9 guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-setup-unsigned.exe
b6d22f62c083aca24dc788df1676bfc2ce0abc85a796a4823e5802d71482082c guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-unsigned.zip
```
ACKs for top commit:
shahsb:
ACK e1f543823b
purpleKarrot:
ACK e1f543823b300b28c9edaf5d1a3e1e9badde471b
TheCharlatan:
ACK e1f543823b300b28c9edaf5d1a3e1e9badde471b
hebasto:
ACK e1f543823b300b28c9edaf5d1a3e1e9badde471b, I have reviewed the code and it looks OK.
Tree-SHA512: d4bcbc37d431113f0e6367e8f61e71ab9d9ef8a08c38a2db961d9f9cc8473636124f5f2bd4d66cbb3e5032f9d5f978d7d286033d80f7e148f9d571ff09f005ff
Bitcoin Core integration/staging tree
For an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/.
What is Bitcoin Core?
Bitcoin Core connects to the Bitcoin peer-to-peer network to download and fully validate blocks and transactions. It also includes a wallet and graphical user interface, which can be optionally built.
Further information about Bitcoin Core is available in the doc folder.
License
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master branch is regularly built (see doc/build-*.md for instructions) and tested, but it is not guaranteed to be
completely stable. Tags are created
regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled during the generation of the build system) with: ctest. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python.
These tests can be run (if the test dependencies are installed) with: build/test/functional/test_runner.py
(assuming build is your build directory).
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.