Commit Graph
100 Commits
Author SHA1 Message Date
Cory Fields 0626b90f50 multiprocess: align our logging with libmultiprocess's
Without this change, logging (even if unused) may account for a
substantial portion of bitcoin-node's and/or client's runtime cpu usage, due
to libmultiprocess's expensive message serialization.

This (along with some recent upstream changes) avoids the overhead by opting
out of log handling for messages that we're not interested in.

Info, Warning, and Error are logged unconditionally to match our behavior
elsewhere. See BCLog::Logger::GetCategoryLogLevel .
2025-10-10 21:20:50 +00:00
Cory Fields 9d068225ee multiprocess: update multiprocess EventLoop construction to use options
This uses the constructors recently added upstream.
2025-10-10 21:20:50 +00:00
Cory Fields 46ca7712cb threading: remove unused template instantiations
These were only required for the ENTER_CRITICAL_SECTION macro.
2025-08-22 14:25:39 +00:00
Cory Fields b537a6a6db threading: remove obsolete critsect macros 2025-08-22 14:25:39 +00:00
Cory Fields 0d0e0a39b4 threading: use a reverse lock rather than manual critsect macros
No functional change.
2025-08-22 14:25:39 +00:00
Cory Fields 3ddd554d31 tests: Add Assertions in reverse_lock tests to exercise thread-safety annotations 2025-08-22 14:25:39 +00:00
Cory Fields c88b1cbf57 tests: get rid of remaining manual critsect usage 2025-08-22 14:25:39 +00:00
Cory Fields 9954d6c833 depends: hard-code necessary c(xx)flags rather than setting them per-host
The per-host flag variables hold platform-specific defaults that are ignored
when flag environment variables are set, so it was wrong for them to contain
-std options relied on by package definitions.

Additionally, these flags (-pipe and -std=xx) will no longer be passed into
the CMake build, meaning less duplication in the build summary.

Pulled out of #31920.
2025-07-29 11:13:39 +01:00
Cory Fields fdbade6f8d kernel: create monolithic kernel static library 2025-07-28 10:37:42 +01:00
Cory Fields de4eef52d1 threading: use correct mutex name in reverse_lock fatal error messages
Now that REVERSE_LOCK requires the name of the actual mutex, it can be used for
better error messages.
2025-07-07 10:34:05 -04:00
Cory FieldsandHennadii Stepanov 6c2538d5bf depends: Bump boost to 1.88.0 and use new CMake buildsystem
This has a few advantages over the old method of simply copying headers:
- Installs proper cmake files which can be picked up by our buildsystem
- Only installs necessary headers, not all of boost

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2025-06-25 13:37:50 +01:00
Cory Fields a201a99f8c thread-safety: fix annotations with REVERSE_LOCK
Without proper annotations, clang thinks that mutexes are still held for the
duration of a reverse_lock. This could lead to subtle bugs as
EXCLUSIVE_LOCKS_REQUIRED(foo) passes when it shouldn't.

As mentioned in the docs [0], clang's thread-safety analyzer is unable to deal
with aliases of mutexes, so it is not possible to use the lock's copy of the
mutex for that purpose. Instead, the original mutex needs to be passed back to
the reverse_lock for the sake of thread-safety analysis, but it is not actually
used otherwise.

[0]: https://clang.llvm.org/docs/ThreadSafetyAnalysis.html
2025-06-16 18:09:14 +00:00
Cory Fields 6efbd1e1dc refactor: CTransaction equality should consider witness data
It is not at all obvious that two transactions with differing witness data
should test equal to each other.

There was only a single instance of a caller relying on this behavior, and that
one appears accidental (left-over from before segwit). That caller (in the
wallet) has been fixed.

Change the definition of transaction equality (and inequality) to use the wtxid
instead.
2025-06-10 22:10:05 +00:00
Cory Fieldsandglozow cbf9b2dab1 mempool: codify existing assumption about duplicate txids during removal
Also explicitly check for txid equality rather than transaction equality as the
former is a tighter constraint if witness data is included when comparing the
full transactions.

