aboutsummaryrefslogtreecommitdiff
path: root/build_msvc
AgeCommit message (Collapse)Author
2024-03-18remove libbitcoinconsensusfanquake
This was deprecated in v27.0, for removal in v28.0. See discussion in PR #29189.
2024-03-08build, msvc: Cleanup `bitcoin_config.h.in`Hennadii Stepanov
This change mirrors changes from https://github.com/bitcoin/bitcoin/pull/29263.
2024-03-01build, msvc: Do not compile redundant sourcesHennadii Stepanov
The `test\util\setup_common.cpp` and `wallet\test\util.cpp` sources are already compiled and included in the `libtest_util` library, which is linked to the `test_bitcoin-qt.exe` binary. This change follows the same logic as `Makefile.qttest.include`.
2024-01-23Merge bitcoin/bitcoin#28921: multiprocess: Add basic type conversion hooksAva Chow
6acec6b9ff02b91de132bb1575d75908a8a2d27b multiprocess: Add type conversion code for UniValue types (Ryan Ofsky) 0cc74fce72e0c79849109ee5d7afe707991b3512 multiprocess: Add type conversion code for serializable types (Ryan Ofsky) 4aaee239211a5287fbc361c0eb158b105ae8c8db test: add ipc test to test multiprocess type conversion code (Ryan Ofsky) Pull request description: Add type conversion hooks to allow `UniValue` objects, and objects that have `CDataStream` `Serialize` and `Unserialize` methods to be used as arguments and return values in Cap'nProto interface methods. Also add unit test to verify the hooks are working and data can be round-tripped correctly. The non-test code in this PR was previously part of #10102 and has been split off for easier review, but the test code is new. --- This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722). ACKs for top commit: achow101: ACK 6acec6b9ff02b91de132bb1575d75908a8a2d27b dergoegge: reACK 6acec6b9ff02b91de132bb1575d75908a8a2d27b Tree-SHA512: 5d2cbc5215d488b876d34420adf91205dabf09b736183dcc85aa86255e3804c2bac5bab6792dacd585ef99a1d92cf29c8afb3eb65e4d953abc7ffe41994340c6
2023-12-13msvc: Fix `test\config.ini` contentHennadii Stepanov
2023-12-13Merge bitcoin/bitcoin#28967: build: disable external-signer for Windowsfanquake
308aec3e5655327d98e0428d8205d246f24d6af5 build: disable external-signer for Windows (fanquake) 35537318a19360ddf1ea8f0c1e6d8ad49e635516 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: https://github.com/boostorg/process/commit/0c42a58eacab6a96b19196e399307bad8a938a27. 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 308aec3e5655327d98e0428d8205d246f24d6af5. TheCharlatan: ACK 308aec3e5655327d98e0428d8205d246f24d6af5 Tree-SHA512: 7405f7fc9833eeaacd6836c4e5b1c1a7845a40c1fdd55c1060152f8d8189e4777464fde650e11eb1539556a75dddf49667105987078b1457493ee772945da66e
2023-12-11Merge bitcoin/bitcoin#29044: msvc: Define the same `QT_...` macros as in ↵fanquake
Autotools builds 1a5dae630df1eef9eac51557b2f1c5dba0924953 msvc: Define the same `QT_...` macros as in Autotools builds (Hennadii Stepanov) Pull request description: There are no reasons to have such a diversion. Also it fixes https://github.com/bitcoin/bitcoin/pull/28960#issuecomment-1847971114. ACKs for top commit: sipsorcery: tACK 1a5dae630df1eef9eac51557b2f1c5dba0924953. TheCharlatan: ACK 1a5dae630df1eef9eac51557b2f1c5dba0924953 Tree-SHA512: 75be5eabb8fec974b8d77a023c72323015a3d95fbc13b7fd85e5f25c250ae67850ddf0bcaef143828d75fe35a49e7c9b1966976b74f3ce7d14465174e6585ceb
2023-12-11Merge bitcoin/bitcoin#29045: msvc: Optimize "Release" buildsfanquake
6e0f1d2abbb700d4fd4b956a7d1f9505b653653c msvc: Optimize "Release" builds (Hennadii Stepanov) Pull request description: It is awkward not using optimization. In addition to the obvious benefits for Windows users, this PR reduces the duration of functional tests by an hour. Picked from https://github.com/bitcoin/bitcoin/pull/24773. ACKs for top commit: sipsorcery: tACK 6e0f1d2abbb700d4fd4b956a7d1f9505b653653c. Tree-SHA512: 5aa7fd38cb1a81d58ea3206756a8099891866c82a747d3b8079cab0b2afa1f40ba53adff2f32eb233efcd1227babee80ab175e35a83678fafa8a4f63c356e5ca
2023-12-10Add a note to msvc readme re building Qt for Bitcoin Core.Aaron Clauson
2023-12-09msvc: Define the same `QT_...` macros as in Autotools buildsHennadii Stepanov
2023-12-09msvc: Optimize "Release" buildsHennadii Stepanov
It is awkward not using optimization.
2023-12-01build: disable external-signer for Windowsfanquake
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-11-28test: add ipc test to test multiprocess type conversion codeRyan Ofsky
Add unit test to test IPC method calls and type conversion between bitcoin c++ types and capnproto messages. Right now there are custom type hooks in bitcoin IPC code, so the test is simple, but in upcoming commits, code will be added to convert bitcoin types to capnproto messages, and the test will be expanded.
2023-11-25msvc: Specify `boost-date-time` package explicitlyHennadii Stepanov
Compilation now succeeds only by coincidence, as the `boost-date-time` package is installed as a dependency of the `boost-process` one.
2023-11-25msvc: Update vcpkg manifest baseline up to "2023.08.09 Release"Hennadii Stepanov
Dependency changes (2023.01.09 --> 2023.08.09): - berkeleydb: 4.8.30#8 --> 4.8.30#9 - boost: 1.81.0 --> 1.82.0#2 - sqlite3: 3.40.0#1 --> 3.42.0#1 - zeromq: 4.3.4#6 --> 2023-06-20#1
2023-11-25msvc: No need to specify the default feature for `libevent` packageHennadii Stepanov
2023-11-05build: Drop no longer needed MSVC warning suppressionsHennadii Stepanov
2023-11-01build: Update `qt` package up to 5.15.11Hennadii Stepanov
2023-10-04build: Update qt package up to 5.15.10Hennadii Stepanov
2023-07-27Remove unused raw-pointer read helper from univalueMarcoFalke
2023-07-18build: adapt Windows builds for libsecp256k1 build changesfanquake
See https://github.com/bitcoin-core/secp256k1/pull/1367.
2023-06-23Enable ellswift module in libsecp256k1dhruv
2023-05-22Merge bitcoin/bitcoin#27696: build: Do not define `ENABLE_ZMQ` when ZMQ is ↵fanquake
not available fa5831bd6f940c4afb43ff625ba4fa6c641e999a 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 fa5831bd6f940c4afb43ff625ba4fa6c641e999a jarolrod: ACK fa5831bd6f940c4afb43ff625ba4fa6c641e999a Tree-SHA512: 5e72ff0d34c4b33205338daea0aae8d7aa0e48fd633e21af01af32b7ddb0532ef68dd3dd74deb2c1d2599691929617e8c09676bcbaaf7d669b88816f866f1db2
2023-05-19Merge bitcoin/bitcoin#27687: msvc: Provide `ObjectFileName` explicitlyfanquake
b8ed95127b23873db973b2ef4f68d9f04e9c23ae msvc: Provide `ObjectFileName` explicitly (Hennadii Stepanov) Pull request description: This PR is a follow-up to https://github.com/bitcoin/bitcoin/pull/26715. Fixes intermittent MSVC link [errors](https://cirrus-ci.com/task/6646912535756800). ACKs for top commit: sipsorcery: ACK b8ed95127b23873db973b2ef4f68d9f04e9c23ae. Tree-SHA512: 4319ecf61b578ce66d240998d089b9bb0a42f89dcfcb1a73f648cd3915f566c773721dcff1feba27d393a743d121334ccb890b1a519173e35a156d6135821ef4
2023-05-18Merge bitcoin/bitcoin#27615: msvc: Rename `libbitcoinconsensus` to ↵fanquake
`libbitcoin_consensus` and other adjustments a94d75fa81bab8f4695ab1756524e639af0ff69c msvc: Do not define `HAVE_CONSENSUS_LIB` (Hennadii Stepanov) cf6ff1031bd577c18fe8eb2dd168a6d0d1c16e0d msvc: Clean up `libbitcoin_consensus` source files (Hennadii Stepanov) 30aee016f15b43b90efb023d9bd04aa84cf58ade scripted-diff: Rename `libbitcoinconsensus` to `libbitcoin_consensus` (Hennadii Stepanov) Pull request description: The current Autotools-based build system operates with two build artifacts: - [`LIBBITCOIN_CONSENSUS`](https://github.com/bitcoin/bitcoin/blob/3777c75d147954b24f770dc7781b27870eadf775/src/Makefile.am#L31) which is [defined as](https://github.com/bitcoin/bitcoin/blob/master/doc/design/libraries.md) "Stable, backwards-compatible consensus functionality used by _libbitcoin_node_ and _libbitcoin_wallet_" - [`LIBBITCOINCONSENSUS`](https://github.com/bitcoin/bitcoin/blob/3777c75d147954b24f770dc7781b27870eadf775/src/Makefile.am#L42) which is [defined as](https://github.com/bitcoin/bitcoin/blob/master/doc/design/libraries.md) "Shared library build of static _libbitcoin_consensus_ library" The way how the `libbitcoinconsensus.vcxproj` project is used in the MSVC build system obviously shows that it is the former use case. This PR makes the related adjustments to the MSVC build system. ACKs for top commit: sipsorcery: ACK a94d75fa81bab8f4695ab1756524e639af0ff69c. Tree-SHA512: 1144e13ee2b428ce14be8f76729744830c502a07814eb03e2aa6b8e009d8936fd13743e3f36ef3f31fac0e3979eb9af23e6a1364f151df49b3ae18dbd14cbf99
2023-05-18build: Do not define `ENABLE_ZMQ` when ZMQ is not availableHennadii Stepanov
A new behavior is consistent with the other optional dependencies. The source code contains `#if ENABLE_ZMQ` lines only.
2023-05-17msvc: Provide `ObjectFileName` explicitlyHennadii Stepanov
Should fix intermittent MSVC link errors.
2023-05-15Merge bitcoin/bitcoin#26715: Introduce `MockableDatabase` for wallet unit testsfanquake
33e2b82a4fc990253ff77655f437c7aed336bc55 wallet, bench: Remove unused database options from WalletBenchLoading (Andrew Chow) 80ace042d8fece9be50bfef1be64c6e5720e87e6 tests: Modify records directly in wallet ckey loading test (Andrew Chow) b3bb17d5d07f51ac2e501e4a7a3bbcd17144070f tests: Update DuplicateMockDatabase for MockableDatabase (Andrew Chow) f0eecf5e408238c64b77b0a4974ba2b9edb17487 scripted-diff: Replace CreateMockWalletDB with CreateMockableWalletDB (Andrew Chow) 075962bc25a90661612fe4613cd50ea1cae21f52 wallet, tests: Include wallet/test/util.h (Andrew Chow) 14aa4cb1e44f089a6022a2b14a98bca4a7dd9a01 wallet: Move DummyDatabase to salvage (Andrew Chow) f67a385556c60b2e4788a378196a395fca0539f5 wallet, tests: Replace usage of dummy db with mockable db (Andrew Chow) 33c6245ac1ecdfe25b1ee4fd9e93c43393634ae3 Introduce MockableDatabase for wallet unit tests (Andrew Chow) Pull request description: For the wallet's unit tests, we currently use either `DummyDatabase` or memory-only versions of either BDB or SQLite. The tests that use `DummyDatabase` just need a `WalletDatabase` so that the `CWallet` can be constructed, while the tests using the memory-only databases just need a backing data store. There is also a `FailDatabase` that is similar to `DummyDatabase` except it fails be default or can have a configured return value. Having all of these different database types can make it difficult to write tests, particularly tests that work when either BDB or SQLite is disabled. This PR unifies all of these different unit test database classes into a single `MockableDatabase`. Like `DummyDatabase`, most functions do nothing and just return true. Like `FailDatabase`, the return value of some functions can be configured on the fly to test various failure cases. Like the memory-only databases, records can actually be written to the `MockableDatabase` and be retrieved later, but all of this is still held in memory. Using `MockableDatabase` completely removes the need for having BDB or SQLite backed wallets in the unit tests for the tests that are not actually testing specific database behaviors. Because `MockableDatabase`s can be created by each unit test, we can also control what records are stored in the database. Records can be added and removed externally from the typical database modification functions. This will give us greater ability to test failure conditions, particularly those involving corrupted records. Possible alternative to #26644 ACKs for top commit: furszy: ACK 33e2b82 TheCharlatan: ACK 33e2b82a4fc990253ff77655f437c7aed336bc55 Tree-SHA512: c2b09eff9728d063d2d4aea28a0f0e64e40b76483e75dc53f08667df23bd25834d52656cd4eafb02e552db0b9e619cfdb1b1c65b26b5436ee2c971d804768bcc
2023-05-10msvc: Do not define `HAVE_CONSENSUS_LIB`Hennadii Stepanov
The `HAVE_CONSENSUS_LIB` symbol is supposed to be defined when a user-exposed shared library (DLL) is built which is not the case here.
2023-05-10msvc: Clean up `libbitcoin_consensus` source filesHennadii Stepanov
See `libbitcoin_consensus_a_SOURCES` in the `src/Makefile.am`.
2023-05-10scripted-diff: Rename `libbitcoinconsensus` to `libbitcoin_consensus`Hennadii Stepanov
This build artifact is not a user-exposed shared library (DLL) but a convenience static library. See: https://github.com/bitcoin/bitcoin/blob/master/doc/design/libraries.md -BEGIN VERIFY SCRIPT- sed -i 's/libbitcoinconsensus/libbitcoin_consensus/g' $(git grep -l "libbitcoinconsensus" -- build_msvc) git mv build_msvc/libbitcoinconsensus build_msvc/libbitcoin_consensus git mv build_msvc/libbitcoin_consensus/libbitcoinconsensus.vcxproj build_msvc/libbitcoin_consensus/libbitcoin_consensus.vcxproj -END VERIFY SCRIPT-
2023-05-05msvc: Cleanup after upgrading libsecp256k1 up to 0.3.0Hennadii Stepanov
2023-05-03wallet, tests: Include wallet/test/util.hAndrew Chow
This will be needed for the following scripted-diff to work.
2023-05-03Introduce MockableDatabase for wallet unit testsAndrew Chow
MockableDatabase is a WalletDatabase that allows us to interact with the records to change them independently from the wallet, as well as changing the return values from within the tests. This will give us greater flexibility in testing the wallet.
2023-04-05Fixes compile errors in MSVC build #27332Ethan Heilman
+ Pins the compatible version of libevent in vcpkg
2023-01-13Merge bitcoin/bitcoin#26691: Update secp256k1 subtree to libsecp256k1 ↵fanquake
version 0.2.0 202291722300b86f36e97de7960d40a32544c2d1 Add secp256k1_selftest call (Pieter Wuille) 3bfca788b0dae879bfc745cc52c2cb6edc49fd70 Remove explicit enabling of default modules (Pieter Wuille) 4462cb04986d77eddcfc6e8f75e04dc278a8147a Adapt to libsecp256k1 API changes (Pieter Wuille) 9d47e7b71b2805430e8c7b43816efd225a6ccd8c 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 202291722300b86f36e97de7960d40a32544c2d1, but 4462cb04986d77eddcfc6e8f75e04dc278a8147a could use more eyes on it. achow101: ACK 202291722300b86f36e97de7960d40a32544c2d1 jonasnick: utACK 202291722300b86f36e97de7960d40a32544c2d1 Tree-SHA512: 8a9fe28852abe74abd6f96fef16a94d5a427b1d99bff4caab1699014d24698aab9b966a5364a46ed1001c07a7c1d825154ed4e6557c7decce952b77330a8616b
2022-12-31doc: Correct linked Microsoft URLsSuriyaa Sundararuban
2022-12-24scripted-diff: Bump copyright headersHennadii Stepanov
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT- Commits of previous years: - 2021: f47dda2c58b5d8d623e0e7ff4e74bc352dfa83d7 - 2020: fa0074e2d82928016a43ca408717154a1c70a4db - 2019: aaaaad6ac95b402fe18d019d67897ced6b316ee0
2022-12-13Remove explicit enabling of default modulesPieter Wuille
2022-11-14doc: Mention required workload when building with MSVCHennadii Stepanov
2022-10-31refactor: move url.h/cpp from lib util to lib commonfanquake
2022-10-23build, msvc: Drop no longer required macro definitions for leveldbHennadii Stepanov
Since levedb v1.21: - the `__STDC_LIMIT_MACROS` macro definition is unneeded; commit: 50fbc87e8c62a816d6afd4740e0652a13ac6dc3e - the `LEVELDB_ATOMIC_PRESENT` macro is unused; commit: 04f39105c5a418905da8b7657ca244d672c99d3b
2022-10-18test: Remove unused txmempool include from testsMacroFake
2022-10-04refactor: Make 64-bit shift explicitHennadii Stepanov
Also this change enables MSVC warning C4334 for all codebase. https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4334
2022-10-04build, msvc: Enable C4834 warningHennadii Stepanov
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/c4834
2022-09-23build: remove unused MSVC definesfanquake
Most of these aren't unused in the codebase at all, let alone for MSVC.
2022-09-21build: remove stdio.h from header checksfanquake
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-20build: remove strings.h from header checksfanquake
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-08-19fs: work around u8path deprecated-declaration warnings with libc++fanquake
When building in c++20 mode using libc++, the following warning is emitted: ```bash ./fs.h:72:29: warning: 'u8path<std::string>' is deprecated [-Wdeprecated-declarations] return std::filesystem::u8path(utf8_str); ^ /usr/lib/llvm-14/bin/../include/c++/v1/__filesystem/u8path.h:72:27: note: 'u8path<std::string>' has been explicitly marked deprecated here _LIBCPP_INLINE_VISIBILITY _LIBCPP_DEPRECATED_WITH_CHAR8_T ^ /usr/lib/llvm-14/bin/../include/c++/v1/__config:1042:43: note: expanded from macro '_LIBCPP_DEPRECATED_WITH_CHAR8_T' ^ /usr/lib/llvm-14/bin/../include/c++/v1/__config:1007:48: note: expanded from macro '_LIBCPP_DEPRECATED' ^ 1 warning generated. ``` as u8path<std::string> is deprecated starting with c++20. Fixes: #24682. Co-authored-by: MacroFake <falke.marco@gmail.com> Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2022-08-10msvc: Drop `_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING`Hennadii Stepanov
It is no longer needed.