Commit Graph

1017 Commits

Author SHA1 Message Date
fanquake
4722b7c715
build: remove minisketch clz check 2024-04-12 14:28:34 +02:00
merge-script
0a9cfd1752
Merge bitcoin/bitcoin#28981: Replace Boost.Process with cpp-subprocess
d5a715536e build: remove boost::process dependency for building external signer support (Sebastian Falbesoner)
70434b1c44 external_signer: replace boost::process with cpp-subprocess (Sebastian Falbesoner)
cc8b9875b1 Add `cpp-subprocess` header-only library (Hennadii Stepanov)

Pull request description:

  Closes https://github.com/bitcoin/bitcoin/issues/24907.

  This PR is based on **theStack**'s [work](https://github.com/bitcoin/bitcoin/issues/24907#issuecomment-1466087049).

  The `subprocess.hpp` header has been sourced from the [upstream repo](https://github.com/arun11299/cpp-subprocess) with the only modification being the removal of convenience functions, which are not utilized in our codebase.

  Windows-related changes will be addressed in subsequent follow-ups.

ACKs for top commit:
  achow101:
    reACK d5a715536e
  Sjors:
    re-tACK d5a715536e
  theStack:
    Light re-ACK d5a715536e
  fanquake:
    ACK d5a715536e - with the expectation that this code is going to be maintained as our own. Next PRs should:

Tree-SHA512: d7fb6fecc3f5792496204190afb7d85b3e207b858fb1a75efe483c05260843b81b27d14b299323bb667c990e87a07197059afea3796cf218ed8b614086bd3611
2024-04-10 12:03:06 +02:00
fanquake
0f0e36de5f
Merge bitcoin/bitcoin#29815: crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's
2d1819455c crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's (Cory Fields)

Pull request description:

  Looking at libc sources, apple and openbsd implementations match our naive fallback. Only FreeBSD (and only x86_64) seems to [implement an optimized version](https://github.com/freebsd/freebsd-src/blob/main/lib/libc/amd64/string/timingsafe_bcmp.S).

  It's not worth the hassle of using a platform-specific function for such little gain.

  Additionally, as mentioned below, this is the only case outside of sha2 that requires an autoconf check, and I have upcoming PRs to remove the sha2 ones.

  Apple's [impl is unoptimized](https://opensource.apple.com/source/Libc/Libc-1244.1.7/string/FreeBSD/timingsafe_bcmp.c.auto.html).

  As-is [OpenBSD's impl](https://github.com/openbsd/src/blob/master/lib/libc/string/timingsafe_bcmp.c).

  Relevant IRC conversation with sipa:

  > \<cfields\> sipa: chacha20poly1305.cpp uses libc's timingsafe_bcmp when possible. But looking around at apple/freebsd/openbsd, I don't see any impl that doesn't use the naive implementation that matches our fallback...
  > \<cfields\> is there any reason to belive there's an optimized impl somewhere that we're actually hitting?
  > \<cfields\> asking because after cleaning up sha2, timingsafe_bcmp is the last autoconf check that remains in all of crypto. It'd make life easy if we could just always use our internal one.
  > \<cfields\> *all of crypto/
  > \<sipa\> cfields: let's get rid of the dependency then
  > \<sipa\> it's a trivial function
  > \<sipa\> and if we need it for some platforms, no real reason not to use it on all

  After the above discusstion, I did end up finding the x86_64-optimized FreeBSD impl, but I don't think that's all that significant.

ACKs for top commit:
  sipa:
    utACK 2d1819455c
  fanquake:
    ACK 2d1819455c
  TheCharlatan:
    ACK 2d1819455c
  theStack:
    ACK 2d1819455c

Tree-SHA512: b9583e19ac2f77c5d572aa5b95bc4b53669d5717e5708babef930644980de7c5d06a9c7decd5c2b559d70b8597328ecfe513375e3d8c3ef523db80012dfe9266
2024-04-06 20:45:19 +01:00
fanquake
c3530254c9
Merge bitcoin/bitcoin#29081: refactor: Remove gmtime*
fa9f36baba build: Remove HAVE_GMTIME_R (MarcoFalke)
fa72dcbfa5 refactor: FormatISO8601* without gmtime* (MarcoFalke)
fa2c486afc Revert "time: add runtime sanity check" (MarcoFalke)

Pull request description:

  Now that the `ChronoSanityCheck` has passed for everyone with C++17 and is guaranteed by C++20 to always pass, remove it.

  Also, remove `gmtime_r` and `gmtime_s` and replace them with `year_month_day`+`hh_mm_ss` from C++20.

ACKs for top commit:
  sipa:
    utACK fa9f36baba
  fanquake:
    ACK fa9f36baba - more std lib & even less stuff to port.

Tree-SHA512: a9e7e805b757b7dade0bcc3f95273a7dc4f68622630d74838339789dd203ad7542d36b2e090a93b2bc5a7ecc383207dd7ec82c68147108bdac7ce44f088c8c9a
2024-04-05 17:02:00 +01:00
Cory Fields
2d1819455c crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's
Looking at apple/freebsd/openbsd sources, their implementations match our naive
fallback. It's not worth the hassle of using a platform-specific function for
no gain.
2024-04-05 15:44:21 +00:00
Sebastian Falbesoner
d5a715536e
build: remove boost::process dependency for building external signer support 2024-03-27 14:16:38 +00:00
fanquake
80f8b92f4f
remove libbitcoinconsensus
This was deprecated in v27.0, for removal in v28.0.
See discussion in PR #29189.
2024-03-18 16:59:39 +00:00
MarcoFalke
fa9f36baba
build: Remove HAVE_GMTIME_R 2024-03-18 16:01:28 +01:00
Ava Chow
0ed2c130e7
Merge bitcoin/bitcoin#27375: net: support unix domain sockets for -proxy and -onion
567cec9a05 doc: add release notes and help text for unix sockets (Matthew Zipkin)
bfe5192891 test: cover UNIX sockets in feature_proxy.py (Matthew Zipkin)
c65c0d0163 init: allow UNIX socket path for -proxy and -onion (Matthew Zipkin)
c3bd43142e gui: accomodate unix socket Proxy in updateDefaultProxyNets() (Matthew Zipkin)
a88bf9dedd i2p: construct Session with Proxy instead of CService (Matthew Zipkin)
d9318a37ec net: split ConnectToSocket() from ConnectDirectly() for unix sockets (Matthew Zipkin)
ac2ecf3182 proxy: rename randomize_credentials to m_randomize_credentials (Matthew Zipkin)
a89c3f59dc netbase: extend Proxy class to wrap UNIX socket as well as TCP (Matthew Zipkin)
3a7d6548ef net: move CreateSock() calls from ConnectNode() to netbase methods (Matthew Zipkin)
74f568cb6f netbase: allow CreateSock() to create UNIX sockets if supported (Matthew Zipkin)
bae86c8d31 netbase: refactor CreateSock() to accept sa_family_t (Matthew Zipkin)
adb3a3e51d configure: test for unix domain sockets (Matthew Zipkin)

Pull request description:

  Closes https://github.com/bitcoin/bitcoin/issues/27252

  UNIX domain sockets are a mechanism for inter-process communication that are faster than local TCP ports (because there is no need for TCP overhead) and potentially more secure because access is managed by the filesystem instead of serving an open port on the system.

  There has been work on [unix domain sockets before](https://github.com/bitcoin/bitcoin/pull/9979) but for now I just wanted to start on this single use-case which is enabling unix sockets from the client side, specifically connecting to a local Tor proxy (Tor can listen on unix sockets and even enforces strict curent-user-only access permission before binding) configured by `-onion=` or `-proxy=`

  I copied the prefix `unix:` usage from Tor. With this patch built locally you can test with your own filesystem path (example):

  `tor --SocksPort unix:/Users/matthewzipkin/torsocket/x`

  `bitcoind -proxy=unix:/Users/matthewzipkin/torsocket/x`

  Prep work for this feature includes:
  - Moving where and how we create `sockaddr` and `Sock` to accommodate `AF_UNIX` without disturbing `CService`
  - Expanding `Proxy` class to represent either a `CService` or a UNIX socket (by its file path)

  Future work:
  - Enable UNIX sockets for ZMQ (https://github.com/bitcoin/bitcoin/pull/27679)
  - Enable UNIX sockets for I2P SAM proxy (some code is included in this PR but not tested or exposed to user options yet)
  - Enable UNIX sockets on windows where supported
  - Update Network Proxies dialog in GUI to support UNIX sockets

ACKs for top commit:
  Sjors:
    re-ACK 567cec9a05
  tdb3:
    re ACK for 567cec9a05.
  achow101:
    ACK 567cec9a05
  vasild:
    ACK 567cec9a05

Tree-SHA512: de81860e56d5de83217a18df4c35297732b4ad491e293a0153d2d02a0bde1d022700a1131279b187ef219651487537354b9d06d10fde56225500c7e257df92c1
2024-03-13 06:53:07 -04:00
fanquake
8b7630cb1f
build: ignore deprecated-declaration warnings in objc++ macOS code
These come from GUI code, and haven't/aren't being fixed, see discussion
in https://github.com/bitcoin-core/gui/issues/112. For now, just ignore
them entirely. Note that this only applies to ObjCXX code, so will not
hide any relevant warnings coming from C or CXX code (and they would be
unlikely in any case).

Alternative to #29362, which disables all compiler warnings, for macOS
builds in the CI.

Relevant output:
```bash
qt/macnotificationhandler.mm:27:9: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
        NSUserNotification* userNotification = [[NSUserNotification alloc] init];
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
qt/macnotificationhandler.mm:27:50: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
        NSUserNotification* userNotification = [[NSUserNotification alloc] init];
                                                 ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
@interface NSUserNotification : NSObject <NSCopying> {
           ^
qt/macnotificationhandler.mm:30:11: warning: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
        [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification: userNotification];
          ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
@interface NSUserNotificationCenter : NSObject {
           ^
3 warnings generated.
```
2024-03-07 13:07:17 +00:00
fanquake
fd4fe411d3
build: bump version to 27.99 2024-03-06 14:47:04 +00:00
Hennadii Stepanov
6ec1ca7c85
build: Fix test for SSE4.1 intrinsics
This change uses the `_mm_blend_epi16` SSE4.1 function used in our code
and fixes false-positive cases, for example, when CXXFLAGS="-mno-sse4.1"
provided.
2024-03-05 11:36:40 +00:00
Matthew Zipkin
adb3a3e51d
configure: test for unix domain sockets
Copied from https://github.com/bitcoin/bitcoin/pull/9979

Co-authored-by: laanwj <126646+laanwj@users.noreply.github.com>
2024-03-01 13:11:26 -05:00
fanquake
8da62a1041
Merge bitcoin/bitcoin#29263: serialization: c++20 endian/byteswap/clz modernization
86b7f28d6c serialization: use internal endian conversion functions (Cory Fields)
432b18ca8d serialization: detect byteswap builtins without autoconf tests (Cory Fields)
297367b3bb crypto: replace CountBits with std::bit_width (Cory Fields)
52f9bba889 crypto: replace non-standard CLZ builtins with c++20's bit_width (Cory Fields)

Pull request description:

  This replaces #28674, #29036, and #29057. Now ready for testing and review.

  Replaces platform-specific endian and byteswap functions. This is especially useful for kernel, as it means that our deep serialization code no longer requires bitcoin-config.h.

  I apologize for the size of the last commit, but it's hard to avoid making those changes at once.

  All platforms now use our internal functions rather than libc or platform-specific ones, with the exception of MSVC.

  Sadly, benchmarking showed that not all compilers are capable of detecting and optimizing byteswap functions, so compiler builtins are instead used where possible. However, they're now detected via macros rather than autoconf checks.

  This[ matches how libc++ implements std::byteswap for c++23](https://github.com/llvm/llvm-project/blob/main/libcxx/include/__bit/byteswap.h#L26).

  I suggest we move/rename `compat/endian.h`, but I left that out of this PR to avoid bikeshedding.

  #29057 pointed out some irregularities in benchmarks. After messing with various compilers and configs for a few weeks with these changes, I'm of the opinion that we can't win on every platform every time, so we should take the code that makes sense going forward. That said, if any real-world slowdowns are caused here, we should obviously investigate.

ACKs for top commit:
  maflcko:
    ACK 86b7f28d6c 📘
  fanquake:
    ACK 86b7f28d6c - we can finish pruning out the __builtin_clz* checks/usage once the minisketch code has been updated. This is more good cleanup pre-CMake & for the kernal.

Tree-SHA512: 715a32ec190c70505ffbce70bfe81fc7b6aa33e376b60292e801f60cf17025aabfcab4e8c53ebb2e28ffc5cf4c20b74fe3dd8548371ad772085c13aec8b7970e
2024-03-01 11:19:58 -05:00
Cory Fields
376f0f6d07 build: remove confusing and inconsistent disable-asm option
1. It didn't actually disable asm usage in our code. Regardless of the setting,
   asm is used in random.cpp and support/cleanse.cpp.
2. The value wasn't forwarded to libsecp as a user might have reasonably
   expected.
3. We now have the DISABLE_OPTIMIZED_SHA256 define which is what disable-asm
   actually did in practice.

If there is any desire, we can hook DISABLE_OPTIMIZED_SHA256 up to a new
configure option that actually does what it says.
2024-02-29 19:05:45 +00:00
fanquake
bbfddb3998
Merge bitcoin/bitcoin#29484: serialization: replace char-is-int8_t autoconf detection with c++20 concept
ad7584d8b6 serialization: replace char-is-int8_t autoconf detection with c++20 concept (Cory Fields)

Pull request description:

  Doesn't depend on #29263, but it's really only relevant after that one's merged.

  This removes the only remaining autoconf macro in our serialization code (after #29263), so it can now be used trivially and safely out-of-tree.

  ~Our code does not currently contain any concepts, but couldn't find any discussion or docs about avoiding them. I guess we'll see if this blows up our c-i.~
  Edit: Ignore this. ajtowns pointed out that we're already using a few concepts.

  This was introduced in #13580. Please check my logic on this as I'm unable to test on a SmartOS system. Even better would be a confirmation from someone who can build there.

ACKs for top commit:
  Empact:
    Code review ACK ad7584d8b6

Tree-SHA512: 1faf65c900700efb1cf3092c607a2230321b393cb2f029fbfb94bc8e50df1dabd7a9e4b91e3b34f0d2f3471aaf18ee7e56d91869db5c5f4bae84da95443e1120
2024-02-28 22:04:33 +00:00
Cory Fields
86b7f28d6c serialization: use internal endian conversion functions
These replace our platform-specific mess in favor of c++20 endian detection
via std::endian and internal byteswap functions when necessary.

They no longer rely on autoconf detection.
2024-02-28 13:42:38 +00:00
Cory Fields
432b18ca8d serialization: detect byteswap builtins without autoconf tests
Rather than a complicated set of tests to decide which bswap functions to
use, always prefer the compiler built-ins when available.

These builtins and fallbacks can all be removed once we're using c++23, which
adds std::byteswap.
2024-02-28 13:42:38 +00:00
Cory Fields
ad7584d8b6 serialization: replace char-is-int8_t autoconf detection with c++20 concept
This removes the only remaining autoconf macro in our serialization code,
so it can now be used trivially and safely out-of-tree.
2024-02-27 19:03:26 +00:00
fanquake
b052b2d1f2
build: remove -Wdocumentation conditional
Now that --enable-suppress-external-warnings is on by default, we can
drop it.
2024-02-27 09:53:42 +00:00
fanquake
e3b68b3b83
Merge bitcoin/bitcoin#28875: build: Pass sanitize flags to instrument libsecp256k1 code
cbea49c0d3 build: Pass sanitize flags to instrument `libsecp256k1` code (Hennadii Stepanov)

Pull request description:

  This PR is a revived https://github.com/bitcoin/bitcoin/pull/27991 with an addressed [comment](https://github.com/bitcoin/bitcoin/pull/27991#discussion_r1252148488).

  Fixes https://github.com/bitcoin/bitcoin/issues/27990.

  Might be tested as follows:
  ```
  $ ./autogen.sh && ./configure --enable-fuzz --with-sanitizers=fuzzer CC=clang-13 CXX=clang++-13
  $ make clean > /dev/null && make
  $ objdump --disassemble=secp256k1_xonly_pubkey_serialize src/test/fuzz/fuzz | grep __sanitizer_cov
   1953bd0:e8 bb c6 05 ff       call   9b0290 <__sanitizer_cov_trace_const_cmp8>
   1953d32:e8 69 c4 05 ff       call   9b01a0 <__sanitizer_cov_trace_pc_indir>
   1953d58:e8 43 c4 05 ff       call   9b01a0 <__sanitizer_cov_trace_pc_indir>
   1953d82:e8 19 c4 05 ff       call   9b01a0 <__sanitizer_cov_trace_pc_indir>
  ```

ACKs for top commit:
  fanquake:
    ACK cbea49c0d3
  dergoegge:
    reACK cbea49c0d3

Tree-SHA512: 801994e75b711d20eaf0d675f378da07d693f4a7de026efd93860f5f1deabed855a83eca3561725263e4fe605fcc5f91eb73c021ec91c831864e6deb575e3885
2024-01-26 11:31:34 +00:00
Hennadii Stepanov
cbea49c0d3
build: Pass sanitize flags to instrument libsecp256k1 code
Also a new UBSan suppression has been added.
2024-01-19 10:08:41 +00:00
fanquake
00c1e2aa44
build: fix optimisation flags used for --coverage
-O0 is just overriding -Og.
2024-01-16 09:51:19 +00:00
fanquake
6cc2a38c13
build: add sanitizer flags to configure output 2024-01-16 09:51:01 +00:00
fanquake
08cd5aca18
build: always set -g -O2 in CORE_CXXFLAGS
This avoids cases of missing -O2, when *FLAGS has been overriden.
Removes the need for duplicate code to clear autoconf defaults.

Also, move CORE_CXXFLAGS before DEBUG_CXXFLAGS, so that -O2 is always
overriden if debugging etc.
2024-01-16 09:46:17 +00:00
fanquake
2ac2821a74
Merge bitcoin/bitcoin#29185: build: remove --enable-lto
2d1b1c7dae build: remove --enable-lto (fanquake)

Pull request description:

  This has outlived its usefulness, doesn't gel well with newer compilers & `-flto` related options, i.e thin vs full, or `=auto`, and having `-flto` as the only option means that sometimes this just needs to be worked around, i.e in oss-fuzz:
  https://github.com/google/oss-fuzz/blob/master/projects/bitcoin-core/build.sh.

  While it was convenient when `-flto` was newer, support for `-flto` is now in all compilers we use, and there's also no-longer any real need for us to treat `-flto` different to any other optimization option.

  Remove it, to remove build complexity, and so there's no need to port a similar option to CMake.

  Note that the LTO option remains in depends, because we still a way to build packages that have LTO specific patches/options.

ACKs for top commit:
  TheCharlatan:
    ACK 2d1b1c7dae
  hebasto:
    ACK 2d1b1c7dae.

Tree-SHA512: 91812de7da35346f51850714a188fcffbac478bc8b348bf756c2555fcbde86ba622ac2fb77d294dea0378c741d3656f06121ef3a795aeed63fd170fc31bfa5af
2024-01-16 09:42:12 +00:00
fanquake
8c5e4f42d5
Merge bitcoin/bitcoin#29208: build: Bump clang minimum supported version to 14
aaaace2fd1 fuzz: Assume presence of __builtin_*_overflow, without checks (MarcoFalke)
fa223ba5eb Revert "build: Fix undefined reference to __mulodi4" (MarcoFalke)
fa7c751bd9 build: Bump clang minimum supported version to 14 (MarcoFalke)

Pull request description:

  Most supported operating systems ship with clang-14 (or later), so bump the minimum to that and allow new code to drop workarounds for previous clang bugs.

  For reference:
  * https://packages.debian.org/bookworm/clang (`clang-14`)
  * https://packages.ubuntu.com/jammy/clang (`clang-14`)
  * CentOS-like 8/9 Stream: All Clang versions from 15 to 17
  * FreeBSD 12/13: All Clang versions from 15 to 16
  * OpenSuse Tumbleweed ships with https://software.opensuse.org/package/clang (`clang17`); No idea about OpenSuse Leap

  On operating systems where the clang version is not shipped by default, the user would have to use GCC, or install clang in a different way. For example:

  * https://packages.debian.org/bullseye/g++ (g++-10)
  * https://packages.ubuntu.com/focal/g++-10
  * https://apt.llvm.org/, or nix, or guix, or compile clang from source, ...

ACKs for top commit:
  fanquake:
    ACK aaaace2fd1

Tree-SHA512: 81d066b14cc568d27312f1cc814b09540b038a10a0a8e9d71fc9745b024fb6c32a959af673e6819b817ea7cef98da4abfa63dff16cffb7821b40083016b0291f
2024-01-12 10:03:22 +00:00
22388o⚡️
1f8450f066
doc: upgrade Bitcoin Core license to 2024 2024-01-10 16:29:01 -06:00
MarcoFalke
fa223ba5eb
Revert "build: Fix undefined reference to __mulodi4"
This reverts commit e4c8bb62e4.
2024-01-09 15:38:57 +01:00
Hennadii Stepanov
8decc5c726
build: Fix -Xclang -internal-isystem option
LLVM Clang >=16.0 and Apple Clang >=15.0 do not recognize
`-Xclang -internal-isystem/usr/local/include` anymore.

For example, see: cbbe1d4454
2024-01-07 11:32:51 +00:00
fanquake
2d1b1c7dae
build: remove --enable-lto
This has outlived its usefulness, doesn't gel well with
newer compilers & `-flto` related options, i.e thin vs full, or `=auto`,
and having `-flto` as the only option means that sometimes this just
needs to be worked around, i.e in oss-fuzz:
https://github.com/google/oss-fuzz/blob/master/projects/bitcoin-core/build.sh.

While it was convenient when `-flto` was newer, support for `-flto` is now
in all compilers we use, and there's also no-longer any real need
for us to treat `-flto` different to any other optimization option.

Remove it, to remove build complexity, and so there's no need
to port a similar option to CMake.

Note that the LTO option remains in depends, because we still a way to
build packages that have LTO specific patches/options.

If we decide to merge this, I'll follow up downstream in oss-fuzz first,
to make sure we don't break the build.
2024-01-05 15:17:50 +00:00
fanquake
0830dcb313
Merge bitcoin/bitcoin#29066: Bump minimum required Boost version due to migration to C++20
49a90915aa build: Bump minimum required Boost to 1.73.0 to support C++20 (Hennadii Stepanov)

Pull request description:

  Boost versions <1.73 have C++20-specific bugs that were fixed in the following commits:
  - 15fcf21356
  - 495c095dc0

  I tested [`libboost1.71-dev`](https://packages.ubuntu.com/focal/libboost1.71-dev) in Ubuntu 20.04 and Boost 1.71, 1.72, 1.73 in our depends build system.

  Closes https://github.com/bitcoin/bitcoin/issues/29063.

ACKs for top commit:
  fanquake:
    ACK 49a90915aa

Tree-SHA512: b8ebc08af85abfa3fda70961bd1136ee9e5149dd76a3f901e43acba624d231971873cba5cbf30837f9e5ab58790b8330f241a76cb76d8cf5dce5ad0cca33fba8
2023-12-13 14:32:00 +00:00
fanquake
f0e829022a
Merge bitcoin/bitcoin#28967: build: disable external-signer for Windows
308aec3e56 build: disable external-signer for Windows (fanquake)
35537318a1 ci: remove --enable-external-signer from win64 job (fanquake)

Pull request description:

  It's come to light that Boost ASIO (a Boost Process sub dep) has in some
  instances, been quietly  initialising our network stack on Windows (see
  PR https://github.com/bitcoin/bitcoin/pull/28486 and discussion in https://github.com/bitcoin/bitcoin/issues/28940).

  This has been shielding a bug in our own code, but the larger issue
  is that Boost Process/ASIO is running code before main, and doing things
  like setting up networking. This undermines our own assumptions about
  how our binary works, happens before we run any sanity checks,
  and before we call our own code to setup networking. Note that ASIO also
  calls WSAStartup with version `2.0`, whereas we call with `2.2`.

  It's also not clear why a feature like external signer would have a
  dependency that would be doing anything network/socket related,
  given it only exists to spawn a local process.

  See also the discussion in https://github.com/bitcoin/bitcoin/issues/24907. Note that the maintaince of Boost Process in general,
  has not really improved. For example, rather than fixing bugs like https://github.com/boostorg/process/issues/111,
  i.e, https://github.com/boostorg/process/pull/317, the maintainer chooses to just wrap exception causing overflows
  in try-catch blocks: 0c42a58eac. These changes get merged in large,
  unreviewed PRs, i.e https://github.com/boostorg/process/pull/319.

  This PR disables external-signer on Windows for now. If, in future, someone
  changes how Boost Process works, or replaces it entirely with some
  properly reviewed and maintained code, we could reenable this feature on
  Windows.

ACKs for top commit:
  hebasto:
    re-ACK 308aec3e56.
  TheCharlatan:
    ACK 308aec3e56

Tree-SHA512: 7405f7fc9833eeaacd6836c4e5b1c1a7845a40c1fdd55c1060152f8d8189e4777464fde650e11eb1539556a75dddf49667105987078b1457493ee772945da66e
2023-12-13 11:55:21 +00:00
Hennadii Stepanov
49a90915aa
build: Bump minimum required Boost to 1.73.0 to support C++20
Boost versions <1.73 have C++20-specific bugs that were fixed in the
following commits:
- 15fcf21356
- 495c095dc0
2023-12-12 19:59:52 +00:00
fanquake
d5e5810bd3
Merge bitcoin/bitcoin#28999: build: Enable -Wunreachable-code
fa8adbe7c1 build: Enable -Wunreachable-code (MarcoFalke)

Pull request description:

  It seems a bit confusing to write code after a `return`. This can even lead to bugs, or incorrect code, such as https://github.com/bitcoin/bitcoin/pull/28830/files#r1415372320 . (Edit: The linked instance is not found by clang's `-Wunreachable-code`).

  Fix all issues by enabling `-Wunreachable-code`.

  This flag also enables `-Wunreachable-code-loop-increment`, according to https://clang.llvm.org/docs/DiagnosticsReference.html#wunreachable-code, so remove that.

ACKs for top commit:
  ajtowns:
    > ACK [fa8adbe](fa8adbe7c1)
  stickies-v:
    ACK fa8adbe7c1
  jonatack:
    ACK fa8adbe7c1 tested with arm64 clang 17.0.6

Tree-SHA512: 12a2f74b69ae002e62ae08038f7458837090a12051a4c154d05ae4bb26fb19fc1fa76c63aedf2b3fbb36f048c593ca3b8c0efe03fe93cf07a0fd114fc84ce1e7
2023-12-11 15:44:16 +00:00
MarcoFalke
fa67f096bd
build: Require C++20 compiler 2023-12-07 11:05:33 +01:00
MarcoFalke
fa8adbe7c1
build: Enable -Wunreachable-code 2023-12-05 15:36:08 +01:00
fanquake
308aec3e56
build: disable external-signer for Windows
It's come to light that Boost ASIO (a Boost Process sub dep) has in some
instances, been queitly initialising our network stack on Windows (see
PR #28486 and discussion in #28940).

This has been shielding a bug in our own code, but the larger issue
is that Boost Process/ASIO is running code before main, and doing things
like setting up networking. This undermines our own assumptions about
how our binary works, happens before we get to run any sanity checks,
and also runs before we call our own code to setup networking.

It's also not clear why a feature like external signer would have a
dependency that would be doing anything network/socket related, given it
only exists to spawn a local process.
2023-12-01 10:46:19 +00:00
Luke Dashjr
ea93c03a58 configure: For intrinsics checks, use pragmas to explicitly enable them for GCC and Clang if possible 2023-11-24 03:46:09 +00:00
fanquake
ddc4b9850a
Merge bitcoin/bitcoin#28919: build: Fix regression in "ARMv8 CRC32 intrinsics" test
228d6a2969 build: Fix regression in "ARMv8 CRC32 intrinsics" test (Hennadii Stepanov)

Pull request description:

  In the master branch, the `aarch64` binaries lack support for CRC32 intrinsics.

  The `vmull_p64` is a part of the Crypto extensions from the ACLE. They are optional extensions, so they get enabled with a `+crypto` for architecture flags.

  The regression was introduced in https://github.com/bitcoin/bitcoin/pull/26183 (v25.0).

  The `./configure` script log excerpts:
  - the master branch @ d752349029:
  ```
  checking whether C++ compiler accepts -march=armv8-a+crc... yes
  checking whether C++ compiler accepts -march=armv8-a+crypto... yes
  checking for ARMv8 CRC32 intrinsics... no
  checking for ARMv8 SHA-NI intrinsics... yes
  ```
  - this PR:
  ```
  checking whether C++ compiler accepts -march=armv8-a+crc+crypto... yes
  checking whether C++ compiler accepts -march=armv8-a+crypto... yes
  checking for ARMv8 CRC32 intrinsics... yes
  checking for ARMv8 SHA-NI intrinsics... yes
  ```

  Guix build:
  ```
  x86_64
  2afd81f540c6d3b36ff305e88bafe935e4272cd3efef3130aa69d49a0522541b  guix-build-228d6a2969e4/output/aarch64-linux-gnu/SHA256SUMS.part
  6c704d6d30d495adb3fb86befdb500eb389a02c1167163f14ab5c3c3e630e6b3  guix-build-228d6a2969e4/output/aarch64-linux-gnu/bitcoin-228d6a2969e4-aarch64-linux-gnu-debug.tar.gz
  e4419963c9c0d99adc4e38538900b648f2c14f793b60c8ee2e6f5acc9d3fadd3  guix-build-228d6a2969e4/output/aarch64-linux-gnu/bitcoin-228d6a2969e4-aarch64-linux-gnu.tar.gz
  7d11052b6bd28cdf26d5f2a4987f02d32c93a061907bcd048fb6d161a0466ca9  guix-build-228d6a2969e4/output/dist-archive/bitcoin-228d6a2969e4.tar.gz
  ```

ACKs for top commit:
  TheCharlatan:
    ACK 228d6a2969

Tree-SHA512: 4c27ca8acb953bf56e972d907a282ee19e3f30f7a4bf8a9822395fe0e28977cd6233e8b65b4a25cc1d3d5ff6a796d7af07653e18531c44ee3efaff1563d96d32
2023-11-22 17:20:13 +00:00
fanquake
5d13b9586e
Merge bitcoin/bitcoin#28461: build: Windows SSP roundup
f95af98128 guix: default ssp for Windows GCC (fanquake)
95d55b96c2 guix: remove ssp workaround from Windows GCC (fanquake)
8f43302a0a build: remove explicit libssp linking from Windows build (fanquake)

Pull request description:

  I was expecting this to fail to compile somewhere, maybe in the CI, but that doesn't seem to be the case?
  Seems workable given the SSP related changes in the newer mingw-w64 headers (which are in Guix):
  > Implement some of the stack protector functions/variables so -lssp is now optional when _FORTIFY_SOURCE or -fstack-protector-strong is used.

  However I think this would still be broken in some older environments, so we might have to wait for a compiler bump, or similar. The optional -lssp also seems to work when using older headers, which doesn't make sense.

  Would fix #28104.

ACKs for top commit:
  hebasto:
    ACK f95af98128, I've verified binaries from `bitcoin-f95af98128f1-win64.zip` on Windows 11 Pro 23H2.
  TheCharlatan:
    ACK f95af98128

Tree-SHA512: 71169ec513cfe692dfa7741d2bf37b45da05627c0af1cbd50cf8c3c04cc21c4bf88f3284532bddc1e3e648391ec78dbaca5170987a13c21ac204a7bcaf27f349
2023-11-22 17:17:12 +00:00
Hennadii Stepanov
228d6a2969
build: Fix regression in "ARMv8 CRC32 intrinsics" test
The `vmull_p64` is a part of the Crypto extensions from the ACLE. They
are optional extensions, so they get enabled with a `+crypto` for
architecture flags.
2023-11-20 13:37:44 +00:00
fanquake
3b19100303
depends: remove PYTHONPATH from config.site
We no-longer need this, as we no-longer build python packages.

Effectively reverts de619a37fd.
2023-11-14 16:28:38 +00:00
fanquake
8f43302a0a
build: remove explicit libssp linking from Windows build 2023-11-13 16:57:55 +00:00
Cory Fields
3c61c60b90
build: Add an old hack to remove bind_at_load from libtool.
Similar to a98356fee8.
2023-11-09 17:14:22 +00:00
fanquake
45257601da
build: remove -bind_at_load usage
This is deprecated on macOS:
```bash
ld: warning: -bind_at_load is deprecated on macOS
```
and likely redundant anyways, given the behaviour of dyld3.

Unfortunately libtool is still injecting a `-bind_at_load`:
```bash
	# Don't allow lazy linking, it breaks C++ global constructors
	# But is supposedly fixed on 10.4 or later (yay!).
	if test CXX = "$tagname"; then
	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
	    10.[0123])
	      func_append compile_command " $wl-bind_at_load"
	      func_append finalize_command " $wl-bind_at_load"
	    ;;
	  esac
	fi
```
so this doesn't remove all the warnings, but removes us as a potential
source of them.

Note that anywhere the ld64 warnings are being emitted, we are already
not adding this flag to our hardened ldflags, because of `-Wl,-fatal_warnings`.
2023-11-09 17:07:21 +00:00
fanquake
b74e449ffa
build: remove potential for duplciate natpmp linking
Consolidate the lib checking logic to be the same as miniupnpc.
2023-10-31 11:12:28 +00:00
fanquake
4e95096952
build: remove duplicate -lminiupnpc linking
Having the link check in the header check loop means we get `-lminiupnpc
-lminiupnpc -lminiupnpc` on the link line. This is unnecessary, and
results in warnings, i.e:
```bash
ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
ld: warning: ignoring duplicate libraries: '-levent', '-lminiupnpc'
```

These warnings have been occurring since the new linker released with
Xcode 15, and also came up in https://github.com/hebasto/bitcoin/pull/34.
2023-10-31 11:12:24 +00:00
MarcoFalke
fa918d397d
Always enable -Wsuggest-override 2023-10-30 15:18:22 +01:00
fanquake
43704827b4
Merge bitcoin/bitcoin#28211: Bump python minimum supported version to 3.9
fa25e8b0a1 doc: Recommend lint image build on every call (MarcoFalke)
faf70c1f33 Bump python minimum version to 3.9 (MarcoFalke)
fa8996b930 ci: Bump i686_multiprocess.sh to latest Ubuntu LTS (MarcoFalke)

Pull request description:

  All supported operating systems ship with python 3.9 (or later), so bumping the minimum should not cause any issues. A bump will allow new code to use new python 3.9 features.

  For reference:
  * https://packages.debian.org/bullseye/python3
  * https://packages.ubuntu.com/focal/python3.9
  * FreeBSD 12/13 also ships with 3.9
  * CentOS-like 8/9 also ships with 3.9 (and 3.11)
  * OpenSuse Leap also ships with 3.9 (and 3.11) https://software.opensuse.org/package/python311-base

  This is for Bitcoin Core 27.0 in 2024 (next year), not the soon upcoming 26.0 next month.

ACKs for top commit:
  Sjors:
    ACK fa25e8b0a1
  jamesob:
    ACK fa25e8b0a1 ([`jamesob/ackr/28211.1.MarcoFalke.bump_python_minimum_supp`](https://github.com/jamesob/bitcoin/tree/ackr/28211.1.MarcoFalke.bump_python_minimum_supp))

Tree-SHA512: 86c9f6ac4b5ba94a62ee6a6062dd48a8295d8611a39cdb5829f4f0dbc77aaa1a51edccc7a99275bf699143ad3a6fe826de426d413e5a465e3b0e82b86d10c32e
2023-10-24 17:24:30 +01:00
fanquake
799ce4d050
build: bump version to 26.99 2023-10-24 11:13:44 +01:00
fanquake
8cfa22a846
build: move -fstack-reuse=none to CORE_CXXFLAGS
This is not a hardening specific flag, it should be used at all times,
regardless of if hardening is enabled or not. Note that this was
still the case here, but having this exist in the hardening flags is
confusing, and may lead someone to move it inside one of the `use_hardening`
blocks, where it would become unused, with `--disable-hardening`.
2023-10-18 15:20:30 +01:00
fanquake
61a6c3b0e9
build: add -mbranch-protection=bti to aarch64 hardening flags
This is a simpler (less hardening) version of #24123.
Scoped to aarch64 to avoid unused command line option warnings when
building on x86_64.

Related to #19075.
2023-10-10 14:08:27 +01:00
fanquake
b5790c35f7
build: remove dmg dependencies 2023-09-15 13:47:50 +01:00
fanquake
33ae0bd1e4
macdeploy: remove DMG generation from deploy script 2023-09-15 13:47:50 +01:00
Hennadii Stepanov
a128111c29
build: produce a .zip for macOS distribution
Instead of a .dmg.

Co-authored-by: fanquake <fanquake@gmail.com>
2023-09-15 13:47:50 +01:00
MarcoFalke
fabb419a3c
doc: Clarify that -fstack-reuse=all bugs exist on all versions of GCC 2023-09-12 13:41:19 +02:00
fanquake
96f2cf8d2c
build: use -muse-unaligned-vector-move for Windows
We currently work around a longstanding GCC issue with aligned vector
instructions, in our release builds, by patching the behaviour we want
into GCC (see discussion in #24736).

A new option now exists in the binutils assembler,
`-muse-unaligned-vector-move`, which should also achieve the behaviour
we want (at least for our code). This was added in the 2.38 release,
see
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=c8480b58e1968f209b6365af7422678f348222c2.
```bash
x86: Add -muse-unaligned-vector-move to assembler

Unaligned load/store instructions on aligned memory or register are as
fast as aligned load/store instructions on modern Intel processors.  Add
a command-line option, -muse-unaligned-vector-move, to x86 assembler to
encode encode aligned vector load/store instructions as unaligned
vector load/store instructions.
```

Even if we introduce this option into our build system, we'll have to
maintain our GCC patching, as we want all code that ends up in the
binary, to avoid these instructions. However, there may be some value in
adding the option, as it could be an improvement for someone building
(bitcoind.exe) with an unpatched compiler.
2023-08-30 16:34:37 +01:00
MarcoFalke
faf70c1f33
Bump python minimum version to 3.9 2023-08-29 11:54:29 +02:00
fanquake
04f66ce500
Merge bitcoin/bitcoin#28092: ci: document that -Wreturn-type has been fixed upstream (mingw-w64)
08eb5f1b67 ci: document that -Wreturn-type has been fixed upstream (Windows) (fanquake)

Pull request description:

  `noreturn` attributes have been added to the mingw-w64 headers, 1690994f51, meaning that [from 11.0.0 onwards](https://www.mingw-w64.org/changelog/), you'll no-longer see `-Wreturn-type` warnings when using `assert(false)`.

  Add -Wno-return-type to the Windows CI, where is should have been all
  along, and document why it's required. This can be dropped when we are
  using the fixed version of the mingw-w64 headers there.

  Drop the -Werror -Wno-return-type special case from our build system.
  -Wreturn-type is on by default in Clang and GCC.

  The new mingw-w64 header behaviour can be checked on Ubuntu mantic, [which ships with 11.0.0](https://packages.ubuntu.com/mantic/mingw-w64), using:
  ```cpp
  #include <cassert>

  int f(){ assert(false); }

  int main() {
  return 0;
  }
  ```

  On Mantic (with 11.0.0):
  ```bash
  x86_64-w64-mingw32-g++ test.cpp -Wreturn-type
  # nada
  ```

  On Lunar ([with 10.0.0](https://packages.ubuntu.com/lunar/mingw-w64)):
  ```bash
  x86_64-w64-mingw32-g++ test.cpp -Wreturn-type
  test.cpp: In function 'int f()':
  test.cpp:3:25: warning: no return statement in function returning non-void [-Wreturn-type]
      3 | int f(){ assert(false); }
        |                         ^
  ```

ACKs for top commit:
  TheCharlatan:
    ACK 08eb5f1b67

Tree-SHA512: 9cd4310a96abd87bf8ceb37949ad0259fe4adee3367c604f4c4ad521a0cf09bdcc5dd305db19a0f45ce74c85178b0d739e2fca5ad0fc841ac935523a23b28a7f
2023-07-27 11:21:49 +01:00
fanquake
5080c9c25f
build: adapt Windows builds for libsecp256k1 build changes
See https://github.com/bitcoin-core/secp256k1/pull/1367.
2023-07-18 15:26:51 +01:00
fanquake
08eb5f1b67
ci: document that -Wreturn-type has been fixed upstream (Windows)
`noreturn` attributes have been added to the mingw-w64 headers, meaning
that from 11.0.0 onwards, you'll no-longer see `-Wreturn-type` warnings
when using assert(false):
1690994f51.

Add -Wno-return-type to the Windows CI, where is should have been all
along, and document why it's required. This can be dropped when we are
using the fixed version of the mingw-w64 headers there.

Drop the -Werror -Wno-return-type special case from our build system.
-Wreturn-type is on by default in Clang and GCC.
2023-07-18 14:27:30 +01:00
fanquake
c123e1d215
Merge bitcoin/bitcoin#28069: guix: Remove librt usage from release binaries
8f6f0d81ee guix: backport glibc patch to prevent redundant librt link (fanquake)
e14473299c contrib: remove librt from release deps (fanquake)
e64e17830a build: remove check for gettimeofday & librt (fanquake)

Pull request description:

  Our release binaries currently have a runtime dependency on `librt`. However this is redundant, and only the case due to  a bug in glibc. The `clock_*` suit of funcs were absorbed into libc long ago, however an issue with compatibility code meant that librt would still be linked against / used redundantly:
  > But the forwarders were not marked as compatibility symbols.
  > As a result, on older architectures, historic configure checks such as
  > AC_CHECK_LIB(rt, clock_gettime)
  > still cause linking against librt, even though this is completely
  > unnecessary.  It also creates a needless porting hazard because
  > architectures behave differently when it comes to symbol availability.

  This PR drops our configure check for librt (which is redundant, and could be PR'd standalone), and backports [the relevant patch](https://sourceware.org/git/?p=glibc.git;a=commit;h=f289e656ec8221756519a601042bc9fbe1b310fb) into our glibc, so we can drop librt from our runtime dependencies.

  Guix Build:
  ```bash
  67078bddd5dc32801b8c916c3bc12f1404da572312f0158a89b9603c1f753969  guix-build-8f6f0d81ee3a/output/aarch64-linux-gnu/SHA256SUMS.part
  794dd00009860fd67d7e51463ee1c5ea9677dfff1c739dd0b91cf73136deb655  guix-build-8f6f0d81ee3a/output/aarch64-linux-gnu/bitcoin-8f6f0d81ee3a-aarch64-linux-gnu-debug.tar.gz
  eb9cf3f472ffbc37446fe4d80fe81dc62cf1c28c4d57dd8a7b7176e65487aeeb  guix-build-8f6f0d81ee3a/output/aarch64-linux-gnu/bitcoin-8f6f0d81ee3a-aarch64-linux-gnu.tar.gz
  e775a9e9b23be44b5c7e7121e88124746836d5bdeda1cd9ba693080d9f3a52a8  guix-build-8f6f0d81ee3a/output/arm-linux-gnueabihf/SHA256SUMS.part
  8289f0770333d800e414747026c0fb105d95f389f6c8d901c1041cc65272fb02  guix-build-8f6f0d81ee3a/output/arm-linux-gnueabihf/bitcoin-8f6f0d81ee3a-arm-linux-gnueabihf-debug.tar.gz
  e40256c5fb1b9a137845a50fc051f92c3e4cc013b0875a71c62af32f7024af9d  guix-build-8f6f0d81ee3a/output/arm-linux-gnueabihf/bitcoin-8f6f0d81ee3a-arm-linux-gnueabihf.tar.gz
  c8db222e54e78b27a8a5d3a373a9bbafa51ed29a1fda5c19e8b0eac819b002f2  guix-build-8f6f0d81ee3a/output/arm64-apple-darwin/SHA256SUMS.part
  52d4063af628467605fcf533205705b38237a0cc60cafbec224ca8cf4a644738  guix-build-8f6f0d81ee3a/output/arm64-apple-darwin/bitcoin-8f6f0d81ee3a-arm64-apple-darwin-unsigned.dmg
  103d80180a9f38e7c903d0b6581e4bb5130c640fac1fd5019eee7fa90e303c1d  guix-build-8f6f0d81ee3a/output/arm64-apple-darwin/bitcoin-8f6f0d81ee3a-arm64-apple-darwin-unsigned.tar.gz
  a8f0a89c4d4b1d05e6ea968dde3b13368999dfc1c3ea765e81fd3c4db46197b3  guix-build-8f6f0d81ee3a/output/arm64-apple-darwin/bitcoin-8f6f0d81ee3a-arm64-apple-darwin.tar.gz
  726d2671bbed2355c083b8516faa5d8e0422fab6cb38a135f68ee011f9e09af5  guix-build-8f6f0d81ee3a/output/dist-archive/bitcoin-8f6f0d81ee3a.tar.gz
  955fff1c9998bb04bcf1afe9b467590960206e9c512b3446ecdd701e251bb419  guix-build-8f6f0d81ee3a/output/powerpc64-linux-gnu/SHA256SUMS.part
  e95cdeda727d641c002755c4a3e3b69049a35f1bff4867ac14320585d65595c4  guix-build-8f6f0d81ee3a/output/powerpc64-linux-gnu/bitcoin-8f6f0d81ee3a-powerpc64-linux-gnu-debug.tar.gz
  21bda341cd8af44bc731cf7e3637322a92032e7a956acdde25ea6e59989c67b9  guix-build-8f6f0d81ee3a/output/powerpc64-linux-gnu/bitcoin-8f6f0d81ee3a-powerpc64-linux-gnu.tar.gz
  6f90c38998696f61c373c3546bcc03e6b5ecfbe3b9fec9a7c75d601b3175b698  guix-build-8f6f0d81ee3a/output/powerpc64le-linux-gnu/SHA256SUMS.part
  7166c2354b8777464bf8c5c3d7e4a171d00b5e0617635fa8b12c4d47ad619e84  guix-build-8f6f0d81ee3a/output/powerpc64le-linux-gnu/bitcoin-8f6f0d81ee3a-powerpc64le-linux-gnu-debug.tar.gz
  8c879a3ae9fefc1071d0b6ea3b0cf858295386860b10079b472b526abfdcd2b5  guix-build-8f6f0d81ee3a/output/powerpc64le-linux-gnu/bitcoin-8f6f0d81ee3a-powerpc64le-linux-gnu.tar.gz
  7dc7153d3c180308d873cb20320e8a6221cec81d8018da85683870168380eef7  guix-build-8f6f0d81ee3a/output/riscv64-linux-gnu/SHA256SUMS.part
  c37b79e33b9a318d3acee9114cdf057ee518abaa09736bd63e015d924d2c3ffb  guix-build-8f6f0d81ee3a/output/riscv64-linux-gnu/bitcoin-8f6f0d81ee3a-riscv64-linux-gnu-debug.tar.gz
  d25abfb09d12e74bffd7f42e95eba211317acefa4718dbea27055d905f5b6999  guix-build-8f6f0d81ee3a/output/riscv64-linux-gnu/bitcoin-8f6f0d81ee3a-riscv64-linux-gnu.tar.gz
  5ffc5c97012d8ae85cb56e635760029b774ea4f57a64e41cd4bdade4ed93e619  guix-build-8f6f0d81ee3a/output/x86_64-apple-darwin/SHA256SUMS.part
  ecf96275016e82af2c1a4842578feac286de9db8b7f5e4266cf877cb29da1da8  guix-build-8f6f0d81ee3a/output/x86_64-apple-darwin/bitcoin-8f6f0d81ee3a-x86_64-apple-darwin-unsigned.dmg
  50bee378ed88471dc326730564ca24cea2625ce1477b82881cda572f0a8913cc  guix-build-8f6f0d81ee3a/output/x86_64-apple-darwin/bitcoin-8f6f0d81ee3a-x86_64-apple-darwin-unsigned.tar.gz
  f4215a018f18e3639c50f10909af3ceff6982abf8b292fd88fa5d690b06d704a  guix-build-8f6f0d81ee3a/output/x86_64-apple-darwin/bitcoin-8f6f0d81ee3a-x86_64-apple-darwin.tar.gz
  ee5278c8afc7ead80853aff69c1bbd624ef078428076f0e92b0ad35931036b3f  guix-build-8f6f0d81ee3a/output/x86_64-linux-gnu/SHA256SUMS.part
  daed3889107ffe8b3ec2c59abff93d4b92a4dff382457485d29489a0e9421965  guix-build-8f6f0d81ee3a/output/x86_64-linux-gnu/bitcoin-8f6f0d81ee3a-x86_64-linux-gnu-debug.tar.gz
  f1acd6b1d296f2de5ff838fe3fb82035f2774485b06678ecdd461e631ebbe092  guix-build-8f6f0d81ee3a/output/x86_64-linux-gnu/bitcoin-8f6f0d81ee3a-x86_64-linux-gnu.tar.gz
  3e9f9f92e4de995c9029f17962c33e317f7000df9c1afa2a447b65ac98c27f4b  guix-build-8f6f0d81ee3a/output/x86_64-w64-mingw32/SHA256SUMS.part
  4b50a73917450770c793bfc787a6785c7389ce02bd25368db9a1445da07bb7b1  guix-build-8f6f0d81ee3a/output/x86_64-w64-mingw32/bitcoin-8f6f0d81ee3a-win64-debug.zip
  832ddec19b8c5698cc3497f93fc59f0f72b0d7a3f313d46c2c1c52b5badf19fd  guix-build-8f6f0d81ee3a/output/x86_64-w64-mingw32/bitcoin-8f6f0d81ee3a-win64-setup-unsigned.exe
  d9bc2dabd0cff8e9ee6ccb309bee34a6faa1298771c0cc9bff8f948d34ec047e  guix-build-8f6f0d81ee3a/output/x86_64-w64-mingw32/bitcoin-8f6f0d81ee3a-win64-unsigned.tar.gz
  55cc5607d3fdf113fde463d87c5dd895c305ba0313e56bba1b0875a8a78c65a7  guix-build-8f6f0d81ee3a/output/x86_64-w64-mingw32/bitcoin-8f6f0d81ee3a-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 8f6f0d81ee

Tree-SHA512: f6fd4b9ed37ad93c7a5df4ca17f1ae5b8705f5dc4a377c8e01c6376b1818980534a233a08f2a20c4ff851a25f660ebb89c7416b93f6f039747194661b00c75ed
2023-07-17 13:43:45 +01:00
fanquake
05ef059a33
doc: update windows -fstack-clash-protection doc
Now that changes have been made in GCC, to fix the build failures.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458.
2023-07-16 15:19:44 +01:00
fanquake
e64e17830a
build: remove check for gettimeofday & librt 2023-07-12 09:09:14 +01:00
Andrew Chow
caff95a023
Merge bitcoin/bitcoin#27896: Remove the syscall sandbox
32e2ffc393 Remove the syscall sandbox (fanquake)

Pull request description:

  After initially being merged in #20487, it's no-longer clear that an internal syscall sandboxing mechanism is something that Bitcoin Core should have/maintain, especially when compared to better maintained/supported alterantives, i.e [firejail](https://github.com/netblue30/firejail).

  There is more related discussion in #24771.

  Note that given where it's used, the sandbox also gets dragged into the kernel.

  If it's removed, this should not require any sort of deprecation, as this was only ever an opt-in, experimental feature.

  Closes #24771.

ACKs for top commit:
  davidgumberg:
     crACK 32e2ffc393
  achow101:
    ACK 32e2ffc393
  dergoegge:
    ACK 32e2ffc393

Tree-SHA512: 8cf71c5623bb642cb515531d4a2545d806e503b9d57bfc15a996597632b06103d60d985fd7f843a3c1da6528bc38d0298d6b8bcf0be6f851795a8040d71faf16
2023-06-27 18:19:21 -04:00
Cory Fields
9bc357e205 build: explicitly opt-in to new fixup_chains functionality for darwin
This replaces (but does not collide with) the previous bind_on_load. There
is technically no need to opt-in to this functionality as long as >= MacOS 11.0
is being targetted, but it will be helpful to see in the logs.
2023-06-22 15:28:47 +00:00
fanquake
32e2ffc393
Remove the syscall sandbox
After initially being merged in #20487, it's no-longer clear that an
internal syscall sandboxing mechanism is something that Bitcoin Core
should have/maintain, especially when compared to better
maintained/supported alterantives, i.e firejail.

Note that given where it's used, the sandbox also gets dragged into the
kernel.

There is some related discussion in #24771.

This should not require any sort of deprecation, as this was only ever
an opt-in, experimental feature.

Closes #24771.
2023-06-16 10:38:19 +01:00
fanquake
3b2acfcfec
build: suppress external warnings by default 2023-06-15 14:12:10 +01:00
willcl-ark
59c8944749
build: disable boost multi index safe mode
Disable boost multi index safe mode by default when configuring with
--enable-debug.

This option can cause transactions to take a long time to be accepted
into the mempool under certain conditions; iterator destruction takes
O(n) time vs O(1) as they are stored in a singly linked list. See
27586 for more information.

Re-enable it on the CI builds which previously had it enabled.

Re-enable it on the msan fuzz target so that we have fuzz tasks testing
with it enabeld and disabled in this repo.
2023-05-23 13:44:07 +01:00
fanquake
09351f51d2
Merge bitcoin/bitcoin#27699: random: drop syscall wrapper usage for getrandom()
5228223e1f ci: remove MSAN getrandom syscall workaround (fanquake)
d5e06919db random: switch to using getrandom() directly (fanquake)
c2ba3f5b0c random: add [[maybe_unused]] to GetDevURandom (fanquake)
c13c97dbf8 random: getentropy on macOS does not need unistd.h (fanquake)

Pull request description:

  This requires a linux kernel of `3.17`+, which seems entirely
  reasonable. `3.17` went EOL in 2015, and the last supported `3.x` kernel
  (`3.16`) went EOL > 4 years ago, in 2020. For reference, the current
  oldest maintained kernel is `4.14` (released 2017, going EOL Jan 2024).

  Support for `getrandom()` (and `getentropy()`) was added to
  glibc `2.25` https://sourceware.org/legacy-ml/libc-alpha/2017-02/msg00079.html:
  > * The getentropy and getrandom functions, and the <sys/random.h> header
    file have been added.

  and we already require `2.27` or later.

  All that being said, I don't think you would encounter a current day (+~6 months from now)
  system, running with kernel headers older than 3.17 (released 2014) but also having a
  glibc of 2.27+ (released 2018)?

  Removing this (our only) use of `syscall()` also means we can drop a workaround in our MSAN jobs.
  If this is merged, I'll drop the [same workaround in oss-fuzz](25946a5448/projects/bitcoin-core/build.sh (L49-L56)).

ACKs for top commit:
  josibake:
    ACK 5228223e1f
  hebasto:
    ACK 5228223e1f, I've tested build system changes on Ubuntu 22.04 and macOS Monterey 12.6.6 (x86_64).

Tree-SHA512: cc978e08510c461b875ca8c08ae176b4519fa1108f0efd74dcb7474518945357e0184e54423282c9a496de195e4ddc3e221ee78623bd63e24c50cc86acdf32e2
2023-05-22 11:34:58 +01:00
fanquake
a106a86c46
Merge bitcoin/bitcoin#27696: build: Do not define ENABLE_ZMQ when ZMQ is not available
fa5831bd6f build: Do not define `ENABLE_ZMQ` when ZMQ is not available (Hennadii Stepanov)

Pull request description:

  A new behavior is consistent with the other optional dependencies.

  The source code contains `#if ENABLE_ZMQ` lines only:
  ```
  $ git grep ENABLE_ZMQ -- src/*.cpp
  src/init.cpp:#if ENABLE_ZMQ
  src/init.cpp:#if ENABLE_ZMQ
  src/init.cpp:#if ENABLE_ZMQ
  src/init.cpp:#if ENABLE_ZMQ
  src/init.cpp:#if ENABLE_ZMQ
  ```

  Change in description line -- "Define to 1..." -->  "Define this symbol.." -- is motivated by the fact that the actual value of the defined `ENABLE_ZMQ` macro does not matter at all.

  Related to:
  - https://github.com/bitcoin/bitcoin/issues/16419
  - https://github.com/bitcoin/bitcoin/pull/25302

ACKs for top commit:
  TheCharlatan:
    ACK fa5831bd6f
  jarolrod:
    ACK fa5831bd6f

Tree-SHA512: 5e72ff0d34c4b33205338daea0aae8d7aa0e48fd633e21af01af32b7ddb0532ef68dd3dd74deb2c1d2599691929617e8c09676bcbaaf7d669b88816f866f1db2
2023-05-22 10:00:15 +01:00
fanquake
d5e06919db
random: switch to using getrandom() directly
This requires a linux kernel of 3.17.0+, which seems entirely
reasonable. 3.17 went EOL in 2015, and the last supported 3.x kernel
(3.16) went EOL > 4 years ago, in 2020. For reference, the current
oldest maintained kernel is 4.14 (released 2017, EOL Jan 2024).

Support for `getrandom()` (and `getentropy()`) was added to
glibc 2.25, https://sourceware.org/legacy-ml/libc-alpha/2017-02/msg00079.html,
and we already require 2.27+.

All that being said, I don't think you would encounter a current day
system, running with kernel headers older than 3.17 (released 2014) but
also having a glibc of 2.27+ (released 2018).
2023-05-20 17:20:01 +01:00
fanquake
c13c97dbf8
random: getentropy on macOS does not need unistd.h
Remove it. Make this change, so in a future commit, we can
combine #ifdefs, and avoid duplicate <sys/random.h> includes once we
switch to using getrandom directly.

Also remove the comment about macOS 10.12. We already require macOS >
10.15, so it is redundant.
2023-05-20 17:09:47 +01:00
fanquake
2f1403ae53
Merge bitcoin/bitcoin#27458: build: Detect USDT the same way how it is used in the code
b53cab0083 build: Detect USDT the same way how it is used in the code (Hennadii Stepanov)

Pull request description:

  In the code we do not use string literals.

  Also a check for `DTRACE_PROBE7` macro has been added as not all systems define`DTRACE_PROBE{6,7,8,9,10,11,12}` macros (e.g., FreeBSD).

ACKs for top commit:
  0xB10C:
    ACK b53cab0083

Tree-SHA512: 74f49424d57bf1929f2b09edba1449cef5a1a2448161952da35302343f3003d5bedeab1417e166b656c5f629303e2de888550b1219e886a1b991b12b9c880794
2023-05-19 10:05:15 +01:00
Hennadii Stepanov
b53cab0083
build: Detect USDT the same way how it is used in the code 2023-05-18 14:59:14 +01:00
MarcoFalke
fa953f15bf
build: Bump minimum supported GCC to g++-9
Also, update the code to use constexpr, which does not work in g++-8.

Also, drop the no longer needed build-aux/m4/l_filesystem.m4.
2023-05-18 12:24:40 +02:00
Hennadii Stepanov
fa5831bd6f
build: Do not define ENABLE_ZMQ when ZMQ is not available
A new behavior is consistent with the other optional dependencies.

The source code contains `#if ENABLE_ZMQ` lines only.
2023-05-18 10:48:48 +01:00
Hennadii Stepanov
3ece0ebf62
build, doc: Adjust comment after PR27254 2023-05-14 16:29:23 +01:00
Cory Fields
67aacc73ea build: cleanup comments after adding yet another libtool hack 2023-05-12 19:16:24 +00:00
Cory Fields
283d95516a build: Fix shared lib linking for darwin with lld
libtool gets a false-positive from the warning produced by lld -single_module
because it is already the default and unneeded.

Skip the check unconditionally for Darwin linkers.
2023-05-12 19:13:57 +00:00
MarcoFalke
88881cf7ac
Bump python minimum version to 3.8
Also, switch ci_native_qt5 to g++-9 (from g++-8) to work around bugs.
This should be fine, because the i686_centos task still checks for g++-8
compatibility.

See
https://github.com/bitcoin/bitcoin/pull/27483#issuecomment-1513477050
for the list of bugs.
2023-04-21 10:18:19 +02:00
Andrew Chow
088a93dce8 build: Bump to 25.99 2023-04-20 13:58:00 -04:00
Cory Fields
9fbc5fcd28 build: remove ancient unused define
The generic define was removed in upstream miniupnpc in 2014:
f6774e3316

Noticed while reviewing hebasto's new CMake buildsystem:
https://github.com/hebasto/bitcoin/pull/12#discussion_r1156267350
2023-04-04 17:13:40 +00:00
Andrew Chow
23e2bfcbc4
Merge bitcoin/bitcoin#25696: build: Re-enable external signer on Windows
1a0d8e178c build: Re-enable external signer on Windows (Hennadii Stepanov)
989451d068 configure: Detect compatibility of Boost.Process rather than hardcode non-Windows (Luke Dashjr)

Pull request description:

  As https://github.com/boostorg/process/issues/207 has been resolved, it is possible now to re-enable external signer on Windows when cross-compiling.

  Guix build hashes:
  ```
  78f69ea7e0dbc8338981a92c0352220ccd7c2272d8cbff6a3b082a1412a935c5  guix-build-1a0d8e178c7b/output/aarch64-linux-gnu/SHA256SUMS.part
  ee17456ec818ddf5a175182508966e622573ccb518807cca43a40fa1dceda092  guix-build-1a0d8e178c7b/output/aarch64-linux-gnu/bitcoin-1a0d8e178c7b-aarch64-linux-gnu-debug.tar.gz
  5080551bde379c746cc67b10429aef33b9f9e49d2d4e21ee1c3bfd9c1c845d46  guix-build-1a0d8e178c7b/output/aarch64-linux-gnu/bitcoin-1a0d8e178c7b-aarch64-linux-gnu.tar.gz
  dfab220ce76a40bf7dcf07aab352a616a91b516503639455fe7e1b137bad3e85  guix-build-1a0d8e178c7b/output/arm-linux-gnueabihf/SHA256SUMS.part
  516ceb822571a8bd88fe107dca434ef596b1e4328ccbda1d51e1d482d3050396  guix-build-1a0d8e178c7b/output/arm-linux-gnueabihf/bitcoin-1a0d8e178c7b-arm-linux-gnueabihf-debug.tar.gz
  21325380638f817107c203b9a1aedb808d1a4a2b4041493753ca4cbf19aa4f2c  guix-build-1a0d8e178c7b/output/arm-linux-gnueabihf/bitcoin-1a0d8e178c7b-arm-linux-gnueabihf.tar.gz
  cf48ed78fcfceaeb3610ccf22326d735a129dcbf9d50b557b3de359169aefdfd  guix-build-1a0d8e178c7b/output/arm64-apple-darwin/SHA256SUMS.part
  d4d51e136148bac6a20bb3adb402c499967647736acb420bfdeb71603aba57da  guix-build-1a0d8e178c7b/output/arm64-apple-darwin/bitcoin-1a0d8e178c7b-arm64-apple-darwin-unsigned.dmg
  95bb62d24f860e08a392ddb74d5860ccf27e8baa183e6749af877d26a3bd6b0b  guix-build-1a0d8e178c7b/output/arm64-apple-darwin/bitcoin-1a0d8e178c7b-arm64-apple-darwin-unsigned.tar.gz
  68da4c92f37bb802df37141af194f47c16da1d84f77a0fbb1016013ae0338502  guix-build-1a0d8e178c7b/output/arm64-apple-darwin/bitcoin-1a0d8e178c7b-arm64-apple-darwin.tar.gz
  6704e38c2d3f11321403797598d05f062648fec6f2d76900ba250dab481e29da  guix-build-1a0d8e178c7b/output/dist-archive/bitcoin-1a0d8e178c7b.tar.gz
  64b936bc90d1e01fe8f276511edc9bb945dcebe70332aa37d3a786348443b8e7  guix-build-1a0d8e178c7b/output/powerpc64-linux-gnu/SHA256SUMS.part
  3d03532e54b6e42498ea240c86b8567e94fd462f56087b869c3d6f09e2dde878  guix-build-1a0d8e178c7b/output/powerpc64-linux-gnu/bitcoin-1a0d8e178c7b-powerpc64-linux-gnu-debug.tar.gz
  c5843d79a58b0a864fe723458dab4eee54ad11f4b1f7960975b086eeedc0d541  guix-build-1a0d8e178c7b/output/powerpc64-linux-gnu/bitcoin-1a0d8e178c7b-powerpc64-linux-gnu.tar.gz
  f861ff519bd5e3d6d5ce1646ee0a06bcef1288ddb804a4a600e4dbfe5d5be521  guix-build-1a0d8e178c7b/output/powerpc64le-linux-gnu/SHA256SUMS.part
  5f477da21980dbcf9696081903dc1ba8a3f79ce3579641d208e69a6f598c8eb9  guix-build-1a0d8e178c7b/output/powerpc64le-linux-gnu/bitcoin-1a0d8e178c7b-powerpc64le-linux-gnu-debug.tar.gz
  b3757b11c614136934158acea5139e8abd0c5c9cdfda72ae44db436f21716b33  guix-build-1a0d8e178c7b/output/powerpc64le-linux-gnu/bitcoin-1a0d8e178c7b-powerpc64le-linux-gnu.tar.gz
  1c21bdb17fe3436e685e88c62423e630fe2b3c41dd00025a99fd80d97817ac2f  guix-build-1a0d8e178c7b/output/riscv64-linux-gnu/SHA256SUMS.part
  f36ae98473f086ae8f0dc66223b5ec407d57dc4d8d45ae284401520ff5c0b273  guix-build-1a0d8e178c7b/output/riscv64-linux-gnu/bitcoin-1a0d8e178c7b-riscv64-linux-gnu-debug.tar.gz
  1603e4d0e869eb47a1dc2d26b67772d0016d90f7ba5e50d2009365cc02cb8169  guix-build-1a0d8e178c7b/output/riscv64-linux-gnu/bitcoin-1a0d8e178c7b-riscv64-linux-gnu.tar.gz
  f86ef652102f022827b70477bffa0a44008c6300cf62ca7b3595146cf2ed91ba  guix-build-1a0d8e178c7b/output/x86_64-apple-darwin/SHA256SUMS.part
  f84d435d8e4709bf29bc7ac7ed8dc6b8af4077cef05e520b468b2896ce10876a  guix-build-1a0d8e178c7b/output/x86_64-apple-darwin/bitcoin-1a0d8e178c7b-x86_64-apple-darwin-unsigned.dmg
  af2aab969b7ed7aeea0e02adbcc9e3b438086bf76b6bfc36146c53e05a27bd57  guix-build-1a0d8e178c7b/output/x86_64-apple-darwin/bitcoin-1a0d8e178c7b-x86_64-apple-darwin-unsigned.tar.gz
  32a5109ba28ab74ff66238e6a8f8a04e455ebce382a3be287df92a227818fe72  guix-build-1a0d8e178c7b/output/x86_64-apple-darwin/bitcoin-1a0d8e178c7b-x86_64-apple-darwin.tar.gz
  377462e9a96f4aba72c915dd5df5159a4301a1fa8ed0ee48faa6c71573de80c3  guix-build-1a0d8e178c7b/output/x86_64-linux-gnu/SHA256SUMS.part
  a3bf62e828d2350a483b2d16205014f66e8884597b0b72e178042a958c548336  guix-build-1a0d8e178c7b/output/x86_64-linux-gnu/bitcoin-1a0d8e178c7b-x86_64-linux-gnu-debug.tar.gz
  66cda980188ea1941a7d66c8b03c447580af33db55abe3bbe3581823ae0534a3  guix-build-1a0d8e178c7b/output/x86_64-linux-gnu/bitcoin-1a0d8e178c7b-x86_64-linux-gnu.tar.gz
  2117f0dd9baeb4d585f841592e94c088f4487bf2008b8f281d0c3ceee92ff6cc  guix-build-1a0d8e178c7b/output/x86_64-w64-mingw32/SHA256SUMS.part
  d40d5dec3287f467c42232c05d82f7fb538cda34bd2e63ff7e1876f471c3a790  guix-build-1a0d8e178c7b/output/x86_64-w64-mingw32/bitcoin-1a0d8e178c7b-win64-debug.zip
  92dcc92765fbc07b1cc8258bfa69280541e1b4553cc41fed18672c2c6931d5c0  guix-build-1a0d8e178c7b/output/x86_64-w64-mingw32/bitcoin-1a0d8e178c7b-win64-setup-unsigned.exe
  a6dd9b4d29f21d3a18cf64556cb03446ef17bf801eb6ac257b65d27cbd95080f  guix-build-1a0d8e178c7b/output/x86_64-w64-mingw32/bitcoin-1a0d8e178c7b-win64-unsigned.tar.gz
  a4022e595d955198f73530473ef8e90a708746089ee2dd27de794176873330c1  guix-build-1a0d8e178c7b/output/x86_64-w64-mingw32/bitcoin-1a0d8e178c7b-win64.zip
  ```

ACKs for top commit:
  Sjors:
    tACK 1a0d8e178c
  achow101:
    ACK 1a0d8e178c

Tree-SHA512: db7319259b1e1571cfab4bb3b99ae10a2f744e62757cae5059fd6f4dd6d5586eb09feb63a0c4bb07f7128b283f1dc281ed435224bc8e40da577fd4f04cde489a
2023-03-08 21:01:53 -05:00
Cory Fields
9c253d2398 build: don't define DLL_EXPORT for windows
This fixes libbitcoinkernel dll linking.
2023-02-22 19:04:21 +00:00
fanquake
4faa4e37a6
build: use _FORTIFY_SOURCE=3
glibc 2.33 introduced a new fortification level, _FORTIFY_SOURCE=3.
Which improves the coverage of cases where _FORTIFY_SOURCE can use _chk
functions. For example, using GCC 13 and glibc 2.36 (Fedora Rawhide),
compiling master:
```bash
nm -C src/bitcoind | grep _chk
                 U __fprintf_chk@GLIBC_2.17
                 U __memcpy_chk@GLIBC_2.17
                 U __snprintf_chk@GLIBC_2.17
                 U __sprintf_chk@GLIBC_2.17
                 U __stack_chk_fail@GLIBC_2.17
                 U __stack_chk_guard@GLIBC_2.17
                 U __vsnprintf_chk@GLIBC_2.17

objdump -d src/bitcoind | grep "_chk@plt" | wc -l
33
```

vs this branch:
```bash
nm -C src/bitcoind | grep _chk
                 U __fprintf_chk@GLIBC_2.17
                 U __memcpy_chk@GLIBC_2.17
                 U __memset_chk@GLIBC_2.17
                 U __snprintf_chk@GLIBC_2.17
                 U __sprintf_chk@GLIBC_2.17
                 U __stack_chk_fail@GLIBC_2.17
                 U __stack_chk_guard@GLIBC_2.17
                 U __vsnprintf_chk@GLIBC_2.17

objdump -d src/bitcoind | grep "_chk@plt" | wc -l
61
```

Usage of level 3 requires LLVM/Clang 9+, or GCC 12+. Older
compilers/glibc will still use _FORTIFY_SOURCE=2. For example, in the
glibc we currently use for Linux release builds (2.24), FORTIFY_LEVEL is
determined using the following:
```c
```
so any value > 1 will turn on _FORTIFY_SOURCE=2.

https://sourceware.org/pipermail/libc-alpha/2021-February/122207.html
https://developers.redhat.com/blog/2021/04/16/broadening-compiler-checks-for-buffer-overflows-in-_fortify_source
2023-02-17 10:49:17 +00:00
fanquake
1ad0711d7c
Merge bitcoin/bitcoin#27016: mapport: require miniupnpc API version 17 or later
b3b673f704 mapport: require miniupnpc API version 17 or later (fanquake)

Pull request description:

  Version 17 is currently the latest version, see: https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/apiversions.txt, and has been available since the release of 2.1. 2.1 or newer is readily available across all distros, see https://repology.org/project/miniupnpc/versions, so drop support for the older API versions.

  Split out of #22644.

ACKs for top commit:
  hebasto:
    ACK b3b673f704, tested on Ubuntu 20.04 w/ and w/o [`libminiupnpc-dev`](https://packages.ubuntu.com/focal/libminiupnpc-dev) package.
  TheCharlatan:
    ACK b3b673f704

Tree-SHA512: f53b36b82462c4ea83d9b83413dca8097885d1620f7ca0a53a79d6b3d3cf37c7773828b23f4278ccfcc3b14fcb0faffa35f60191b519b04570f3d2783d0303e2
2023-02-13 16:25:09 +00:00
fanquake
b03a98291b
build: set boost cppflags with --enable-fuzz
Even though all other targets are disabled, we still need Boost CPPFLAGS
(use_boost) to compile. This currently works everywhere, except on arm
macOS (where the include path is pretty non-standard), because
generally, the Boost include path is generic, i.e `/usr/include`.
2023-02-08 16:10:34 +00:00
MarcoFalke
fa83005a26
doc: Document affected gcc versions for -fstack-reuse=none workaround 2023-02-08 13:06:11 +01:00
fanquake
b3b673f704
mapport: require miniupnpc API version 17 or later
Version 17 is currently the latest version, and has been available since
the release of 2.1.
See: https://github.com/miniupnp/miniupnp/blob/master/miniupnpc/apiversions.txt.
2023-02-01 15:57:26 +00:00
fanquake
2b211b41e3
Merge bitcoin/bitcoin#26952: build: Avoid BOOST_NO_CXX98_FUNCTION_BASE macro redefinition
d4c59da8d6 build: Avoid `BOOST_NO_CXX98_FUNCTION_BASE` macro redefinition (Hennadii Stepanov)

Pull request description:

  With GCC 12 and Boost 1.81 (from depends) having multiple warnings:
  ```
  In file included from /home/hebasto/bitcoin/depends/x86_64-pc-linux-gnu/include/boost/config.hpp:48:
  /home/hebasto/bitcoin/depends/x86_64-pc-linux-gnu/include/boost/config/stdlib/libstdcpp3.hpp:397:9: warning: 'BOOST_NO_CXX98_FUNCTION_BASE' macro redefined [-Wmacro-redefined]
  #define BOOST_NO_CXX98_FUNCTION_BASE
          ^
  <command line>:8:9: note: previous definition is here
  #define BOOST_NO_CXX98_FUNCTION_BASE 1
          ^
  1 warning generated.
  ```

  This PR fixes those warnings.

  Defining of the `BOOST_NO_CXX98_FUNCTION_BASE` macro was introduced in https://github.com/bitcoin/bitcoin/pull/25436, but since https://github.com/boostorg/config/pull/430, it is required to check it before adding.

ACKs for top commit:
  fanquake:
    ACK d4c59da8d6 - it works now.

Tree-SHA512: 53b9ddcf8dad729638ed41251e30c80f2d7d1ae3ffe47466865834f1f10184fe0881abeb339b3e46c270c3eb11fb63d19ab12cc9461bf5c2be12b4763c1b1c34
2023-01-31 14:58:52 +00:00
fanquake
79e18ebc81
Merge bitcoin/bitcoin#26896: build: Remove port-forwarding runtime setting options from configure
d51f0fa4b7 doc: add release notes for 26896 (fanquake)
2b248798d9 build: remove --enable-upnp-default from configure (fanquake)
02f5a5e7b5 build: remove --enable-natpmp-default from configure (fanquake)
25a0e8ba0b Remove configure-time setting of DEFAULT_UPNP (fanquake)
06562e5fa7 Remove configure-time setting of DEFAULT_NATPMP (fanquake)

Pull request description:

  This PR removes the `--enable-upnp-default` and `--enable-natpmp-default` options from configure.

  It's odd to me that we maintain configure-time options for setting the default port-forwarding runtime state (but no other similar options), and I'm not sure what use-case it satisfies, that can't be achieved by multiple other means. I also doubt that we'll ever restart using these in release builds, or turning on any of this by default.

  I think the only scenario these options would be used is when you want to compile your own binaries (we don't use them in Guix), with port-forwarding on by default, but otherwise can't or don't want to use a `.conf` file, can't or don't want to pass command line options at runtime, and also don't want to modify the source code?

ACKs for top commit:
  hebasto:
    ACK d51f0fa4b7, rebased and comments have been addressed since my recent [review](https://github.com/bitcoin/bitcoin/pull/26896#pullrequestreview-1273910740).
  TheCharlatan:
    ACK d51f0fa4b7

Tree-SHA512: 481decd8bddd8b03b7319591e3acf189f7b6b96c9a9a8c5bc1a3f8ec00d0b8f9b52d2f5c28a298a2ec947cfe9611cfd184e393ccb2e4e21bfce86ca7d4de60d3
2023-01-30 11:18:07 +00:00
Hennadii Stepanov
d4c59da8d6
build: Avoid BOOST_NO_CXX98_FUNCTION_BASE macro redefinition 2023-01-28 17:07:52 +00:00
fanquake
114c5eca77
Merge bitcoin/bitcoin#25465: build: remove boost library detection
db648e8ccc build: remove unneeded var exporting (fanquake)
14afc71a61 build: remove Boost lib detection from ax_boost_base (fanquake)

Pull request description:

  We no longer link against any Boost libraries, so don't need to detect them, or set any Boost related LDFLAGS. Removing this from the macro also allows cleaning up some code in our configure.

  Guix Build:
  ```bash
  e1ca070d085115767415121f3be8d8fa29547c9df633f9782b168a00753e995a  guix-build-db648e8ccc69/output/aarch64-linux-gnu/SHA256SUMS.part
  fb4d229a71d64aef9de4a0301fad3d9ee5937025807a0e101f4cc0e20cf942b2  guix-build-db648e8ccc69/output/aarch64-linux-gnu/bitcoin-db648e8ccc69-aarch64-linux-gnu-debug.tar.gz
  5241bb543617df5e64584741b402117a3b9e7015a423507fd6c529ad397b13a5  guix-build-db648e8ccc69/output/aarch64-linux-gnu/bitcoin-db648e8ccc69-aarch64-linux-gnu.tar.gz
  eb4ba0914e9a38b3804c062ffd47f4d49dc996ea249c5cdbf64a349f73f59555  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/SHA256SUMS.part
  497d1c0d03d52cc6469acf4c61f224e7567c2601b64df3fe5888374e3416d868  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/bitcoin-db648e8ccc69-arm-linux-gnueabihf-debug.tar.gz
  86daab76f41581b752a5a786c5be1b094c14b25cdc8f4090f323b914118884ff  guix-build-db648e8ccc69/output/arm-linux-gnueabihf/bitcoin-db648e8ccc69-arm-linux-gnueabihf.tar.gz
  e8e2c58948a29b0286d17d7dfb89c81234ab28b98f44c2e1d70034da5ce9b8fc  guix-build-db648e8ccc69/output/arm64-apple-darwin/SHA256SUMS.part
  d8f0e791cce42db0741afbb7ec23e251a40ec30f8e1e7fef0d1afc364ce32e9b  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin-unsigned.dmg
  ee85b5b7942dc3361a3b05a395e271d54215f76fb67fc3c30144b089da374cd7  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin-unsigned.tar.gz
  72efbe40e3d033165871a8e8b4719c73a085ffc17a3198bf1191e5d22dec8c3a  guix-build-db648e8ccc69/output/arm64-apple-darwin/bitcoin-db648e8ccc69-arm64-apple-darwin.tar.gz
  0d86d3a303669235b91b4edbd6a5248dff65e31af3f3830cc8bdc116a2637e64  guix-build-db648e8ccc69/output/dist-archive/bitcoin-db648e8ccc69.tar.gz
  0f2371e331d97df50c65714ada6918565d8698637a78c7c97ba254dd5b3cc4b3  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/SHA256SUMS.part
  1447777f7adababc6fddad3349ac435744abef35cd30b673c62621718441ca01  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/bitcoin-db648e8ccc69-powerpc64-linux-gnu-debug.tar.gz
  3bf1e90df4d7fab18159ffd039dd1fa7e5251b0bdca020afd851fb7cd189cfd2  guix-build-db648e8ccc69/output/powerpc64-linux-gnu/bitcoin-db648e8ccc69-powerpc64-linux-gnu.tar.gz
  67ebc32843eb83a08468496c24750ab56bfdb259eb9004732be13427da5dbbc1  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/SHA256SUMS.part
  0da5fad78ab854f62db57a2f44b6ffecbf2b3e9de34b81681c66e28100a209ae  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/bitcoin-db648e8ccc69-powerpc64le-linux-gnu-debug.tar.gz
  e96a41287040d13da4738dde43dd7283356b8af10b535b15b212da702aa7f0af  guix-build-db648e8ccc69/output/powerpc64le-linux-gnu/bitcoin-db648e8ccc69-powerpc64le-linux-gnu.tar.gz
  b54a48e03e76672008445a174078e92a149dd9e4ce0c896b013162a6221b3abe  guix-build-db648e8ccc69/output/riscv64-linux-gnu/SHA256SUMS.part
  b7fea8fe4c1baecff28c45fa514ec34338a7f0e04a7f58b8cb5493932242c221  guix-build-db648e8ccc69/output/riscv64-linux-gnu/bitcoin-db648e8ccc69-riscv64-linux-gnu-debug.tar.gz
  775d406d4a2b1fa1750ae1924cf2f67de7d89dbf0044dc7ab08d3908812fff2e  guix-build-db648e8ccc69/output/riscv64-linux-gnu/bitcoin-db648e8ccc69-riscv64-linux-gnu.tar.gz
  a1dcd8c95517e8b98d8584eed00b561582b74a68a1b3d06efd86d5322186b21e  guix-build-db648e8ccc69/output/x86_64-apple-darwin/SHA256SUMS.part
  952ea47428b9bcadb809fb02a56347a9f8b29f09eba4edf67a157f7cc4ec9a57  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin-unsigned.dmg
  adb226a702e24962d263edf2e95100508d6728b4dd93a5d6098c37a5721c2bcc  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin-unsigned.tar.gz
  fd389c11cce919c53e4aeccb0e5d1ee1d12b1d9f6987a3317c4b254c3ca03387  guix-build-db648e8ccc69/output/x86_64-apple-darwin/bitcoin-db648e8ccc69-x86_64-apple-darwin.tar.gz
  c76314a9194733790533bbfefa7e6a234307aaa252989c2b3fd19191ae286c57  guix-build-db648e8ccc69/output/x86_64-linux-gnu/SHA256SUMS.part
  5e2b023b62b77709f30d545705a61826e96ddcfea4c24cde83fe2b98010262e1  guix-build-db648e8ccc69/output/x86_64-linux-gnu/bitcoin-db648e8ccc69-x86_64-linux-gnu-debug.tar.gz
  a3e9dcb58aa8554cdeb211461976087b724cd81157517a9f1e00b1a73d74ab9b  guix-build-db648e8ccc69/output/x86_64-linux-gnu/bitcoin-db648e8ccc69-x86_64-linux-gnu.tar.gz
  d6733313b8f262b214c28d44d8ee644a2435cb4da90555b30e20dbf3807b6660  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/SHA256SUMS.part
  bc4b269f5b89200537d7175492ae31ab87eb4a1da86c1ade968a7bbdc472c5bf  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-debug.zip
  ccd83eb4c9ab0df288935ab655cd71b00525b57f82c8b9d7a4d1a08325d26aac  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-setup-unsigned.exe
  91ee20dfbaa923066379ea22f3e3a85a52f5b323877b44c19ccec6300d25cd41  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64-unsigned.tar.gz
  595baf193e0955436c4f2e5047e6842434bb4273b03c9d74e5c90972dde812f4  guix-build-db648e8ccc69/output/x86_64-w64-mingw32/bitcoin-db648e8ccc69-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    ACK db648e8ccc

Tree-SHA512: 940a148cf2db40484084cacf40e8ba4425fcbf5d6856a57be5af6f9f66d8adc0eb601c911513902bee120e7ddf97c7802e2d21b448beb4226f737164e5656b8a
2023-01-28 15:55:23 +00:00
fanquake
2b248798d9
build: remove --enable-upnp-default from configure 2023-01-28 15:27:23 +00:00
fanquake
02f5a5e7b5
build: remove --enable-natpmp-default from configure 2023-01-28 15:26:12 +00:00
fanquake
166e0c057c
build: fix usage of -Wloop-analysis
Looks like I introduced this in
5ced925283.
2023-01-23 17:57:40 +00:00
MarcoFalke
dddd462137
Bump minimum python version to 3.7 2023-01-18 12:59:11 +01:00
fanquake
8915e4d9f5
Merge bitcoin/bitcoin#26824: build: fix configuring with only bitcoin-util
0f883df7a5 build: fix configuring with only bitcoin-util (fanquake)

Pull request description:

  Fixes the issue presented in #25037 in a single (easily backportable) diff, with no additional refactoring/changes.

  Can be tested with:
  ```bash
  ./configure \
    --disable-tests \
    --disable-bench \
    --without-libs \
    --without-daemon \
    --without-gui \
    --disable-fuzz-binary \
    --without-utils \
    --enable-util-util
  ```

ACKs for top commit:
  TheCharlatan:
    tACK 0f883df7a5
  hebasto:
    ACK 0f883df7a5, tested on Ubuntu 22.04.

Tree-SHA512: 3682712405c360852c4edd90c171e21302154bf8789252c64083974a5c873cf04d97e8721c7916d5b2dafa6acd2b8dc32deecf550e90e03bcbbabbbbf75ce959
2023-01-13 15:56:16 +00:00
fanquake
db648e8ccc
build: remove unneeded var exporting 2023-01-13 10:42:15 +00:00
fanquake
07c54de550
Merge bitcoin/bitcoin#26691: Update secp256k1 subtree to libsecp256k1 version 0.2.0
2022917223 Add secp256k1_selftest call (Pieter Wuille)
3bfca788b0 Remove explicit enabling of default modules (Pieter Wuille)
4462cb0498 Adapt to libsecp256k1 API changes (Pieter Wuille)
9d47e7b71b Squashed 'src/secp256k1/' changes from 44c2452fd3..21ffe4b22a (Pieter Wuille)

Pull request description:

  Now that libsecp256k1 has a release (https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-December/021271.html), update the subtree to match it.

  The changes themselves are not very impactful for Bitcoin Core, but include:
  * It's no longer needed to specify whether contexts are for signing or verification or both (all contexts support everything), so make use of that in this PR.
  * Verification operations can use the static context now, removing the need for some infrastructure in pubkey.cpp to make sure a context exists.
  * Most modules are now enabled by default, so we can drop explicit enabling for them.
  * CI improvements (in particular, MSVC and more recent MacOS)
  * Introduction of an internal int128 type, which has no effect for GCC/Clang builds, but enables 128-bit multiplication in MSVC, giving a ~20% speedup there (but still slower than GCC/Clang).
  * Release process changes (process documentation, changelog, ...).

ACKs for top commit:
  Sjors:
    ACK 2022917223, but 4462cb0498 could use more eyes on it.
  achow101:
    ACK 2022917223
  jonasnick:
    utACK 2022917223

Tree-SHA512: 8a9fe28852abe74abd6f96fef16a94d5a427b1d99bff4caab1699014d24698aab9b966a5364a46ed1001c07a7c1d825154ed4e6557c7decce952b77330a8616b
2023-01-13 09:40:57 +00:00
Luke Dashjr
989451d068
configure: Detect compatibility of Boost.Process rather than hardcode non-Windows 2023-01-06 10:51:01 +00:00
fanquake
0f883df7a5
build: fix configuring with only bitcoin-util
Fixes the issue presented in #25037 in a single (easily backportable)
diff, with no additional refactoring/changes.

Can be tested with:
```bash
./configure \
  --disable-tests \
  --disable-bench \
  --without-libs \
  --without-daemon \
  --without-gui \
  --disable-fuzz-binary \
  --without-utils \
  --enable-util-util
```
2023-01-05 19:05:40 +00:00
fanquake
94d0c418c5
build: remove already tested headers from AC_CHECK_HEADERS
These headers are already included in a default set which are checked
early during configure.

We already use at least sys/types.h and unistd.h unconditionally in
configure.
2023-01-05 18:33:23 +00:00
Suriyaa Sundararuban
e9abb13ecb
doc: Update license year range to 2023 2022-12-24 11:40:16 +01:00
Pieter Wuille
3bfca788b0 Remove explicit enabling of default modules 2022-12-13 15:08:26 -05:00
Hennadii Stepanov
29ef26ae25
build: Drop unneeded linking of contrib/devtools/ scripts
Th build system targets run those scripts from the top source directory.
2022-11-03 11:48:29 +00:00
fanquake
4766cd1981
Merge bitcoin/bitcoin#24051: Bugfix: configure: bitcoin-{cli,tx,util} don't need UPnP, NAT-PMP, or ZMQ
98868633d1 Bugfix: configure: bitcoin-{cli,tx,util} don't need UPnP, NAT-PMP, or ZMQ (Luke Dashjr)

Pull request description:

  As with #23345, these other tools likewise don't use various deps.

ACKs for top commit:
  achow101:
    ACK 98868633d1

Tree-SHA512: 4be056b8e0c9f69834229aa257187457de1bc34214d320b770834e21ecc1f0ca7aa7b9689fba525928947bfabbb461528795f709014fb9618b82f088fe64f271
2022-10-31 11:51:15 +00:00
Andrew Chow
a52ff619a4
Merge bitcoin/bitcoin#25985: Revert "build: Use Homebrew's sqlite package if it is available"
d216d714aa Revert "build: Use Homebrew's sqlite package if it is available" (fanquake)

Pull request description:

  This reverts ee7b84e63c from #20527.

  That change was made without any rationale, maybe other than, a brew
  installed version might be newer, and that's "better". However when
  building from source on macOS, it just results in drastically worse
  performance, and issues / confusion like #25724.

  The difference in performance can be observed using the example from https://github.com/bitcoin/bitcoin/issues/25724#issuecomment-1213554922,
  but minified i.e:
  ```bash
  time src/bitcoin-cli createwallet speedy true
  time src/bitcoin-cli importdescriptors '[
    {"desc":"raw(00145846369f3d6ba366d6f5a903fb5cf4dca3763c0e)#k9wh6v62","timestamp":"now"},
    {"desc":"raw(001420800aabf13f3a4c4ce3ce4c66cecf1d17f21a6e)#6m0hlfh4","timestamp":"now"},
    {"desc":"raw(0014c6bf9715e06d73ebf9b3b02d5cc48d24d8bbabc1)#wyavh36r","timestamp":"now"},
    {"desc":"raw(00141ba7807b3f46af113beaea5c698428ce7138cd8a)#jctdsups","timestamp":"now"},
    {"desc":"raw(00140c1bd27f10fff01b36ddf3c1febaa1acff19b080)#9s6nc3pk","timestamp":"now"},
    {"desc":"raw(00141226e31987e4bc2e63c0ee12908f675e40464b20)#9pp7qm39","timestamp":"now"},
    {"desc":"raw(0014f73f149f7503960a5e849c6ee7a8a8c336f631cb)#qtkxv9fc","timestamp":"now"},
    {"desc":"raw(0014c8ccb4d81ffc769fc5fdd8d7eed69b0e0cae5749)#hn39qayv","timestamp":"now"},
    {"desc":"raw(001498565aead2d67a22a6021d55210f2a917fc22169)#6ar3vwsx","timestamp":"now"},
    {"desc":"raw(001403013248ac0cd9eabe176cad162cda2a19f771e1)#4m47mukd","timestamp":"now"}
  ]'
  ```

  Running master, when building from souce and using brew installed
  sqlite, this takes ~3.4s. With this PR, the same operation takes ~0.3s.

  Resolves the "build from source" portion of #25724. Building from
  depends is still not ideal, however I have some other changes that might
  help improve things in that case.

  Related performance issue reports:
  * https://github.com/bitcoindevkit/bdk/issues/749
  * https://bitcoin.stackexchange.com/questions/113898/bitcoin-v23-is-10-times-slower-than-v22-on-macos-for-basic-regtest-tests
  * https://github.com/bitcoin/bitcoin/issues/25724
  * https://github.com/bitcoin/bitcoin/pull/25985#issuecomment-1245942400

ACKs for top commit:
  achow101:
    ACK d216d714aa
  jarolrod:
    ACK d216d714aa
  hebasto:
    ACK d216d714aa, I have reviewed the code and it looks OK, I agree it can be merged. No conflicts with our build [docs](d216d714aa/doc/build-osx.md (descriptor-wallet-support)).

Tree-SHA512: 1bb4b44385b11fa9fe66edd7449278f9e47a6cc679b7111f9adf17db94c34e29c9cceafc917454e134420db40b24b56da29226af6f43e6dbeff822b79b77ed60
2022-10-17 10:29:41 -04:00
fanquake
20adaeaef5
build: split ARM crc & crypto extension checks
We currently perform the same check twice, to put the same set of flags
in two different variables. Split the checks so we test for crc and crypto
extensions independently.

If we don't want to split, we should just delete the second AX_CHECK_COMPILE_FLAG
check, and set ARM_CRC_CXXFLAGS & ARM_CRC_CXXFLAGS at the same time.
2022-09-26 11:23:03 +01:00
fanquake
553ff452c0
build: remove stdlib.h from header checks
We already use a mix of <cstdlib> and stdlib.h unconditionally throughout
the codebase.

Us checking this header also duplicates work already done by autotools.
Currently stdlib.h is checked for 3 times during a ./configure run, after
this change, at least it's only twice.
2022-09-23 10:49:33 +01:00
fanquake
55aad5f3a9
build: remove stdio.h from header checks
We already use a mix of <cstdio> and stdio.h unconditionally throughout
the codebase.

Us checking this header also duplicates work already done by autotools.
Currently stdio.h is checked for 3 times during a ./configure run, after
this change, at least it's only twice.
2022-09-21 16:53:18 +01:00
fanquake
eb6026b90f
build: remove strings.h from header checks
We don't include strings.h anywhere.

This is also already checked for by autoconf, so us checking for it just
means a 3rd existence check during ./configure.
2022-09-20 12:06:36 +01:00
fanquake
0567b5650e
build: Bump version to 24.99
On the master branch, bump to 24.99 (pre-25.0).
2022-09-19 16:48:08 +01:00
Cory Fields
b50a4b7647 build: quiet warnings in system headers installed from homebrew 2022-09-12 18:59:48 +00:00
fanquake
e531e34b41
build: fix configuring with --without-experimental-kernel-lib
Fixes #25994.
2022-09-04 17:58:10 +01:00
fanquake
d216d714aa
Revert "build: Use Homebrew's sqlite package if it is available"
This reverts ee7b84e63c from #20527.
This change was made without any rationale, maybe other than a brew
installed version might be newer, and that's "better". However when
building from source on macOS, it just results in drastically worse
perofrmance, and results in issues / confusions like #25724.

Resolves the "build from source" portion of #25724. Building from
depends is still not ideal, however I have some other changes that might
help improve things in that case.

The difference in performance can be observed using the example from
https://github.com/bitcoin/bitcoin/issues/25724#issuecomment-1213554922,
but minified to only 10 descriptors. i.e:
```bash
time src/bitcoin-cli createwallet speedy true
time src/bitcoin-cli importdescriptors '[
  {"desc":"raw(00145846369f3d6ba366d6f5a903fb5cf4dca3763c0e)#k9wh6v62","timestamp":"now"},
  {"desc":"raw(001420800aabf13f3a4c4ce3ce4c66cecf1d17f21a6e)#6m0hlfh4","timestamp":"now"},
  {"desc":"raw(0014c6bf9715e06d73ebf9b3b02d5cc48d24d8bbabc1)#wyavh36r","timestamp":"now"},
  {"desc":"raw(00141ba7807b3f46af113beaea5c698428ce7138cd8a)#jctdsups","timestamp":"now"},
  {"desc":"raw(00140c1bd27f10fff01b36ddf3c1febaa1acff19b080)#9s6nc3pk","timestamp":"now"},
  {"desc":"raw(00141226e31987e4bc2e63c0ee12908f675e40464b20)#9pp7qm39","timestamp":"now"},
  {"desc":"raw(0014f73f149f7503960a5e849c6ee7a8a8c336f631cb)#qtkxv9fc","timestamp":"now"},
  {"desc":"raw(0014c8ccb4d81ffc769fc5fdd8d7eed69b0e0cae5749)#hn39qayv","timestamp":"now"},
  {"desc":"raw(001498565aead2d67a22a6021d55210f2a917fc22169)#6ar3vwsx","timestamp":"now"},
  {"desc":"raw(001403013248ac0cd9eabe176cad162cda2a19f771e1)#4m47mukd","timestamp":"now"}
]'
```

Running master, when building from souce and using brew installed
sqlite, this takes ~3.4s. With this PR, the same operation takes ~0.3s.
2022-09-02 14:51:27 +01:00
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
fanquake
4349051dd4
build: reorder cxxflags in intrinsic checks
Let the user have the final say in regards to using intrinsics.

Fixes: #13758
Alternaitve to #13789.
2022-08-15 13:10:26 +01:00
fanquake
d755ffc327
build: package test_bitcoin in Windows installer 2022-08-09 09:13:23 +01:00
fanquake
f765d4e232
Merge bitcoin/bitcoin#25770: build: Fix help string for --enable-external-signer configure option
8df063e537 build: Fix help string for `--enable-external-signer` configure option (Hennadii Stepanov)

Pull request description:

  This PR is a follow up of bitcoin/bitcoin#24065 and fixes the help string according to the actual default value 816ca01650/configure.ac (L324-L327)

ACKs for top commit:
  kristapsk:
    cr utACK 8df063e537
  jarolrod:
    ACK 8df063e537

Tree-SHA512: ad3f457a53c9238ddd8ded9efd1224e564e6cb9da8b7ff7733a11e32a7daad5c0f6c6223509218f44944a874470cb0d2447897662eaf4e78c763b30785717c50
2022-08-04 09:07:09 +01:00
Hennadii Stepanov
8df063e537
build: Fix help string for --enable-external-signer configure option 2022-08-02 11:34:41 +01:00
Hennadii Stepanov
b9f06bf05b
build: Do not export PKG_CONFIG_{PATH|LIBDIR} variables 2022-07-27 10:07:34 +01:00
fanquake
c6fafa4ed6
Merge bitcoin/bitcoin#25630: Add symlinks for hardcoded Makefiles in out of tree builds
9aeeb75cf9 Add symlinks for hardcoded Makefiles in out of tree builds (Pablo Greco)

Pull request description:

  When doing out of tree builds, some hardwired Makefiles are not symlinked, which makes it a bit more uncomfortable to run some instances of make.

  There's no "real" functionality loss without this patch because the symlinked files are just for quick access to thinks in the main Makefile

ACKs for top commit:
  hebasto:
    ACK 9aeeb75cf9, tested on Ubuntu 22.04.

Tree-SHA512: 656f73c387584cee34f66b3f95993267a40b915762949c7a84b73ba2ea8d37b7b5850733377110e0110ed2f7da64e6a5f9b303812080fe7815154dbb40c8a44c
2022-07-19 16:38:36 +01:00
Hennadii Stepanov
6fdc13c61f
build: Fix autoconf variable names for tools found by AC_PATH_TOOL
See the `AC_PATH_TOOL` macro implementation.
2022-07-18 17:13:50 +01:00
Andrew Chow
4de4221ab4 build: Check for std::atomic::exchange rather than std::atomic_exchange
Our usage of std::atomic is with it's own exchange function, not
std::atomic_exchange. So we should be looking specifically for that
function.

Additionally, -pthread and -lpthread have an effect on whether -latomic
will be needed, so the atomics check needs to use these flags as well.
This will make the flags in use better match what is actually used when
linking.

This removes the need for -latomic for riscv builds, which resolves a
guix cross architecture reproducibility issue.
2022-07-18 10:47:19 -04:00
Pablo Greco
9aeeb75cf9 Add symlinks for hardcoded Makefiles in out of tree builds 2022-07-18 08:12:27 -03:00
fanquake
880d4aaf81
build: use BOOST_NO_CXX98_FUNCTION_BASE to suppress warnings
Boost conatiner_hash (included via functional -> multi_index) uses
std::unary_function, which was deprecated in C++11, and "removed" in
C++17. It's use causes wanrings with newer compilers, i.e GCC 12.1.

```bash
/bitcoin/depends/aarch64-unknown-linux-gnu/include/boost/container_hash/hash.hpp:131:33:
warning: 'template<class _Arg, class _Result> struct std::unary_function' is deprecated [-Wdeprecated-declarations]
  131 |         struct hash_base : std::unary_function<T, std::size_t> {};
      |                                 ^~~~~~~~~~~~~~
In file included from /usr/include/c++/12/bits/unique_ptr.h:37,
                 from /usr/include/c++/12/memory:76,
                 from ./init.h:10,
                 from init.cpp:10:
/usr/include/c++/12/bits/stl_function.h:117:12: note: declared here
  117 |     struct unary_function
```

Use the MACRO outlined in
https://github.com/boostorg/container_hash/issues/22, to prevent it's
use.

BOOST_NO_CXX98_FUNCTION_BASE:
> The standard library no longer supports std::unary_function and std::binary_function.
> They were deprecated in C++11 and is removed from C++14.

See:
https://github.com/boostorg/config/pull/430
https://en.cppreference.com/w/cpp/utility/functional/unary_function
https://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html
2022-06-23 17:29:37 +01:00
MarcoFalke
fa7cbc6e5c
build: Remove negated --enable-fuzz checks from build system 2022-06-22 08:12:23 +02:00
laanwj
7377ed778c
Merge bitcoin/bitcoin#25389: guix: use libtool 2.4.7
4a81ef4510 doc: update configure ar doc to mention libtool 2.4.7 (fanquake)
679ecdd14b guix: use libtool 2.4.7 (fanquake)

Pull request description:

  As of version 2.4.7, libtool now respects ARFLAGS, and has changed the default `ARFLAGS` from `cru` to `cr` (which, historically, we have also done, [see configure](d6832217ef/configure.ac (L33))).

  This eliminates spammy `ar` output such as:
  ```bash
    CXXLD    libunivalue.la
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    AR       libbitcoin_zmq.a
    AR       libbitcoin_consensus.a
    CXXLD    crypto/libbitcoin_crypto_base.la
    CXXLD    crypto/libbitcoin_crypto_sse41.la
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    CXXLD    crypto/libbitcoin_crypto_avx2.la
    CXXLD    crypto/libbitcoin_crypto_x86_shani.la
    CXXLD    leveldb/libleveldb.la
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    CXXLD    crc32c/libcrc32c.la
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    CXXLD    leveldb/libmemenv.la
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
  /root/.guix-profile/bin/x86_64-linux-gnu-ar: `u' modifier ignored since `D' is the default (see `U')
    AR       libbitcoin_cli.a
  ```

  [Libtool 2.4.7 release notes](https://lists.gnu.org/archive/html/autotools-announce/2022-03/msg00000.html):
  ** New features:

    - Libtool script now supports (configure-time and runtime) ARFLAGS
      variable, which obsoletes AR_FLAGS.  This is due to naming conventions
      among other *FLAGS and to be consistent with Automake's ARFLAGS.

  ** Important incompatible changes:

    - Libtool changed ARFLAGS/AR_FLAGS default from 'cru' to 'cr'.

  Guix Build (x86_64):
  ```bash
  a4da07d0166a7018d1cb7cddd734c9efe062bd28a6349ebdbf427adf353f2acf  guix-build-4a81ef451094/output/aarch64-linux-gnu/SHA256SUMS.part
  e2418d772c8f409b9bfde3bcf494f3d320d89970a4305e8799a8f59ecbd66906  guix-build-4a81ef451094/output/aarch64-linux-gnu/bitcoin-4a81ef451094-aarch64-linux-gnu-debug.tar.gz
  44a877696205b1d60d07e60d01d5427d9ed7efaf8cf62db719bc057a0df77636  guix-build-4a81ef451094/output/aarch64-linux-gnu/bitcoin-4a81ef451094-aarch64-linux-gnu.tar.gz
  b911cae3d8a73eda2f9224a6073e14e26a1aec7f2cb85dc9d949d22ca4e9f4b4  guix-build-4a81ef451094/output/arm-linux-gnueabihf/SHA256SUMS.part
  6fa645e1dbaa77fd082b860852b4a32114d317d630e8791dad14d154a203cd40  guix-build-4a81ef451094/output/arm-linux-gnueabihf/bitcoin-4a81ef451094-arm-linux-gnueabihf-debug.tar.gz
  3d86f047e5453ee73cd4dab4ac0b3a97928914f7469b9bcc807230b38b471f3f  guix-build-4a81ef451094/output/arm-linux-gnueabihf/bitcoin-4a81ef451094-arm-linux-gnueabihf.tar.gz
  1c0dbc156292c3d142e63b29d1fb9c9b6623db5698f59b2bfce96674438780a6  guix-build-4a81ef451094/output/arm64-apple-darwin/SHA256SUMS.part
  17f4c3bf0527ec2bde06691c301e8c6c5290178238a21aa10d3672917eccb27d  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin-unsigned.dmg
  5ed1de03d5d87249fc8671f5641816513a93784d38873d277bdf49a4b98b9ba3  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin-unsigned.tar.gz
  fb18089efdb291714f1359a548a9f101d5fcc9bdc653cd406ab28f7e02713bcd  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin.tar.gz
  4f816681c778b8bb9522be31807d1d60c724383cfa4ae820dd829b716d934939  guix-build-4a81ef451094/output/dist-archive/bitcoin-4a81ef451094.tar.gz
  3af9f38caf09f4424b7a982b5992407fb4ce5574a0e98af0b0558ec85a12519d  guix-build-4a81ef451094/output/powerpc64-linux-gnu/SHA256SUMS.part
  cf88399bc6ea96df3742cb87bfa0629b22b001f49a6ccfb35b66f7dd46a47a94  guix-build-4a81ef451094/output/powerpc64-linux-gnu/bitcoin-4a81ef451094-powerpc64-linux-gnu-debug.tar.gz
  93158fd0b9d3c74565917395d0199d2b9f8b1821dd4aa207f804ee93bd0e4a3d  guix-build-4a81ef451094/output/powerpc64-linux-gnu/bitcoin-4a81ef451094-powerpc64-linux-gnu.tar.gz
  c970dd4dcbd25f2a94eaf526756fc0c01920452f4e42b4dd51fea8bf04f1c7ca  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/SHA256SUMS.part
  80e488a199b91fc2763da94bf5c4024a7173404419f97c68b825dd6c7dccafbc  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/bitcoin-4a81ef451094-powerpc64le-linux-gnu-debug.tar.gz
  00159823c8f0daab6c1034c9648742b6569fe07b50091f4850f5b028d9f1dc83  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/bitcoin-4a81ef451094-powerpc64le-linux-gnu.tar.gz
  f796cbe82e3d4f8ed90647728ad76afae4691c671f5a79c87f0b7a41d67c0a3e  guix-build-4a81ef451094/output/riscv64-linux-gnu/SHA256SUMS.part
  b51be33b674def05b1d8b0b74a2e8c0340fb911859936e3e0024ecac09540270  guix-build-4a81ef451094/output/riscv64-linux-gnu/bitcoin-4a81ef451094-riscv64-linux-gnu-debug.tar.gz
  9f0e52c0b0c706359e28a591c6de71502520e6de9941a6cf378c1c83ebd66480  guix-build-4a81ef451094/output/riscv64-linux-gnu/bitcoin-4a81ef451094-riscv64-linux-gnu.tar.gz
  e145886b3f06d6a69db1657e19661cfb1c95f9b35aac3d3efd89f89f791fa909  guix-build-4a81ef451094/output/x86_64-apple-darwin/SHA256SUMS.part
  7a3512718270cc9be241d1ca0c7f8f37ebeb620e6c5a1a70992aef99bc209854  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin-unsigned.dmg
  0439552bc901a9fd10251c1e4a2eb685aae7b4edcf8f047a28eba837d8b6c960  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin-unsigned.tar.gz
  4c1ce8786b3c381250b8071a17bc6d705e3e5e672909ffeacfa2171814dee527  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin.tar.gz
  9c08271cee5f3bba08866fcc609290dd009b85793460188a4b3c5df5ac83d002  guix-build-4a81ef451094/output/x86_64-linux-gnu/SHA256SUMS.part
  04285f7e68bc25834fe7830f15b1fd0102cd1f02f23701a8f423cf0835d1af5f  guix-build-4a81ef451094/output/x86_64-linux-gnu/bitcoin-4a81ef451094-x86_64-linux-gnu-debug.tar.gz
  b0e467b2ccb1b391ddb981f1d1b16f0f6de71aa8177f7735a88989fdc4ade449  guix-build-4a81ef451094/output/x86_64-linux-gnu/bitcoin-4a81ef451094-x86_64-linux-gnu.tar.gz
  6adb17642959fee8d123482bf0ec5ad0a4f10e63c87bf45447d1e57ab873d2bc  guix-build-4a81ef451094/output/x86_64-w64-mingw32/SHA256SUMS.part
  ac1989f332d1bd5d0acabb7ce28236a80fd6a42eac93c7287f890148ef2999bc  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-debug.zip
  31816d2ef52be01a69fd8701e3da61a32dddaccdd1d424de00a412a798d97b87  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-setup-unsigned.exe
  ecc41932934e5e746883648fd4ee5edf4cd5cadd944d799b31e41aad249c8d7d  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-unsigned.tar.gz
  8634ad4feb1118fc89abd96489533c81176b7172750b8f2cf18a3e10377a8d65  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64.zip
  ```
  Guix Build (arm64):
  ```bash
  b70e6fc1be044e347800d7de78a1c950961f5c52abc724fa8c6fe8556b3ef3ca  guix-build-4a81ef451094/output/arm-linux-gnueabihf/SHA256SUMS.part
  62e670fcedc2cb746b3c589edfa9a0950097256ef974c58984a9f252c91b802a  guix-build-4a81ef451094/output/arm-linux-gnueabihf/bitcoin-4a81ef451094-arm-linux-gnueabihf-debug.tar.gz
  2637e5c31380fbae1ec5efb1792124a0554d49516e1964a609560487ea673ebb  guix-build-4a81ef451094/output/arm-linux-gnueabihf/bitcoin-4a81ef451094-arm-linux-gnueabihf.tar.gz
  1554617b965611ea618664652b566f2c5a16c94fa57572ea31b66a40bb845b3c  guix-build-4a81ef451094/output/arm64-apple-darwin/SHA256SUMS.part
  a98efc26e78ce749d75fc467822f6e68c6b3b7abc5d24e8edaa40b19c6b40632  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin-unsigned.dmg
  ecd9057eaa2c7166b1320bd85555258fd6a49690b29331cdde7b4c9af05acc0d  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin-unsigned.tar.gz
  9417c58463488f3eeddcdfc5440d1cb341d6424517e4b69c227f4291853d3fa6  guix-build-4a81ef451094/output/arm64-apple-darwin/bitcoin-4a81ef451094-arm64-apple-darwin.tar.gz
  4f816681c778b8bb9522be31807d1d60c724383cfa4ae820dd829b716d934939  guix-build-4a81ef451094/output/dist-archive/bitcoin-4a81ef451094.tar.gz
  25cddb3a6a22d1e57cef92d96b106df0fff5d5c3987c3673decad63db834765b  guix-build-4a81ef451094/output/powerpc64-linux-gnu/SHA256SUMS.part
  cb99c30a117e650b837e1e5d835be5e51b282158139b8fd591fa4b6f1aa709db  guix-build-4a81ef451094/output/powerpc64-linux-gnu/bitcoin-4a81ef451094-powerpc64-linux-gnu-debug.tar.gz
  66a182566f0950f7b0d9de497118ce3635ca5acf78c356a1fea6f815f61ce94b  guix-build-4a81ef451094/output/powerpc64-linux-gnu/bitcoin-4a81ef451094-powerpc64-linux-gnu.tar.gz
  d5f65e1d6cb8de238f1c50ec30c0848675274126d197e274d51fed32de3860ad  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4c2fe35cc087d5e268eb2202cc6579442d4c6b9d6d7b61c55753c6600f8070e7  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/bitcoin-4a81ef451094-powerpc64le-linux-gnu-debug.tar.gz
  918da28dbd9c2db024a31877c3913e1e717c1099d91cb32798ea4afee6b80b72  guix-build-4a81ef451094/output/powerpc64le-linux-gnu/bitcoin-4a81ef451094-powerpc64le-linux-gnu.tar.gz
  ba3c1095676c3f2255a3fb581404887783d234ed44bd89b7fd96016cccadd401  guix-build-4a81ef451094/output/riscv64-linux-gnu/SHA256SUMS.part
  9492973869a7f6274ffe20758ef113cc5f11465c08b465aa18d28618cee6d0fb  guix-build-4a81ef451094/output/riscv64-linux-gnu/bitcoin-4a81ef451094-riscv64-linux-gnu-debug.tar.gz
  a4a767045b987f87994eb50ab5bc17639707e184a58aa66842d8cb9d7a4dffb4  guix-build-4a81ef451094/output/riscv64-linux-gnu/bitcoin-4a81ef451094-riscv64-linux-gnu.tar.gz
  e145886b3f06d6a69db1657e19661cfb1c95f9b35aac3d3efd89f89f791fa909  guix-build-4a81ef451094/output/x86_64-apple-darwin/SHA256SUMS.part
  7a3512718270cc9be241d1ca0c7f8f37ebeb620e6c5a1a70992aef99bc209854  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin-unsigned.dmg
  0439552bc901a9fd10251c1e4a2eb685aae7b4edcf8f047a28eba837d8b6c960  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin-unsigned.tar.gz
  4c1ce8786b3c381250b8071a17bc6d705e3e5e672909ffeacfa2171814dee527  guix-build-4a81ef451094/output/x86_64-apple-darwin/bitcoin-4a81ef451094-x86_64-apple-darwin.tar.gz
  e19a0c510a95662fef30fc3ea1f2496ae8957df1814f237d4a7c1ef40ba47728  guix-build-4a81ef451094/output/x86_64-linux-gnu/SHA256SUMS.part
  1712aca301825d985f7f9e333ebdc2ff0b7f385f79fbecc9747c8a183c15fdac  guix-build-4a81ef451094/output/x86_64-linux-gnu/bitcoin-4a81ef451094-x86_64-linux-gnu-debug.tar.gz
  b40369ea098a02a1cc4e0f5812e9947608d218542038364fb5ce743d9c9e3686  guix-build-4a81ef451094/output/x86_64-linux-gnu/bitcoin-4a81ef451094-x86_64-linux-gnu.tar.gz
  9402b3b6ce1e6642a60e5324ebef565c8c0d4b49085ff6fa2105097f4879f389  guix-build-4a81ef451094/output/x86_64-w64-mingw32/SHA256SUMS.part
  0e810115ea0269311a07cf868270094ced40cb10cfb2faa5db0b8ec881bc46f9  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-debug.zip
  31816d2ef52be01a69fd8701e3da61a32dddaccdd1d424de00a412a798d97b87  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-setup-unsigned.exe
  ecc41932934e5e746883648fd4ee5edf4cd5cadd944d799b31e41aad249c8d7d  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64-unsigned.tar.gz
  dbf4dca62ad173df82571a996ceeef4fba715d600716062d9f851a71cbdd1c9a  guix-build-4a81ef451094/output/x86_64-w64-mingw32/bitcoin-4a81ef451094-win64.zip
  ```

ACKs for top commit:
  dongcarl:
    ACK 4a81ef4510
  hebasto:
    ACK 4a81ef4510

Tree-SHA512: f853580ce594d26446968466d079e68e0c432c2db96a2c686297b78abbf33e9a451a441287468b1684a2f223ba709210bfdf422b7737464d87a7b9934c198761
2022-06-22 00:03:53 +02:00
laanwj
5884a47c36
Merge bitcoin/bitcoin#25422: build: globally define NOMINMAX when building with mingw-w64
58a9601dff build: globally define NOMINMAX (fanquake)

Pull request description:

  Define (and document) `NOMINMAX` once, rather than across multiple
  source files.

  Defining this prevents the definition of min/max macros when using
  mingw-w64, which may conflict with unprefixed std::min/max usage. While
  that might not be the case for us, we'd always prefer to use the standard
  library in any case.

  For example:
  73cadc06c6/mingw-w64-headers/include/ntdef.h (L289-L300)

  Note that we already define NOMINMAX globally when building with MSVC.

  Guix Build (arm64):
  ```bash
  d3a3b7045dc1677f6a0a2a73a484f156c81ae764058003d9e870b346912b744a  guix-build-58a9601dffa6/output/arm-linux-gnueabihf/SHA256SUMS.part
  3e66540a3f8c8a10864ab2fed69581241fa41af86bbb028e5f7c3dd4ba859c64  guix-build-58a9601dffa6/output/arm-linux-gnueabihf/bitcoin-58a9601dffa6-arm-linux-gnueabihf-debug.tar.gz
  78756e20d45e327cfd7f9e65858bf6d3814bcbe08f9f825fd6dfc9dff999ea6d  guix-build-58a9601dffa6/output/arm-linux-gnueabihf/bitcoin-58a9601dffa6-arm-linux-gnueabihf.tar.gz
  11073e88d4fd0411c5119a3dca3a90788693fa9aa5134339c84be98ae893cd77  guix-build-58a9601dffa6/output/arm64-apple-darwin/SHA256SUMS.part
  deffd5f8c6286be34bc35e71ec70300bacb37e1b1a83e67c0833cb57d7a45529  guix-build-58a9601dffa6/output/arm64-apple-darwin/bitcoin-58a9601dffa6-arm64-apple-darwin-unsigned.dmg
  acee7e98c5ec41f67e86c78dc5b45fa8bc82de86a04b8c43dbf9c59e7aff36a9  guix-build-58a9601dffa6/output/arm64-apple-darwin/bitcoin-58a9601dffa6-arm64-apple-darwin-unsigned.tar.gz
  83f7cbaf6680fe8981db9260b97ca87d609a76c0857a744c7d406645d2484e1b  guix-build-58a9601dffa6/output/arm64-apple-darwin/bitcoin-58a9601dffa6-arm64-apple-darwin.tar.gz
  b8c73b40a5e307e9e7e482ce92164990d442f3f105a5240ec6eb96a775cb35d5  guix-build-58a9601dffa6/output/dist-archive/bitcoin-58a9601dffa6.tar.gz
  cc435cd925771af7e261d0121047339ea8fddb0d1548b699c12108a62988cd32  guix-build-58a9601dffa6/output/powerpc64-linux-gnu/SHA256SUMS.part
  7a68bd3181a054056b0a5eb6e830b90ac4ba8435114127d5f1720643011aa78f  guix-build-58a9601dffa6/output/powerpc64-linux-gnu/bitcoin-58a9601dffa6-powerpc64-linux-gnu-debug.tar.gz
  bc55b95e263c455a964d9463a3ee60dabee1d10cefc6641ed29a3b1b317d61e0  guix-build-58a9601dffa6/output/powerpc64-linux-gnu/bitcoin-58a9601dffa6-powerpc64-linux-gnu.tar.gz
  49df78009d80af02262806c6c395e2c884a979b1ea13d01aa27d8188403e29d1  guix-build-58a9601dffa6/output/powerpc64le-linux-gnu/SHA256SUMS.part
  29dc7a0e10707b3511fa2afb6977df7ebbb67f796d8be5a042abc14eba764aef  guix-build-58a9601dffa6/output/powerpc64le-linux-gnu/bitcoin-58a9601dffa6-powerpc64le-linux-gnu-debug.tar.gz
  51b7f8e1bccff1e2ce1860bbc382eefe648b90cc3374cdfa3a95a7454386e77d  guix-build-58a9601dffa6/output/powerpc64le-linux-gnu/bitcoin-58a9601dffa6-powerpc64le-linux-gnu.tar.gz
  e62e46d8cebbbfc0f587e930acb648fcae99cfe8b2f63aeba98e46e3338fe1e3  guix-build-58a9601dffa6/output/riscv64-linux-gnu/SHA256SUMS.part
  fa5d0a074ca586583bf08dbf748909b3ff5e0a54a2e5aaa88abec666e17b4e72  guix-build-58a9601dffa6/output/riscv64-linux-gnu/bitcoin-58a9601dffa6-riscv64-linux-gnu-debug.tar.gz
  684b2917fd27a41f884bb6870f7fac847d52b6f8b40df5779d1c674409f7cd14  guix-build-58a9601dffa6/output/riscv64-linux-gnu/bitcoin-58a9601dffa6-riscv64-linux-gnu.tar.gz
  7d7cfd0212b49eec48c7f8dc0d97add53096685dfd646feac466c27a45d20c97  guix-build-58a9601dffa6/output/x86_64-apple-darwin/SHA256SUMS.part
  d70ae6d060b7832f8741dc5d1958cc0d32702605c863254303107246deec0aa6  guix-build-58a9601dffa6/output/x86_64-apple-darwin/bitcoin-58a9601dffa6-x86_64-apple-darwin-unsigned.dmg
  930f3ec43896404208ebdb582c9175e3a5a2470d778722e0001addde84dad99a  guix-build-58a9601dffa6/output/x86_64-apple-darwin/bitcoin-58a9601dffa6-x86_64-apple-darwin-unsigned.tar.gz
  2d8a9d12aadcf60634db953fcb8bd496a002608e9a64eb7d60bb7ffe1f94489f  guix-build-58a9601dffa6/output/x86_64-apple-darwin/bitcoin-58a9601dffa6-x86_64-apple-darwin.tar.gz
  10363729ece6e1c2cbdf435483006191bf17d1def2d318ff8357197d91c06ded  guix-build-58a9601dffa6/output/x86_64-linux-gnu/SHA256SUMS.part
  d50ec8e4f72e8b064b196eb0ece212f7b0b126f4b8b644c4451084cbf0416072  guix-build-58a9601dffa6/output/x86_64-linux-gnu/bitcoin-58a9601dffa6-x86_64-linux-gnu-debug.tar.gz
  471e12b8715ecff4d99121c4bb3288ef4b005ca468810a714c67ea3e7c6669e9  guix-build-58a9601dffa6/output/x86_64-linux-gnu/bitcoin-58a9601dffa6-x86_64-linux-gnu.tar.gz
  d63946401952d131fdf5df9442c52151d86e53f019234b5ad16fdef0d2976356  guix-build-58a9601dffa6/output/x86_64-w64-mingw32/SHA256SUMS.part
  5359782e1eb6f449338f18e053ad82f25382d968690208ae5739d9338eb7bdc7  guix-build-58a9601dffa6/output/x86_64-w64-mingw32/bitcoin-58a9601dffa6-win64-debug.zip
  0d387d5a4cb1d712556a3fe5b4bd1e928bb5fbbe57a85ee06c746f132a6b1ec5  guix-build-58a9601dffa6/output/x86_64-w64-mingw32/bitcoin-58a9601dffa6-win64-setup-unsigned.exe
  dbfd7419d1d764e853a9dc041e276669b488aea4a80e21e4a175b6c3e512e70c  guix-build-58a9601dffa6/output/x86_64-w64-mingw32/bitcoin-58a9601dffa6-win64-unsigned.tar.gz
  0ba07504d9d5a12af9144e8b386b2640b48dba067d47c694a44ecffe56b0c0fc  guix-build-58a9601dffa6/output/x86_64-w64-mingw32/bitcoin-58a9601dffa6-win64.zip
  ```

ACKs for top commit:
  laanwj:
    Code review ACK 58a9601dff

Tree-SHA512: d1c22b3d0d21ef8f9f605ef6ca06353e3f48536d84f3531f93d613a6ccbbe62f12fae0ed09e8b9a8940b0ef33f9d41d9991eb56fbe7c4ab48f0ce7fcf44e08b1
2022-06-21 12:42:05 +02:00
Hennadii Stepanov
b5f6a46503
build: Fix ::_wsystem check
See https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/system-wsystem
2022-06-20 14:04:37 +02:00
fanquake
58a9601dff
build: globally define NOMINMAX
Define (and document) `NOMINMAX` once, rather than across multiple
source files.

Defining this prevents the definition of min/max macros when using
mingw-w64, which may conflict with unprefixed std::min/max usage. While
that might not be the case for us, we'd always prefer to use the standard
library in any case.

For example:
73cadc06c6/mingw-w64-headers/include/ntdef.h (L289-L300)
2022-06-20 12:22:05 +01:00
laanwj
faf25b09d9
Merge bitcoin/bitcoin#25282: Bugfix: configure: Define default for use_libevent
f0f5cd79b5 Bugfix: configure: Define default for use_libevent (Luke Dashjr)

Pull request description:

  Another trivial fix like #25051 - I think this is the only other one missing.

ACKs for top commit:
  laanwj:
    Code review ACK f0f5cd79b5

Tree-SHA512: 888c2e6d032ef1de5af635e2a9b2b8ab560c86bd10a6cee54aa9aa62ae43f03c19889bb6a2b64cf8982d4cd514f97ca3ed743c71ed0651e9295a4b1726955b9b
2022-06-16 18:19:49 +02:00
fanquake
4a81ef4510
doc: update configure ar doc to mention libtool 2.4.7 2022-06-16 11:36:38 +01:00
fanquake
491bb14c0c
build: test for timingsafe_bcmp
Code introduced in #15649 added usage of `timingsafe_bcmp()`, if
available, otherwise falling back to our own implementation. However
the relevant build system check was never added, so currently, we'll
always just use our implementation, as HAVE_TIMINGSAFE_BCMP will never
be defined.

Add the check for timingsafe_bcmp. Note that as far as I'm aware, it's
only available on OpenBSD.
2022-06-10 12:39:08 +01:00
MacroFake
2e079c86ae
Merge bitcoin/bitcoin#24395: build: use BOOST_MULTI_INDEX_ENABLE_SAFE_MODE when debugging
06e18e0b53 build: use BOOST_MULTI_INDEX_ENABLE_SAFE_MODE when debugging (fanquake)

Pull request description:

  Use of this macro enables precondition checks for iterators and functions of the library. It's use is recommended in debug builds. See https://www.boost.org/doc/libs/1_78_0/libs/multi_index/doc/tutorial/debug.html for more info.

  There is also a `BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING` macro:
  > When this mode is in effect, all public functions of Boost.MultiIndex will perform post-execution tests aimed at ensuring that the basic internal invariants of the data structures managed are preserved.

ACKs for top commit:
  laanwj:
    Concept and code review ACK 06e18e0b53

Tree-SHA512: 7ee489eccda81c7dbca9210af6d3007d5b2c704b645139d2714c077af157789dd9478c29d0d212e210e96686ea83713aaf3d458e879122b3cde64f3e3e3789d2
2022-06-08 17:20:15 +02:00
Luke Dashjr
f0f5cd79b5 Bugfix: configure: Define default for use_libevent 2022-06-05 21:48:22 +00:00
fanquake
a7973bf8f4
Revert "build: more robustly check for fcf-protection support"
We no-longer support Clang 7 (#24164).

This reverts commit e9189a750b.
2022-05-31 06:41:16 +01:00
Jon Atack
247d17033f build: add DEBUG_LOCKCONTENTION to --enable-debug configuration 2022-05-20 12:48:07 +02:00
fanquake
06e18e0b53
build: use BOOST_MULTI_INDEX_ENABLE_SAFE_MODE when debugging
Use of this macro enables precondition checks for iterators and
functions of the library. It's use is recommended in debug builds.

See:
https://www.boost.org/doc/libs/1_78_0/libs/multi_index/doc/tutorial/debug.html.
2022-05-19 09:43:43 +01:00
MacroFake
fafae678f6
build: Enable RPC_DOC_CHECK on --enable-debug 2022-05-19 07:54:57 +02:00
laanwj
51527ec1ec
Merge bitcoin/bitcoin#25051: Bugfix: configure: Define defaults for enable_arm_{crc,shani}
7fd0860d12 Bugfix: configure: Define defaults for enable_arm_{crc,shani} (Luke Dashjr)

Pull request description:

  Fix for #17398 and #24115

  Trivial, mostly for consistency (you'd have to *try* to break this)

ACKs for top commit:
  pk-b2:
    ACK 7fd0860d12
  seejee:
    ACK 7fd0860d12
  vincenzopalazzo:
    ACK 7fd0860d12

Tree-SHA512: 51c389787c369f431ca57071f03392438bff9fd41f128c63ce74ca30d2257213f8be225efcb5c1329ad80b714f44427d721215d4f848cc8e63060fa5bc8f1f2e
2022-05-11 20:24:27 +02:00
Hennadii Stepanov
a0e2a3133a
build: Drop redundant checks for ranlib and strip tools
These checks are handled by the `LT_INIT` macro.
2022-05-05 10:40:54 +02:00
fanquake
1ad5d5088d
Merge bitcoin/bitcoin#24866: build: No longer need to hack the PATH variable in config.site
efa3a807a6 build: No longer need to hack the `PATH` variable in `config.site` (Hennadii Stepanov)
f3af4f7a18 build: Let the depends build system define a path to `dsymutil` tool (Hennadii Stepanov)
b0a8ddabe5 build: Pass missed darwin-specific tools via `config.site` (Hennadii Stepanov)
f87594da14 build: No need to provide defaults for darwin-specific tools (Hennadii Stepanov)
80cd99322f scripted-diff: Rename INSTALLNAMETOOL -> INSTALL_NAME_TOOL (Hennadii Stepanov)
a4fd440741 build: Pass missed `strip` tool via `config.site` (Hennadii Stepanov)

Pull request description:

  This PR adds lacking definitions of absolute paths to some tools in the depends build system.

  This improvement makes possible to keep the `PATH` variable untouched during configuration.

  Also see https://github.com/bitcoin/bitcoin/pull/24566#discussion_r851125442.

  #### Guix builds on `x86_64`:
  ```
  $ find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
  93fa58bf2a1f5c15c5a547c014036ac79761e5c9622bd5099408ce570b39f02f  guix-build-efa3a807a677/output/aarch64-linux-gnu/SHA256SUMS.part
  ef5f53348404ba973dceaf088a4d47dfd0f1fa3d3bf75bdd723b043431de005d  guix-build-efa3a807a677/output/aarch64-linux-gnu/bitcoin-efa3a807a677-aarch64-linux-gnu-debug.tar.gz
  6688b2295d564b32ea676c0540c43cdc5211322eddc87e0967b764284e847368  guix-build-efa3a807a677/output/aarch64-linux-gnu/bitcoin-efa3a807a677-aarch64-linux-gnu.tar.gz
  4abb3428be477aa7360611689fd28950f30dbbac6a95c454095367d8df11ad72  guix-build-efa3a807a677/output/arm-linux-gnueabihf/SHA256SUMS.part
  8dd33389170e83812821d5dd68741db96af1376035ba40af0215a7ae95dcf7fc  guix-build-efa3a807a677/output/arm-linux-gnueabihf/bitcoin-efa3a807a677-arm-linux-gnueabihf-debug.tar.gz
  544e97eb88b2a44c8ceb9660399eb5d49d75e07ff59fc03a701a595bacea0491  guix-build-efa3a807a677/output/arm-linux-gnueabihf/bitcoin-efa3a807a677-arm-linux-gnueabihf.tar.gz
  219faf1131bdcffffd5979eafd2beabc4a300081f8b1df184852b7183dfbc0e8  guix-build-efa3a807a677/output/arm64-apple-darwin/SHA256SUMS.part
  602a417bfa7971fb26d0fe9921d2348fd0d01a5bcf0af93f8a9d50112076e0eb  guix-build-efa3a807a677/output/arm64-apple-darwin/bitcoin-efa3a807a677-arm64-apple-darwin-unsigned.dmg
  0dcb197420844da8da3f528a1d986628f7b63adb1e83353d63e8a84da59abc42  guix-build-efa3a807a677/output/arm64-apple-darwin/bitcoin-efa3a807a677-arm64-apple-darwin-unsigned.tar.gz
  10efdd33418234a8288c27a614f50e9ff45efbd681fa1c0e173142b6d267cdb8  guix-build-efa3a807a677/output/arm64-apple-darwin/bitcoin-efa3a807a677-arm64-apple-darwin.tar.gz
  e5ef02adeb9bcb4675972b0dc233a904006b0940d721049eeb94b14cda34872e  guix-build-efa3a807a677/output/dist-archive/bitcoin-efa3a807a677.tar.gz
  a75d2a49b7a8ab1c849e1badff5049a417519f0154b65335a8717d01b8b6ed62  guix-build-efa3a807a677/output/powerpc64-linux-gnu/SHA256SUMS.part
  aef63d196487dd0bc597fd53633ac889149f1a126c651ea55f3bec11a092c460  guix-build-efa3a807a677/output/powerpc64-linux-gnu/bitcoin-efa3a807a677-powerpc64-linux-gnu-debug.tar.gz
  ddc7913eed26270be271a8712bf351d562d57c746810ea3b7b4101aea8cb6d89  guix-build-efa3a807a677/output/powerpc64-linux-gnu/bitcoin-efa3a807a677-powerpc64-linux-gnu.tar.gz
  83bbf4b1af07a2cf7d6014de7c885f0998dd38afacdb5242f5f56505ee704f17  guix-build-efa3a807a677/output/powerpc64le-linux-gnu/SHA256SUMS.part
  c9d5d95de98ed987b63a78d4f6e082cb36d5ec3ba71d130601e03d3ebfbd208d  guix-build-efa3a807a677/output/powerpc64le-linux-gnu/bitcoin-efa3a807a677-powerpc64le-linux-gnu-debug.tar.gz
  88ed6ec82dd4c1c656fe80b4c49f91a4c15c2ab798dbbe16a3d57393f17d6f3a  guix-build-efa3a807a677/output/powerpc64le-linux-gnu/bitcoin-efa3a807a677-powerpc64le-linux-gnu.tar.gz
  7b8e7b3b1e68a2ea0e37c058b284da11e9721ef4d1bc2761ed003b2061358d5f  guix-build-efa3a807a677/output/riscv64-linux-gnu/SHA256SUMS.part
  a5de4bedf2b4bc5ab25db21b942076897cabe8a40ce9b0637488af6b4d90693a  guix-build-efa3a807a677/output/riscv64-linux-gnu/bitcoin-efa3a807a677-riscv64-linux-gnu-debug.tar.gz
  53023994202887778a001ce00daf7cdc135b9e6c3be034f31645ab4ba5f078c6  guix-build-efa3a807a677/output/riscv64-linux-gnu/bitcoin-efa3a807a677-riscv64-linux-gnu.tar.gz
  c6664a61b81dfa080c466d2252a6db70165acbea6cfad51ada16970e9c08bb6f  guix-build-efa3a807a677/output/x86_64-apple-darwin/SHA256SUMS.part
  a528569ae4bf5e19401311649086a2d8e3fa5251b44550e623722968dfb111ea  guix-build-efa3a807a677/output/x86_64-apple-darwin/bitcoin-efa3a807a677-x86_64-apple-darwin-unsigned.dmg
  9b0384cce7605b546ed581074955f2b9c33cf0817453842036e6224b423b814b  guix-build-efa3a807a677/output/x86_64-apple-darwin/bitcoin-efa3a807a677-x86_64-apple-darwin-unsigned.tar.gz
  ebdbd2f3a6406233f27ee48be0ab014991fedba3c0831f79f4a4873f7abf3d7a  guix-build-efa3a807a677/output/x86_64-apple-darwin/bitcoin-efa3a807a677-x86_64-apple-darwin.tar.gz
  05a8f71fe67f7193e71ea8bbe6f8df2e651b8ac7da3075ba25aacdd3515f7757  guix-build-efa3a807a677/output/x86_64-linux-gnu/SHA256SUMS.part
  30a17a1e3d795ea390cd1e0f3ef74c989b5768ae7415740fcca46befe4cb7206  guix-build-efa3a807a677/output/x86_64-linux-gnu/bitcoin-efa3a807a677-x86_64-linux-gnu-debug.tar.gz
  66db846f3fd739089afa5c339659dbf5efb50572f2d29f8288bf24be9e8f1dd0  guix-build-efa3a807a677/output/x86_64-linux-gnu/bitcoin-efa3a807a677-x86_64-linux-gnu.tar.gz
  bd3c44890823badcf6d296fa674de14275684be7593f4ab21c0316873ddd8652  guix-build-efa3a807a677/output/x86_64-w64-mingw32/SHA256SUMS.part
  6ce3ee21212ff2a95e085073a48194476ade2d5ff94cc1c8ec58a8ae7db8f1fa  guix-build-efa3a807a677/output/x86_64-w64-mingw32/bitcoin-efa3a807a677-win64-debug.zip
  5e697c05537cfb2ce2ed95fef25e261e2cfa83a31fd548a98118580c4bbff2e4  guix-build-efa3a807a677/output/x86_64-w64-mingw32/bitcoin-efa3a807a677-win64-setup-unsigned.exe
  4cc2bcff98845c792c0ed12a2ea407b25fb85b2d4250d88dca94ed68f42e714d  guix-build-efa3a807a677/output/x86_64-w64-mingw32/bitcoin-efa3a807a677-win64-unsigned.tar.gz
  9d5d72271dc6b820e63b30c5c3f9015309777793100b4e2b6ab0c8ea0f7b4aed  guix-build-efa3a807a677/output/x86_64-w64-mingw32/bitcoin-efa3a807a677-win64.zip
  ```

ACKs for top commit:
  laanwj:
    Tested ACK efa3a807a6. I get the same build output as in OP:
  vincenzopalazzo:
    Re ACK efa3a807a6

Tree-SHA512: 6d35c11fc307221d61ad250bbdcdc09dbc49adbe43f7a94acb56190ae9f005d23fc22941ea59e3eb62811f8974e39d3617e0c47071232d4b1b0bc2e2e2782e88
2022-05-05 09:36:26 +01:00
Luke Dashjr
7fd0860d12 Bugfix: configure: Define defaults for enable_arm_{crc,shani} 2022-05-02 02:31:32 +00:00
laanwj
8730bd3fc8
Merge bitcoin/bitcoin#24958: build: Fix macOS Apple M1 build with miniupnpc and libnatpmp. Again :)
165903406e build: Fix `AC_CHECK_HEADERS` and `AC_CHECK_LIB` for `libnatpmp` package (Hennadii Stepanov)
65cddf604c build: Fix `AC_CHECK_HEADERS` and `AC_CHECK_LIB` for `miniupnpc` package (Hennadii Stepanov)
bbbcb96638 build, refactor: Fix indentation (Hennadii Stepanov)

Pull request description:

  Apparently, bitcoin/bitcoin#24391 broke the [ability](https://github.com/bitcoin/bitcoin/pull/22397) of the `configure` script to pick up Homebrew's `miniupnpc` and `libnatpmp` packages on macOS Apple M1.

  This PR fixes it.

ACKs for top commit:
  promag:
    Tested ACK 165903406e
  jarolrod:
    tACK 165903406e

Tree-SHA512: 93988f59f425890d60582b93d4ac5b2ad03011a5c6dbb44678a3ca591da7518c1c741bc1045b2c763bbe887947f32293b38d55fd7a96f09d2092ad34baa1db21
2022-04-28 19:26:46 +02:00
fanquake
dd17c42a16
Merge bitcoin/bitcoin#24322: [kernel 1/n] Introduce initial libbitcoinkernel
035fa1f07a build: Remove LIBTOOL_APP_LDFLAGS for bitcoin-chainstate (Cory Fields)
3f0595095d docs: Add libbitcoinkernel_la_SOURCES explanation (Carl Dong)
94ad45deb2 ci: Build libbitcoinkernel (Carl Dong)
26b2e7ffb3 build: Extract the libbitcoinkernel library (Carl Dong)
1df44dd20c b-cs: Define G_TRANSLATION_FUN in bitcoinkernel.cpp (Carl Dong)
83a0bb7cc9 build: Separate lib_LTLIBRARIES initialization (Carl Dong)
c1e16cb31f build: Create .la library for bitcoincrypto (Carl Dong)
8bdfe057c7 build: Create .la library for leveldb (Carl Dong)
05d1525b6d build: Create .la library for crc32c (Carl Dong)
64caf94479 build: Remove vestigial LIBLEVELDB_SSE42 (Carl Dong)
1392e8e2d8 build: Don't add unrelated libs to LIBTEST_* (Carl Dong)

Pull request description:

  Part of: #24303

  This PR introduces a `libbitcoinkernel` static library linking in the minimal list of files necessary to use our consensus engine as-is. `bitcoin-chainstate` introduced in #24304 now will link against `libbitcoinkernel`.

  Most of the changes are related to the build system.

  Please read the commit messages for more details.

ACKs for top commit:
  theuni:
    This may be my favorite PR ever. It's a privilege to ACK 035fa1f07a.

Tree-SHA512: b755edc3471c7c1098847e9b16ab182a6abb7582563d9da516de376a770ac7543c6fdb24238ddd4d3d2d458f905a0c0614b8667aab182aa7e6b80c1cca7090bc
2022-04-28 15:14:32 +01:00
MacroFake
9446de160f
Merge bitcoin/bitcoin#24831: tidy: add include-what-you-use
9b0a13a289 tidy: Add include-what-you-use (fanquake)
74cd038e30 refactor: fix includes in src/init (fanquake)
c79ad935f0 refactor: fix includes in src/compat (fanquake)

Pull request description:

  We recently added a [`clang-tidy` job](https://github.com/bitcoin/bitcoin/blob/master/ci/test/00_setup_env_native_tidy.sh) to the CI, which generates a compilation database. We can leverage that now existing database to begin running [include-what-you-use](https://include-what-you-use.org/) over the codebase.

  This PR demonstrates using a mapping_file to indicate fixups / includes that may differ from IWYU suggestions. In this case, I've added some fixups for glibc includes that I've [upstreamed changes for](https://github.com/include-what-you-use/include-what-you-use/pull/1026):
  ```bash
  # Fixups / upstreamed changes
  [
    { include: [ "<bits/termios-c_lflag.h>", private, "<termios.h>", public ] },
    { include: [ "<bits/termios-struct.h>", private, "<termios.h>", public ] },
    { include: [ "<bits/termios-tcflow.h>", private, "<termios.h>", public ] },
  ]
  ```

  The include "fixing" commits of this PR:
  * Adds missing includes.
  * Swaps C headers for their C++ counterparts.
  * Removes the pointless / unmaintainable `//for abc, xyz` comments. When using IWYU, if anyone wants to see / generate those comments, to see why something is included, it is trivial to do so (IWYU outputs them by default). i.e:
  ```cpp
  // The full include-list for compat/stdin.cpp:
  #include <compat/stdin.h>
  #include <poll.h>                  // for poll, pollfd, POLLIN
  #include <termios.h>               // for tcgetattr, tcsetattr
  #include <unistd.h>                // for isatty, STDIN_FILENO
  ```

  TODO:
  - [ ] Qt mapping_file. There is one in the IWYU repo, but it's for Qt 5.11. Needs testing.
  - [ ] Boost mapping_file. There is one in the IWYU repo, but it's for Boost 1.75. Needs testing.

  I'm not suggesting we turn this on the for entire codebase, or immediately go-nuts refactoring all includes. However I think our dependency includes are now slim enough, and our CI infrastructure in place such that we can start doing this in some capacity, and just automate away include fixups / refactorings etc.

ACKs for top commit:
  MarcoFalke:
    review ACK 9b0a13a289
  jonatack:
    ACK 9b0a13a289 reviewed changes and run CI output in https://cirrus-ci.com/task/4750910332076032

Tree-SHA512: 00beab5a5f2a6fc179abf08321a15391ecccaa91ab56f3c50c511e7b29a0d7c95d8bb43eac2c31489711086f6f77319d43d803cf8ea458e7cd234a780d9ae69e
2022-04-28 10:06:26 +02:00