Co-authored-by: glozow <gloriajzhao@gmail.com>
2025-06-10 22:10:05 +00:00
Cory Fields e9331cd6ab wallet: IsEquivalentTo should strip witness data in addition to scriptsigs 2025-06-10 21:25:14 +00:00
Cory FieldsandRyan Ofsky fd290730f5 validation: clean up and clarify CheckInputScripts logic
CheckInputScripts behaves differently depending on whether or not it was called
with a vector for checks. Make this difference clear by calling it differently
depending on whether or not control exists. Though more verbose, it should be
more straightforward to understand what's happening this way.

Also remove parallel_script_checks, as `if(control)` is a better test.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2025-05-20 18:24:34 +00:00
Cory FieldsandRyan Ofsky 1a37507895 validation: use a lock for CCheckQueueControl
Uses an RAII lock for the exact same behavior as the old critical sections.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
2025-05-19 22:06:48 +00:00
Cory Fields c3b0e6c7f4 validation: make CCheckQueueControl's CCheckQueue non-optional
This simplifies the construction logic and will allow the constructor and
destructor to lock and unlock uncondiationally.
2025-05-19 22:06:48 +00:00
Cory Fields 4c8c90b556 validation: only create a CCheckQueueControl if it's actually going to be used
This will allow CCheckQueueControl to require a CCheckQueue.
2025-05-19 22:06:48 +00:00
Cory Fields 11fed833b3 threading: add LOCK_ARGS macro
This is useful for initializing locks in a constructor.
2025-05-19 21:59:43 +00:00
Cory Fields 6f7052a7b9 threading: semaphore: move CountingSemaphoreGrant to its own header 2025-05-10 03:31:30 +00:00
Cory Fields fd15469892 threading: semaphore: remove temporary convenience types 2025-05-10 00:53:16 +00:00
Cory Fields 1f89e2a49a scripted-diff: threading: semaphore: use direct types rather than the temporary convenience ones
-BEGIN VERIFY SCRIPT-
sed -i 's|BinarySemaphore|std::binary_semaphore|g' src/wallet/sqlite.h
sed -i 's|SemaphoreGrant|CountingGrant|g' src/net.h src/net.cpp
sed -i 's|Semaphore|std::counting_semaphore<>|g' src/net.h src/net.cpp
sed -i 's|CountingGrant|CountingSemaphoreGrant<>|g' src/net.h src/net.cpp

-END VERIFY SCRIPT-
2025-05-10 00:53:16 +00:00
Cory Fields f21365c4fc threading: replace CountingSemaphore with std::counting_semaphore 2025-05-10 00:53:16 +00:00
Cory Fields 1acacfbad7 threading: make CountingSemaphore/CountingSemaphoreGrant template types 2025-05-10 00:53:16 +00:00
Cory Fields e6ce5f9e78 scripted-diff: rename CSemaphore and CSemaphoreGrant
CountingSemaphore and CountingSemaphoreGrant model std::counting_semaphore.

-BEGIN VERIFY SCRIPT-
sed -i -e 's|CSemaphoreGrant|CountingSemaphoreGrant|g' -e 's|CSemaphore|CountingSemaphore|g' src/sync.h
-END VERIFY SCRIPT-
2025-05-10 00:53:16 +00:00
Cory Fields 793166d381 wallet: change the write semaphore to a BinarySemaphore
Follow-up commits will make a distinction between Semaphore and
BinarySemaphore.
2025-05-10 00:53:16 +00:00
Cory Fields 6790ad27f1 scripted-diff: rename CSemaphoreGrant and CSemaphore for net
-BEGIN VERIFY SCRIPT-
sed -i -e 's|CSemaphoreGrant|SemaphoreGrant|g' -e 's|CSemaphore|Semaphore|g' src/net.h src/net.cpp
-END VERIFY SCRIPT-
2025-05-10 00:53:16 +00:00
Cory Fields d870bc9451 threading: add temporary semaphore aliases 2025-05-10 00:53:00 +00:00
Cory Fields aeea5f0ec1 thread-safety: add missing lock annotation
No warning is currently emitted because our reverse_lock does not enforce our
thread-safety annotations. Once it is fixed, the unlock would cause a warning.
2025-05-08 20:14:00 +00:00
Cory Fields 832c57a534 thread-safety: modernize thread safety macros
Clang added new "capability"-based thread-safety attributes years ago, but the
old ones remain supported for backwards-compatibility.

