build: use UCRT runtime for Windows (release) binaries #30210

issue fanquake openend this issue on May 31, 2024
  1. fanquake commented at 8:56 am on May 31, 2024: member

    Switching to the modern runtime would be good, because the old runtime is missing features, which has meant writing workarounds for Windows in our code: i.e #29014/#29357.

    Mingw-w64 12.0.0 has been released, which now defaults to the UCRT runtime, over MSVCRT. See https://github.com/mingw-w64/mingw-w64/blob/master/mingw-w64-doc/howto-build/ucrt-vs-msvcrt.txt for more details. This makes using it somewhat easier, because we can just use 12.0.0 verbatim, rather than having to configure an older mingw-w64 for the newer runtime.

  2. fanquake added the label Windows on May 31, 2024
  3. fanquake added the label Build system on May 31, 2024
  4. jeandudey commented at 10:32 am on July 4, 2024: none

    I’ve sent a patchset a while ago when working on cross-base updating MinGW to 12.0.0: https://issues.guix.gnu.org/71630.

    Using UCRT will likely need a new target triplet for Guix though like MSYS2 does, e.g. x86_64-w64-ucrt-mingw32.

  5. fanquake referenced this in commit 156bf3630f on Jul 16, 2024
  6. fanquake commented at 11:04 am on July 16, 2024: member

    I’ve sent a patchset a while ago

    Thanks. That has now landed, so we’ll bump the time machine to get things started here. See #30452.

  7. fanquake referenced this in commit 77ce657d53 on Jul 18, 2024
  8. fanquake referenced this in commit 314407a2fb on Jul 18, 2024
  9. fanquake referenced this in commit 641c7c44c0 on Jul 19, 2024
  10. fanquake referenced this in commit 1653d78cf3 on Jul 19, 2024
  11. fanquake referenced this in commit 2401a24387 on Jul 31, 2024
  12. hebasto commented at 6:51 am on October 30, 2024: member

    Here is another reason to switch to UCRT.

    UPD. Switching to UCRT does not actually resolve the issue mentioned in the referenced comment.

  13. hebasto commented at 10:02 am on October 30, 2024: member

    FWIW, here is a way to cross-build UCRT-linked Windows binaries on Fedora 41:

    0$ sudo dnf install ucrt64-gcc-c++
    1$ make -C depends HOST=x86_64-w64-mingw32ucrt mingw32_CC=/usr/bin/x86_64-w64-mingw32ucrt-gcc mingw32_CXX=/usr/bin/x86_64-w64-mingw32ucrt-g++
    2$ cmake -B build --toolchain depends/x86_64-w64-mingw32ucrt/toolchain.cmake
    3$ cmake --build build
    

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-22 00:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me