Repository navigation
Migrate Windows x86_64 builds from MINGW64 to UCRT64 - #36
Merged
Merged
Conversation
MSYS2 deprecated the MINGW64 environment. UCRT64 keeps GCC (so the existing gcc-specific linker options still apply) and matches the prebuilt FFmpeg static libs, which are already compiled against UCRT (they reference __acrt_iob_func). The 32-bit builds stay on MINGW32, as MSYS2 has no 32-bit UCRT environment. Also print the imports of the built DLL in CI, to make runtime dependencies visible. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
setup-msys2 warns: "[msystem-mingw64] MINGW64 is deprecated. Migrate to UCRT64 or CLANG64."
Change
build-and-test.yml(x64 matrix entry) anddeploy.yml(windows-x64-build) now usemsystem: ucrt64with themingw-w64-ucrt-x86_64-*toolchain and Doxygen packages.mingw32. UCRT64 and CLANG64 are 64-bit only, and the deprecation warning is only about MINGW64.CLAUDE.md,ffsampledsp-x86_64-win/CLAUDE.md) andNOTES.md.Why UCRT64 and not CLANG64
com.tagtraum:ffmpeg-x86_64-win:8.1.0) are already compiled against UCRT.libavutil.a,libavformat.aandlibbz2.areference__acrt_iob_func, which exists only in UCRT, and they were built with MSYS2's GCC 15.2. MINGW64 links them against msvcrt through mingw-w64 compatibility shims; UCRT64 makes the toolchain match the libs.-static-libgcc,-Wl,--kill-at, …) apply unchanged. CLANG64 would switch to clang/lld and libc++/compiler-rt.Impact
The x86_64 DLL now imports the Universal C Runtime (
api-ms-win-crt-*) instead ofmsvcrt.dll. UCRT is part of Windows 10 and later, and on Windows 7/8.1 it comes with update KB2999226. Any JDK 11+ on Windows already depends on UCRT itself.Testing
This can't be built locally (macOS). CI on this PR is the test, and the new "Print DLL imports" step should show only system DLLs.
🤖 Generated with Claude Code