However, while adding annotations for our reverse_lock, I noticed that there
is a difference between the unlock_function and release_capability attributes.

unlock_function actually maps to release_generic_capability, which does not
work properly when implementing a scoped unlocker.

To be consistent, the other capability-based attributes are updated here as
well. To avoid having to update our macro usage throughout the codebase, I
reused our existing ones.

Additionally, SHARED_UNLOCK_FUNCTION is added here, as a subsequent PR will
introduce annotations for shared_mutex and shared_lock.
2025-05-08 20:13:46 +00:00
Cory Fields 7b816c4e00 threading: rename CSemaphore methods to match std::semaphore 2025-05-08 18:42:09 +00:00
Cory FieldsandHennadii Stepanov babb9f5db6 depends: remove non-native libmultiprocess build
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2025-04-02 13:41:16 +00:00
Cory Fields 9b033bebb1 cmake: rename Kernel component to bitcoinkernel for consistency 2025-02-13 18:25:58 +00:00
Cory Fields 2e0c92558e cmake: add and use install_binary_component
Add a separate component for each binary for fine-grained installation options.

Also install the man pages for only for the targets enabled.
2025-02-13 18:14:41 +00:00
Cory Fields 0264c5d86c cmake: use per-target components for bitcoin-qt and bitcoin-gui
This makes the usage consistent with the next commit, which will add a
per-target component for each binary.
2025-02-11 22:52:58 +00:00
Cory Fields fb0546b1c5 ci: don't try to install for a fuzz build
Currently the manpages are installed, but that is a bug. An upcoming commit
will avoid installing manpages for targets that aren't configured, which
removes the "install" target for fuzz builds.
2025-02-11 22:50:16 +00:00
Cory FieldsandHennadii Stepanov 56a9b847bb build: set build type and per-build-type flags as early as possible
With the exception of the first c++ checks, this ensures that compiler tests
are never run with the wrong build type's flags.

Co-Authored-By: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2025-02-10 21:51:22 +00:00
Cory Fields f605f7a9c2 build: refactor: set debug definitions in main CMakeLists
No functional change. This is a simple move required the next commit.
2025-02-06 20:21:37 +00:00
Cory Fields 12fa9511b5 build: simplify dependency graph
Allow the objects of static libs to be built in parallel rather than serially
based on their dependency ordering.

For more detail, see:
https://cmake.org/cmake/help/latest/prop_tgt/OPTIMIZE_DEPENDENCIES.html
2025-01-31 15:07:44 +00:00
Cory Fields c4e498300c build: avoid unnecessary dependencies on generated headers
This prevents the generation of these headers from also depending on the
dependencies of the libs/binaries which consume them.

Specifically, this prevents generated test headers (such as
test/data/base58_encode_decode.json.h) from depending on the
dependencies of test_bitcoin (libcrc32c.a libcrc32c_sse42.a libleveldb.a)

Note that this is currently only relevant for Ninja.

For more detail, see:
https://cmake.org/cmake/help/latest/command/add_custom_command.html
2025-01-31 15:07:23 +00:00
Cory Fields 2656a5658c tests: add a test for the new blocksdir lock 2025-01-16 21:06:21 +00:00
Cory Fields bdc0a68e67 init: lock blocksdir in addition to datadir
This guards against 2 processes running with separate datadirs but the same
blocksdir.

It's not likely to happen currently, but may be more relevant in the future
with applications using the kernel.

Note that the kernel does not currently do any dir locking, but it should.
2025-01-16 21:06:21 +00:00
Cory Fields cabb2e5c24 refactor: introduce a more general LockDirectories for init
No functional change. This is in preparation for adding additional directory
locks on startup.
2025-01-16 21:06:21 +00:00
Cory Fields 1db331ba76 init: allow a new xor key to be written if the blocksdir is newly created
A subsequent commit will add a .lock file to this dir at startup, meaning that
the blocksdir is never empty by the time the xor key is being read/written.

