Bitcoin Core mirror and no, I don't give a fuck about Monero.
Find a file
MacroFake 02aefa169a
Merge bitcoin/bitcoin#25852: build: reorder CXXFLAGS in intrinsic checks
4349051dd4 build: reorder cxxflags in intrinsic checks (fanquake)

Pull request description:

  Let the user have the final say in regards to using intrinsics.

  As outlined in https://github.com/bitcoin/bitcoin/issues/13758, on master:
   ```bash
  ./autogen.sh
  ./configure CXXFLAGS="-mno-avx -mno-avx2"
  …
  checking whether C++ compiler accepts -mavx -mavx2... yes
  checking for AVX2 intrinsics... yes
  …
  make
  …
   crypto/sha256_avx2.cpp: In function ‘__m256i sha256d64_avx2::{anonymous}::K(uint32_t)’:
  crypto/sha256_avx2.cpp:15:28: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
     15 | __m256i inline K(uint32_t x) { return _mm256_set1_epi32(x); }
        |                            ^
  crypto/sha256_avx2.cpp: In function ‘__m256i sha256d64_avx2::{anonymous}::Inc(__m256i&, __m256i)’:
  crypto/sha256_avx2.cpp:21:16: note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
     21 | __m256i inline Inc(__m256i& x, __m256i y) { x = Add(x, y); return x; }
        |                ^~~
  In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:43,
                   from crypto/sha256_avx2.cpp:8:
  /usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h: In function ‘__m256i sha256d64_avx2::{anonymous}::K(uint32_t)’:
  /usr/lib/gcc/x86_64-linux-gnu/11/include/avxintrin.h:1326:1: error: inlining failed in call to ‘always_inline’ ‘__m256i _mm256_set1_epi32(int)’: target specific option mismatch
   1326 | _mm256_set1_epi32 (int __A)
        | ^~~~~~~~~~~~~~~~~
  crypto/sha256_avx2.cpp:15:56: note: called from here
     15 | __m256i inline K(uint32_t x) { return _mm256_set1_epi32(x); }
        |                                       ~~~~~~~~~~~~~~~~~^~~
  make[2]: *** [Makefile:13455: crypto/libbitcoin_crypto_avx2_la-sha256_avx2.lo] Error 1
  ```

  with this branch:
  ```bash
  ./autogen.sh
  ./configure CXXFLAGS="-mno-avx -mno-avx2"
  …
  checking whether C++ compiler accepts -mavx -mavx2... yes
  checking for AVX2 intrinsics... no
  …
  make check
  ```

  Fixes: #13758
  Alternative to #13789, which should work for all compilers.

  Guix Build (x86_64):
  ```bash
  1fe67be2fe83c79d3b01c1cd657bed09e573226bf283e335d052c65c08a8e085  guix-build-4349051dd474/output/aarch64-linux-gnu/SHA256SUMS.part
  92904614f8792595c30c38c8aadfcd64ded658d58146dbae529c7b66e975d72e  guix-build-4349051dd474/output/aarch64-linux-gnu/bitcoin-4349051dd474-aarch64-linux-gnu-debug.tar.gz
  0e6c1d12caf87d9359d42eea4b652f10e69ab15a18bd572214f22046b2a019f1  guix-build-4349051dd474/output/aarch64-linux-gnu/bitcoin-4349051dd474-aarch64-linux-gnu.tar.gz
  e1b7d9b65cf0233c13affd570a0b3247c806553d968188a79f87ce9aab4fee36  guix-build-4349051dd474/output/arm-linux-gnueabihf/SHA256SUMS.part
  a7e0e53c2b6a0d0dc47a0740e501b280f82640e43d59e43d24dc236e9e9d3b4e  guix-build-4349051dd474/output/arm-linux-gnueabihf/bitcoin-4349051dd474-arm-linux-gnueabihf-debug.tar.gz
  1969980159033d1c9f73e199acb9f93ddbbbd1565ac717ac5a29b907b46aec9c  guix-build-4349051dd474/output/arm-linux-gnueabihf/bitcoin-4349051dd474-arm-linux-gnueabihf.tar.gz
  a1d679c8a861dc7b0422505e172745157680392227724bdbb6efb83ab564dd61  guix-build-4349051dd474/output/arm64-apple-darwin/SHA256SUMS.part
  37441242a3b97e51087a1b5df953f0a3ecb57a9523713bae152ac8005427118a  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin-unsigned.dmg
  e86757e6f4b92080ed6504c245787d801a8f3ade07e1ed4cb0d1fa7a0088430e  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin-unsigned.tar.gz
  ba2405f0b4835a3cb82bba4b281f6ffef97eb402430b47588c7ac986a29c5ae3  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin.tar.gz
  7a4675924f23b9a57c93077d4a00a3d87a3929269301f70709079ee2491d932a  guix-build-4349051dd474/output/dist-archive/bitcoin-4349051dd474.tar.gz
  4f45b1cd6a819fd1f0fe81ef2c3f3bbb6614c9cbeb2115bfd15ef0f8fb50da25  guix-build-4349051dd474/output/powerpc64-linux-gnu/SHA256SUMS.part
  262db5ffba4d952e0b3eb2a4f97a795058d58dbd280c48e7a389809c699c7465  guix-build-4349051dd474/output/powerpc64-linux-gnu/bitcoin-4349051dd474-powerpc64-linux-gnu-debug.tar.gz
  0a230d352da964fb8bd101aa690a49604ecbfaf1756c8da9aad88635598b0102  guix-build-4349051dd474/output/powerpc64-linux-gnu/bitcoin-4349051dd474-powerpc64-linux-gnu.tar.gz
  f155e0039b78bf772db8047b5d9eb4445e30b210f1bfa1d184e5587a06cdc583  guix-build-4349051dd474/output/powerpc64le-linux-gnu/SHA256SUMS.part
  6c32c429f5555cd5bab34a201352a3dae335f4bc23607996e170691c403db68f  guix-build-4349051dd474/output/powerpc64le-linux-gnu/bitcoin-4349051dd474-powerpc64le-linux-gnu-debug.tar.gz
  0c0d4d37eb75a04a702e1c7116fa89fd5d03439a0c08fdbcbc2d5349e071037e  guix-build-4349051dd474/output/powerpc64le-linux-gnu/bitcoin-4349051dd474-powerpc64le-linux-gnu.tar.gz
  bcc72b010ef0d53811d5b21e8b65a45ec861b0dc4658286c85b4eea3c5ef3264  guix-build-4349051dd474/output/riscv64-linux-gnu/SHA256SUMS.part
  c9740aa9daac4a57361b563525bd273851bc607544cfa196260f715794ebbc4b  guix-build-4349051dd474/output/riscv64-linux-gnu/bitcoin-4349051dd474-riscv64-linux-gnu-debug.tar.gz
  049b1d9ef133fd5901bdbe1e77c5f11c43da4f3f8fca133c0be1dbfcddb6e900  guix-build-4349051dd474/output/riscv64-linux-gnu/bitcoin-4349051dd474-riscv64-linux-gnu.tar.gz
  6d2ff63af68d5c6dd5709b3543e0ed59d2b6cd9c3b4f20fa873edb5a643ad929  guix-build-4349051dd474/output/x86_64-apple-darwin/SHA256SUMS.part
  6dc850bed29860fc23b183ddf9bcf17c6e6ad3917a220c13d617a3bcd16b5788  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin-unsigned.dmg
  2ff9849c2cf8504e1bbedc5bdc2bb1a11f439df84a6c2cfcbf195025c11289e8  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin-unsigned.tar.gz
  4d284659d6df5d3ead86d313fb5794552a83102f5c30fa433f32c87a2be25679  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin.tar.gz
  029b5dacfe77e865263fe3f9f0c12d65bf0fcfed152812e50cabd085a4a12b14  guix-build-4349051dd474/output/x86_64-linux-gnu/SHA256SUMS.part
  3f8295482e9da6e5a3780a98ef9e58b0924f59f9e2ab76bc70e1dc9c8691a764  guix-build-4349051dd474/output/x86_64-linux-gnu/bitcoin-4349051dd474-x86_64-linux-gnu-debug.tar.gz
  9dd5bb321c4bae36cfd8b6b23dd3df9462917c272bd36a7f562131db3a067d35  guix-build-4349051dd474/output/x86_64-linux-gnu/bitcoin-4349051dd474-x86_64-linux-gnu.tar.gz
  632ad4f8d7c10f4eb8422e0ccb1ecf35c03260fe1eb91224b0ab3d18765960b7  guix-build-4349051dd474/output/x86_64-w64-mingw32/SHA256SUMS.part
  fb6609c3f74b676a67d2334c150094a1be5f5d6a41ae40edcb26b073ce3ad841  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-debug.zip
  706074270e189a6e9bd32e1b522fc0c5c9f3c076839db9cc983d171bb2f2dd4a  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-setup-unsigned.exe
  78ce8c104eb6496f76633c5ee3988965b8b687583c51d97957cf936e34e8c6ef  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-unsigned.tar.gz
  0db748e76cb4d414f81f8b538e4b0a79ab1281fb16e480fcada9935e2bfc709d  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64.zip
  ```

  Guix Build (arm64):
  ```bash
  e1b7d9b65cf0233c13affd570a0b3247c806553d968188a79f87ce9aab4fee36  guix-build-4349051dd474/output/arm-linux-gnueabihf/SHA256SUMS.part
  a7e0e53c2b6a0d0dc47a0740e501b280f82640e43d59e43d24dc236e9e9d3b4e  guix-build-4349051dd474/output/arm-linux-gnueabihf/bitcoin-4349051dd474-arm-linux-gnueabihf-debug.tar.gz
  1969980159033d1c9f73e199acb9f93ddbbbd1565ac717ac5a29b907b46aec9c  guix-build-4349051dd474/output/arm-linux-gnueabihf/bitcoin-4349051dd474-arm-linux-gnueabihf.tar.gz
  a1d679c8a861dc7b0422505e172745157680392227724bdbb6efb83ab564dd61  guix-build-4349051dd474/output/arm64-apple-darwin/SHA256SUMS.part
  37441242a3b97e51087a1b5df953f0a3ecb57a9523713bae152ac8005427118a  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin-unsigned.dmg
  e86757e6f4b92080ed6504c245787d801a8f3ade07e1ed4cb0d1fa7a0088430e  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin-unsigned.tar.gz
  ba2405f0b4835a3cb82bba4b281f6ffef97eb402430b47588c7ac986a29c5ae3  guix-build-4349051dd474/output/arm64-apple-darwin/bitcoin-4349051dd474-arm64-apple-darwin.tar.gz
  7a4675924f23b9a57c93077d4a00a3d87a3929269301f70709079ee2491d932a  guix-build-4349051dd474/output/dist-archive/bitcoin-4349051dd474.tar.gz
  4f45b1cd6a819fd1f0fe81ef2c3f3bbb6614c9cbeb2115bfd15ef0f8fb50da25  guix-build-4349051dd474/output/powerpc64-linux-gnu/SHA256SUMS.part
  262db5ffba4d952e0b3eb2a4f97a795058d58dbd280c48e7a389809c699c7465  guix-build-4349051dd474/output/powerpc64-linux-gnu/bitcoin-4349051dd474-powerpc64-linux-gnu-debug.tar.gz
  0a230d352da964fb8bd101aa690a49604ecbfaf1756c8da9aad88635598b0102  guix-build-4349051dd474/output/powerpc64-linux-gnu/bitcoin-4349051dd474-powerpc64-linux-gnu.tar.gz
  f155e0039b78bf772db8047b5d9eb4445e30b210f1bfa1d184e5587a06cdc583  guix-build-4349051dd474/output/powerpc64le-linux-gnu/SHA256SUMS.part
  6c32c429f5555cd5bab34a201352a3dae335f4bc23607996e170691c403db68f  guix-build-4349051dd474/output/powerpc64le-linux-gnu/bitcoin-4349051dd474-powerpc64le-linux-gnu-debug.tar.gz
  0c0d4d37eb75a04a702e1c7116fa89fd5d03439a0c08fdbcbc2d5349e071037e  guix-build-4349051dd474/output/powerpc64le-linux-gnu/bitcoin-4349051dd474-powerpc64le-linux-gnu.tar.gz
  bcc72b010ef0d53811d5b21e8b65a45ec861b0dc4658286c85b4eea3c5ef3264  guix-build-4349051dd474/output/riscv64-linux-gnu/SHA256SUMS.part
  c9740aa9daac4a57361b563525bd273851bc607544cfa196260f715794ebbc4b  guix-build-4349051dd474/output/riscv64-linux-gnu/bitcoin-4349051dd474-riscv64-linux-gnu-debug.tar.gz
  049b1d9ef133fd5901bdbe1e77c5f11c43da4f3f8fca133c0be1dbfcddb6e900  guix-build-4349051dd474/output/riscv64-linux-gnu/bitcoin-4349051dd474-riscv64-linux-gnu.tar.gz
  6d2ff63af68d5c6dd5709b3543e0ed59d2b6cd9c3b4f20fa873edb5a643ad929  guix-build-4349051dd474/output/x86_64-apple-darwin/SHA256SUMS.part
  6dc850bed29860fc23b183ddf9bcf17c6e6ad3917a220c13d617a3bcd16b5788  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin-unsigned.dmg
  2ff9849c2cf8504e1bbedc5bdc2bb1a11f439df84a6c2cfcbf195025c11289e8  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin-unsigned.tar.gz
  4d284659d6df5d3ead86d313fb5794552a83102f5c30fa433f32c87a2be25679  guix-build-4349051dd474/output/x86_64-apple-darwin/bitcoin-4349051dd474-x86_64-apple-darwin.tar.gz
  029b5dacfe77e865263fe3f9f0c12d65bf0fcfed152812e50cabd085a4a12b14  guix-build-4349051dd474/output/x86_64-linux-gnu/SHA256SUMS.part
  3f8295482e9da6e5a3780a98ef9e58b0924f59f9e2ab76bc70e1dc9c8691a764  guix-build-4349051dd474/output/x86_64-linux-gnu/bitcoin-4349051dd474-x86_64-linux-gnu-debug.tar.gz
  9dd5bb321c4bae36cfd8b6b23dd3df9462917c272bd36a7f562131db3a067d35  guix-build-4349051dd474/output/x86_64-linux-gnu/bitcoin-4349051dd474-x86_64-linux-gnu.tar.gz
  632ad4f8d7c10f4eb8422e0ccb1ecf35c03260fe1eb91224b0ab3d18765960b7  guix-build-4349051dd474/output/x86_64-w64-mingw32/SHA256SUMS.part
  fb6609c3f74b676a67d2334c150094a1be5f5d6a41ae40edcb26b073ce3ad841  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-debug.zip
  706074270e189a6e9bd32e1b522fc0c5c9f3c076839db9cc983d171bb2f2dd4a  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-setup-unsigned.exe
  78ce8c104eb6496f76633c5ee3988965b8b687583c51d97957cf936e34e8c6ef  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64-unsigned.tar.gz
  0db748e76cb4d414f81f8b538e4b0a79ab1281fb16e480fcada9935e2bfc709d  guix-build-4349051dd474/output/x86_64-w64-mingw32/bitcoin-4349051dd474-win64.zip
  ```

