Repository navigation
MSYS2: drop mingw64 (rtaudio no longer built for it); UCRT64 / CLANG64 / CLANGARM64 - #8589
Merged
Merged
Conversation
MSYS2 stopped building rtaudio for mingw64 (msys2/MINGW-packages#32418, "Drop mingw64 for Allegro and some leaf packages"), so pacman fails with "target not found: mingw-w64-x86_64-rtaudio" and the build-msys2 (mingw64) CI job can't install its packages. MSYS2 is retiring mingw64; UCRT64 is its recommended environment. - CI: build-msys2 matrix is ucrt64 and clang64 - packages: no more mingw64 MSYS2 nightly; release.sh builds ucrt64 and clang64 instead of mingw64 (nightlies already had both) - install_dependencies.sh: in a MINGW64 / MINGW32 shell, says the environment is no longer supported and to use UCRT64 or CLANG64, instead of failing in pacman - docs/msys2.md: UCRT64 (recommended) / CLANG64 instead of MINGW32 / MINGW64
apothecary already publishes openFrameworksLibs_*_msys2_clangarm64 and all the MSYS2 packages openFrameworks installs exist for clangarm64. - CI: build-msys2 runs clangarm64 on the windows-11-arm runner (ucrt64 and clang64 stay on windows-latest); the gcc -v check step no longer fails where the runner's Git Bash has no gcc - package_builds.sh / nightlybuilds.sh / release.sh: msys2_clangarm64 package - docs/msys2.md: CLANGARM64 for Windows on ARM
Member
Author
|
Added clangarm64 (Windows on ARM), since apothecary already publishes
This is the first time this CI job runs on ARM, so the clangarm64 job is the one to watch. |
ofConstants.h included <arm64_neon.h> for every Windows ARM64 build. That header is MSVC's (clang's copy only #include_next's the MSVC SDK one), so the MSYS2 clangarm64 build fails: arm64_neon.h:12:15: fatal error: 'arm64_neon.h' file not found Use it with MSVC / clang-cl only, and the standard <arm_neon.h> otherwise.
- ofConstants.h: Windows ARM64 sets OF_NO_FMOD, which selected the Media Foundation sound player; MSYS2 doesn't build it, so the link failed with undefined ofMediaFoundationSoundPlayer. Media Foundation is Visual Studio only; MSYS2 on ARM64 uses OpenAL like x64. - scripts/msys2/download_libs.sh: the apothecary msys2_clangarm64 package's static libraries (tess2, kiss, svgtiny, ...) have no archive symbol index (0 entries, x64's libtess2.a has 71), so lld can't resolve anything in them (undefined tessNewTess, ...). Run llvm-ranlib on the downloaded libs when it's available; it adds the missing index and leaves indexed archives as they are.
wglew.h needs the Windows types (BOOL, HDC, HGLRC, ...). ofConstants.h relied on glew.h to include windows.h, but glew.h only does that when APIENTRY isn't defined yet; on MSYS2 clangarm64, allAddonsExample includes the OpenCV headers first and the build fails with GL/wglew.h:114:9: error: unknown type name 'BOOL' Include windows.h first, with WIN32_LEAN_AND_MEAN like glew.h, so builds get the same headers as before.
Member
Author
clangarm64 now passesAll 9 Windows jobs are green: MSYS2 ucrt64 / clang64 / clangarm64, and Visual Studio x64 / ARM64 / ARM64EC (2022 and 2026). Getting the first MSYS2 Windows-on-ARM build through took three more fixes:
The Visual Studio jobs pass with these |
danoli3
added a commit
to danoli3/openFrameworks
that referenced
this pull request
Oct 16, 2026
MINGW64 is no longer supported (openframeworks#8589); the MSYS2 build task, include paths and compiler now use UCRT64.
danoli3
added a commit
that referenced
this pull request
Oct 17, 2026
* msys2: clang toolchain for CLANG64/CLANGARM64; fix vscode template Win32 include path * vscode template: MSYS2 UCRT64 paths and shell instead of MINGW64 MINGW64 is no longer supported (#8589); the MSYS2 build task, include paths and compiler now use UCRT64.
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.
Problem
build-msys2 (mingw64)fails installing packages:On 13 Oct MSYS2 stopped building rtaudio for the mingw64 environment: msys2/MINGW-packages#32418, "Drop mingw64 for Allegro and some leaf packages". The PKGBUILD is now
mingw_arch=('ucrt64' 'clang64' 'clangarm64'). Retrying can't fix it.I checked every package openFrameworks installs (CI's
pacboylist andinstall_dependencies.sh) in all four environments; rtaudio on mingw64 is the only one missing. But MSYS2 is retiring mingw64 and recommends UCRT64, so more packages will go.Change
UCRT64 (recommended) and CLANG64 only:
build-msys2matrix isucrt64,clang64.scripts/ci/package_builds.shno longer builds anmsys2_mingw64nightly; theucrt64andclang64nightlies were already built.scripts/dev/release.shbuildsucrt64andclang64instead ofmingw64.nightlybuilds.sh, mingw64 is commented out like mingw32.scripts/msys2/install_dependencies.sh: in a MINGW64 or MINGW32 shell it now stops with a message, instead of failing in pacman: "The MSYS2 MINGW64 environment is no longer supported by openFrameworks. Open an MSYS2 UCRT64 (recommended) or CLANG64 terminal…". It already defaulted to ucrt64.docs/msys2.md: UCRT64 / CLANG64 instead of the old MINGW32 / MINGW64 instructions, including the PATH examples.Not changed
These still mention mingw64 and could be updated separately:
project/qtcreator)MINGW_PREFIX ?= /mingw64inconfig.msys2.default.mk. MSYS2 setsMINGW_PREFIXin every shell, so that default isn't used.