Ignore all hidden files when determining if this is the first run.
2025-01-16 21:06:21 +00:00
Cory Fields 915640e191 depends: zeromq: don't install .pc files and remove patches for them 2024-10-25 18:11:43 +01:00
Cory Fields ca2e4ba352 refactor: include the proper header rather than forward-declaring RemovalReasonToString
This was not in its own header when it was added, but now that it is the
forward-declare makes no sense.
2024-10-08 15:25:47 +00:00
Cory Fields 2957ca9611 build: have "make test" depend on "make all" 2024-10-01 18:42:14 +00:00
Cory Fields ccd10fdb97 build: Add missing USDT header dependency to kernel 2024-09-25 16:03:22 +00:00
Cory Fields d318c4ef56 depends: bump libmultiprocess for CMake fixes 2024-07-19 18:32:56 +00:00
Cory Fieldsandfanquake 0388ad0d65 depends: switch zmq to CMake
The CMake WIN32_WINNT autodetection is broken, and must be set
manually. We may want to set is explicitly in any case, but the
brokenness should also be fixed upstream.

Also patch out depends paths, that would cause non-determinism.

Co-authored-by: fanquake <fanquake@gmail.com>
2024-07-19 13:38:21 +01:00
Cory Fields 9010b1343b contrib: c++ify test stubs after switching to c++ compilers 2024-07-11 17:29:06 +00:00
Cory Fields 261f770333 contrib: rename cc to cxx in binary checking scripts 2024-07-04 20:16:16 +00:00
Cory Fields a38c960005 contrib: use c++ rather than c for binary tests
We don't actually use a c compiler as part of Core's build (only for secp).
We should be testing against what we're actually using instead.
2024-07-04 20:16:16 +00:00
Cory Fields f1478c0545 mempool: move LoadMempool/DumpMempool to node 2024-06-26 22:47:09 +00:00
Cory Fields 6d242ff1e9 kernel: remove mempool_persist.cpp
DumpMempool/LoadMempool are not necessary for the kernel
2024-06-26 18:58:54 +00:00
Cory Fields f59e9057e2 depends: switch libevent to CMake 2024-06-25 16:05:40 +01:00
Cory Fields 5729dbbb74 refactor: remove extraneous lock annotations from function definitions
These annotations belong in the declarations rather than the definitions.
While harmless now, future versions of clang may warn about these.
2024-06-20 18:45:32 +00:00
Cory Fields 8acdf66540 upnp: add compatibility for miniupnpc 2.2.8
See: https://github.com/miniupnp/miniupnp/commit/c0a50ce33e3b99ce8a96fd43049bb5b53ffac62f

The return value of 2 now indicates:
"A valid connected IGD has been found but its IP address is reserved (non routable)"

We continue to ignore any return value other than 1.
2024-06-18 12:24:48 +00:00
Cory Fields 26a7f70b5d ci: enable self-assignment clang-tidy check 2024-06-14 10:27:03 +00:00
Cory Fields 32b1d13792 refactor: add self-assign checks to classes which violate the clang-tidy check
Both of these cases appear to be harmless, but adding the tests allows us to
turn on the aggressive clang-tidy checks.
2024-06-14 10:27:03 +00:00
Cory Fields f51da34ec1 utils: add missing include
Noticed when testing VecDeque with no other includes.

For libc++, need type_traits for std::is_trivially_destructible_v.
2024-06-11 16:28:11 +00:00
Cory Fields 15796d4b61 build: warn on self-assignment
Belt-and suspenders after #30234. Self-assignment should be safe _and_
discouraged.

We used to opt out of this warning because something deep in our
serialization/byteswapping code could self-assign, but that doesn't appear to
be the case anymore.
2024-06-06 14:14:34 +00:00
Cory Fields 53372f2176 refactor: disable self-assign warning for tests
clang-16 and earlier detect "foo -= foo" and "foo /= foo" as self-assignments.
2024-06-06 14:14:08 +00:00
Cory Fields c3a5e8a063 build: re-enable deprecated warning copy
This was disabled in #18738 due to the combo of old gcc and qt, neither of
which are relevant to us anymore.
2024-06-05 21:06:44 +00:00
Cory Fields a3cb309e7c refactor: use recommended type hiding on multi_index types
Recommended by boost docs:
https://www.boost.org/doc/libs/1_85_0/libs/multi_index/doc/compiler_specifics.html#type_hiding

