Skip to content

Commit 3c4a941

Browse files
committed
Merge bitcoin/bitcoin#31013: depends: For mingw cross compile use -gcc-posix to prevent library conflict
ae56b32 depends: For mingw cross compile use -gcc-posix to prevent library conflict (laanwj) Pull request description: CMake parses some paths from the spec of the C compiler, assuming it will be the linker, resulting in the link to end up with `-L/usr/lib/gcc/x86_64-w64-mingw32/12-win32` on debian bookworm if both `-win32` and `-posix` variants are installed, and `-win32` is the default alternative. This results in the wrong C++ library being linked, missing std::threads::hardware_concurrency and other threading functions. To fix this, use the `-posix` variant of gcc as well when available. This fixes a regression compared to autotools, where this scenario worked. ACKs for top commit: theuni: utACK ae56b32. hebasto: ACK ae56b32. I've tested on both Debian Bookworm and Ubuntu 24.04 with the `g++-mingw-w64-x86-64` package installed. The resulting CMake internal configuration appears more accurate. For instance, on Ubuntu 24.04, for the `bitcoin-tx` target, the diff in `build/src/CMakeFiles/bitcoin-tx.dir/linkLibs.rsp` looks as follows: Tree-SHA512: f36fae50f91a29f565940494af9e46f47e219b99e329c0714ace47c516ac524602d5b6538a07488157bc2a71be7bac72176097fff3178129c5084bf6cc823167
2 parents 5d5cc02 + ae56b32 commit 3c4a941

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

depends/hosts/mingw32.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
ifneq ($(shell $(SHELL) $(.SHELLFLAGS) "command -v $(host)-gcc-posix"),)
2+
mingw32_CC := $(host)-gcc-posix
3+
endif
14
ifneq ($(shell $(SHELL) $(.SHELLFLAGS) "command -v $(host)-g++-posix"),)
25
mingw32_CXX := $(host)-g++-posix
36
endif

0 commit comments

Comments
 (0)