Top commit has no ACKs.

Tree-SHA512: 0970b0dd07f6e237f7e2fed770649cc82ef4c22c4d9603a51818c353928833546fc76a3de5054979428d7309c073ce3120dd4bfc621245ff4319e8ac9e321472
2022-08-19 10:30:36 +02:00
.github doc: Remove label from good first issue template 2020-08-24 09:31:24 +02:00
.tx qt: Bump Transifex slug for 24.x 2022-08-08 12:07:47 +01:00
build-aux/m4 build: Check for std::atomic::exchange rather than std::atomic_exchange 2022-07-18 10:47:19 -04:00
build_msvc msvc: Drop _SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING 2022-08-10 15:48:10 +01:00
ci Merge bitcoin/bitcoin#25650: script: default to necessary tags in test/get_previous_releases.py 2022-08-05 10:51:06 +02:00
contrib build: include share/rpcauth in tarball & installer 2022-08-16 11:32:42 +01:00
depends build, qt: Use mkspecs/bitcoin-linux-g++ for all Linux hosts 2022-08-13 14:08:42 +01:00
doc Merge bitcoin/bitcoin#25504: RPC: allow to track coins by parent descriptors 2022-08-16 13:08:05 -04:00
share build: add example bitcoin conf to win installer 2022-08-16 11:32:46 +01:00
src Merge bitcoin/bitcoin#25679: wallet: Correctly identify external inputs that are also in the wallet 2022-08-19 08:53:44 +01:00
test tests: Test that external inputs of txs in wallet is handled correctly 2022-08-18 11:07:22 -04:00
.cirrus.yml Merge bitcoin/bitcoin#25528: ci: run USDT interface tests in the CI 2022-08-01 11:27:29 +02:00
.editorconfig ci: Drop AppVeyor CI integration 2021-09-07 06:12:53 +03:00
.gitattributes Separate protocol versioning from clientversion 2014-10-29 00:24:40 -04:00
.gitignore refactor: cleanups post unsubtree'ing univalue 2022-06-15 12:56:44 +01:00
.python-version Bump minimum python version to 3.6 2020-11-09 17:53:47 +10:00
.style.yapf test: .style.yapf: Set column_limit=160 2019-03-04 18:28:13 -05:00
autogen.sh scripted-diff: Bump copyright of files changed in 2019 2019-12-30 10:42:20 +13:00
configure.ac Merge bitcoin/bitcoin#25852: build: reorder CXXFLAGS in intrinsic checks 2022-08-19 10:30:36 +02:00
CONTRIBUTING.md doc: Explain squashing with merge commits 2022-05-24 08:17:41 +02:00
COPYING doc: Update license year range to 2022 2022-01-03 04:48:41 +08:00
INSTALL.md doc: Added hyperlink for doc/build 2021-09-09 19:53:12 +05:30
libbitcoinconsensus.pc.in build: remove libcrypto as internal dependency in libbitcoinconsensus.pc 2019-11-19 15:03:44 +01:00
Makefile.am build: package test_bitcoin in Windows installer 2022-08-09 09:13:23 +01:00
README.md doc: Explain Bitcoin Core in README.md 2022-05-10 07:49:09 +02:00
REVIEWERS doc: empty REVIEWERS file 2022-07-30 09:05:07 +01:00
SECURITY.md doc: Remove my key from SECURITY.md 2022-08-15 12:49:36 +02:00

Bitcoin Core integration/staging tree

https://bitcoincore.org

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 in configure) with: make check. 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: test/functional/test_runner.py

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.