This significantly reduces the size of the symbol name lengths that end up in
the binaries as well as in compiler warnings/errors. Otherwise there should be
no functional change.

Example before:
0000000000000000 W unsigned long boost::multi_index::detail::hashed_index<mempoolentry_txid, SaltedTxidHasher, std::equal_to<uint256>, boost::multi_index::detail::nth_layer<1, CTxMemPoolEntry, boost::multi_index::indexed_by<boost::multi_index::hashed_unique<mempoolentry_txid, SaltedTxidHasher, mpl_::na, mpl_::na>, boost::multi_index::hashed_unique<boost::multi_index::tag<index_by_wtxid, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, mempoolentry_wtxid, SaltedTxidHasher, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<descendant_score, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<CTxMemPoolEntry>, CompareTxMemPoolEntryByDescendantScore>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<entry_time, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<CTxMemPoolEntry>, CompareTxMemPoolEntryByEntryTime>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<ancestor_score, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<CTxMemPoolEntry>, CompareTxMemPoolEntryByAncestorFee>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<CTxMemPoolEntry> >, boost::mpl::vector0<mpl_::na>, boost::multi_index::detail::hashed_unique_tag>::count<uint256, SaltedTxidHasher, std::equal_to<uint256> >(uint256 const&, SaltedTxidHasher const&, std::equal_to<uint256> const&, mpl_::bool_<false>) const

After:
0000000000000000 W unsigned long boost::multi_index::detail::hashed_index<mempoolentry_txid, SaltedTxidHasher, std::equal_to<uint256>, boost::multi_index::detail::nth_layer<1, CTxMemPoolEntry, CTxMemPool::CTxMemPoolEntry_Indicies, std::allocator<CTxMemPoolEntry> >, boost::mpl::vector0<mpl_::na>, boost::multi_index::detail::hashed_unique_tag>::count<uint256, SaltedTxidHasher, std::equal_to<uint256> >(uint256 const&, SaltedTxidHasher const&, std::equal_to<uint256> const&, mpl_::bool_<false>) const
2024-05-29 20:43:50 +00:00
Cory Fields 34c9cee380 clang-tidy: add check for non-trivial thread_local vars
Do not allow thread_local vars with non-trivial destructors
2024-05-22 13:47:09 +00:00
Cory Fields d7707d9843 rpc: avoid copying into UniValue
These are simple (and hopefully obviously correct) copies that can be moves
instead.
2024-05-20 16:48:19 +00:00
Cory Fields 141df0a288 crypto: disable asan for sha256_sse4 with clang and -O0
Clang is unable to compile the Transform function for that combination of
options.
2024-05-15 13:50:25 +00:00
3c2d440f14 depends: switch miniupnpc to CMake
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Co-authored-by: fanquake <fanquake@gmail.com>
2024-04-30 12:53:44 +08: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
Cory FieldsandHennadii Stepanov 3c1ae3ee33 depends: switch libnatpmp to CMake
Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2024-04-05 15:20:14 +01:00
Cory Fields f8a06f7a02 doc: remove references to disable-asm option now that it's gone
The comment about sha256_sse4::Transform is believed to be old and stale.
2024-02-29 19:10:31 +00: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
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
Cory Fields 297367b3bb crypto: replace CountBits with std::bit_width
bit_width is a drop-in replacement with an exact meaning in c++, so there is
no need to continue testing/fuzzing/benchmarking.
2024-02-26 16:13:12 +00:00
Cory Fields 52f9bba889 crypto: replace non-standard CLZ builtins with c++20's bit_width
Also some header cleanups.
2024-02-26 16:13:12 +00:00
Cory Fields 25dc87e6f8 libconsensus: deprecate
This library has existed for nearly 10 years with very little known uptake or
impact. It has become a maintenance burden. In several cases it dictates our
code/library structure (for example necessitating LIBBITCOIN_CRYPTO_BASE), as
well as build-system procedures (building multiple copies of object files
especially for the lib).

Several discussions have arisen wrt migrating it to CMake and it has become
difficult to justify adding more complexity for a library that is virtually
unused anyway.

See for example the discussions:
https://github.com/hebasto/bitcoin/pull/41
https://github.com/bitcoin/bitcoin/pull/29123

Instead, we (fanquake, hebasto, TheCharlatan, and I) propose simply not
migrating it to CMake and letting it end with v27. Any remaining use-cases
could be handled in the future by libbitcoinkernel.
2024-01-30 23:19:02 +00:00
Cory Fields 5b9d5bf866 depends: remove (darwin) libtool now that it's no longer used
Note that this is completely unrelated to gnu usage of libtool.
2024-01-26 19:52:52 +00:00
Cory Fields 3ef6563495 depends: use ar rather than libtool for miniupnpc/libnatpmp 2024-01-26 19:12:45 +00:00
Cory Fields bbf218d061 crypto: remove sha256_sse4 from the base crypto helper lib
It was unused there and a confusing outlier.
2024-01-05 17:09:14 +00:00
Cory Fields 4dbd0475d8 crypto: remove use of BUILD_BITCOIN_INTERNAL macro in sha256
Replace it with a more explicit DISABLE_OPTIMIZED_SHA256 and clean up some.

The macro was originally used by libbitcoinconsensus which opts out of
optimized sha256 for the sake of simplicity.

Also remove the BUILD_BITCOIN_INTERNAL define from libbitcoinkernel for now
as it does not export an api. When it does we can pick a less confusing define
to control its exports.

Removing the define should have the effect of enabling sha256 optimizations
for the kernel.
2024-01-05 12:31:33 +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
Cory Fields e73d2a8018 refactor: remove clientversion include from dbwrapper.h 2023-09-08 13:40:15 +00:00
Cory Fields 4240a082b8 refactor: Use DataStream now that version/type are unused 2023-09-08 13:40:15 +00:00
Cory Fields f15f790618 Remove version/hashing options from CBlockLocator/CDiskBlockIndex 2023-09-08 13:40:15 +00:00
Cory Fields bb3263d3e3 bitcoin-tidy: fix macOS build
LLVM uses these options for building as well, so there's precedent.

Also fix the shared library extension which was incorrectly being set to dylib
2023-08-10 21:14:50 +00:00
Cory Fields 8b5397c00e wallet: bdb: include bdb header from our implementation files only
This way the dependency can't sneak into other files without being noticed.

Forward-declare bdb classes as necessary.
2023-07-07 14:14:20 +00:00
Cory Fields 6e010626af wallet: bdb: don't use bdb define in header 2023-07-07 14:14:20 +00:00
Cory Fields 004b184b02 wallet: bdb: move BerkeleyDatabase constructor to cpp file
Else some compilers/stdlibs may not be able to construct
std::unique_ptr<Db> without Db defined.
2023-07-07 14:14:20 +00:00
Cory Fields b3582baa3a wallet: bdb: move SafeDbt to cpp file
Dbt requires including bdb headers.
2023-07-07 14:14:20 +00:00
Cory Fields e5e5aa1da2 wallet: bdb: move SpanFromDbt to below SafeDbt's implementation
No functional change, just simplifies the code move in the next commit.
2023-07-07 14:14:20 +00:00
Cory Fields 4216f69250 wallet: bdb: move TxnBegin to cpp file since it uses a bdb function 2023-07-06 20:16:55 +00:00
Cory Fields 43369f3706 wallet: bdb: drop default parameter 2023-07-06 20:16:53 +00:00
Cory Fields bea9fc2600 wallet: sqlite: force sqlite3.h to be included by the cpp files
This way sqlite usage is explicit.
2023-07-06 19:53:44 +00: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
Cory Fields fb61bc0c02 depends: Bump MacOS minimum runtime requirement to 11.0
This is necessary as the new fixup_chains linker behavior is only valid
when the runtime target is >=11.0.
2023-06-22 15:28:47 +00:00
Cory Fields c2cd47280c depends: bump darwin clang to 11.1
Unfortunately clang 10 does not understand "-mmacosx-version-min=11.0",
as it expects to see only 10.x.

Bump minimally to 11.1 to fix that problem. This will likely be our last
binary toolchain bump, as it will soon be replaced with usage of upstream
vanilla llvm.
2023-06-22 15:28:47 +00:00