MSVC 14.50 (v145) no longer targets Windows 7, 8, or 8.1, so building
with it would quietly drop those platforms. The VS 2026 runner images
include the v143 compiler but ship ATL and MFC only for the latest
toolset, and both are needed: ATL by SAPI speech (sphelper.h) and MFC
by FRED2. Install the 14.44 ATL/MFC components before configuring and
keep building with v143, matching the 26.0 release.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
All default Windows runners should now be moved over the Visual Studio 2026,
with the exception of windows-2022 (which may be retired before long). So
move to windows-2025 and update the CMake generator to use vs2026 as well.
* Secure forum posting by adding authentication header support
* Add check for missing FORUM_SECRET environment variable in ci/post/main.py
* also error out when the forum secret is not supplied
* ci: run clang-tidy on macOS and Linux clang builds
Install a version-matched clang-tidy on macOS and make the shared runner portable across both CI environments.
* ci: keep valgrind compatible with clang debug builds
Emit DWARF4 debug information and suppress SDL's one-time initialization allocation so memcheck can report actionable failures.
* ci: suppress SDL3/libX11 video backend leaks under valgrind
Now that the `[ "$CONFIGURATION" = "Debug" ]` typo is fixed, valgrind
actually runs on the Linux Debug legs again, and memcheck fails the build
on six "definitely lost" contexts (480 bytes) that all originate inside
SDL3's X11 backend at X11_CreateDevice, reached from SDL_VideoInit.
These aren't ours to fix: both call sites (os_init's SDL_Init and the
temporary video init in resolution_default(), reached via gr_init) already
pair their init with a matching quit, and the allocations are made and
kept by SDL/libX11 across SDL_VideoQuit. Collapsing the repeated init/quit
cycles would only reduce the block count, not the number of leak contexts,
so the build would still fail.
The suppression is truncated at X11_CreateDevice on purpose: it stays
caller-agnostic (covering both the os_init and gr_init paths) and avoids
matching on SDL_InitSubSystem_REAL.part.0, whose .part.0 suffix is a
partial-inlining artifact of how SDL3 happened to be built.
Co-Authored-By: Claude Opus 5 <[email protected]>
* ci: suppress glibc dlopen loader leaks under valgrind
The Linux clang-16 Debug leg fails memcheck on a single zero-byte block
lost in glibc's `_dl_find_object_update()`, reached from `dlopen()` while
SDL probes its video backends. It is loader bookkeeping that glibc keeps
by design, and it only shows up on some legs because it depends on how
many objects the loader has mapped by that point.
The file already carried three suppressions for this class, but each
pinned a full, exact glibc stack, so every new loader code path costs
another CI round. Replace them with a single block matching on
`_dl_open`: nothing of ours runs below that frame, only loader internals
and the static constructors of shared libraries the loader brings in, so
this gives up no coverage we care about while retiring the whole class.
All three removed blocks contain `_dl_open` themselves and are therefore
subsumed by it.
Both new suppressions match `definite,possible` rather than `definite`
alone, since `--errors-for-leak-kinds` defaults to `definite,possible`
and the same allocations would otherwise fail the build if valgrind ever
reported them as possibly lost instead.
Co-Authored-By: Claude Opus 5 <[email protected]>
---------
Co-authored-by: Claude Opus 5 <[email protected]>
I somehow added an older, broken version of the cache-master workflow during
the recent workflow update. This should fix the architecture bug preventing
the Mac cache from working properly, as well as increasing the max cache size
from 500 MiB to 750 MiB.
* clean, fix, and update workflows
Add support for Windows ARM64 builds.
Try to rely on build defaults for various options so that workflow
modifications aren't required for basic feature changes.
Remove Vulkan and Qt setup from workflow, instead relying on new
prebuilt libs.
Update SFTP image and Linux build image to newer release.
Add ccache setup for macOS.
Update ccache action to a version compatible with Node v24.
Fix issue with our Linux build image where libfontconfig1 isn't installed, but
is needed by some Qt5 libs. Since aqt is used to install a more up-to-date
Qt5 version than what's provided by the distro we don't have the usual
dependency resolution needed to prevent this.
This is a stop-gap measure to fix testing of pull requests for QtFred, and
only applies to that specifc workflow. The arm64 Linux image also has a broken
Qt install so this workaround is useless with normal workflows. A proper fix
will require updating the Linux build image to fix the Qt dependency problem
and related issues.
* Actually pr-test fastdbg
* Set embedfile msvc runtime
* Restructure toolchain files so that embedfile is also built accordingly
* Conditional AFXDLL
* Set iterator level globally
* Update nightly build to use windows 2022
* Update build-release.yaml
* Update build-test.yaml
* Update test-pull_request.yaml
* Upgrade to CMake 3.21+
temp commit
* remove cotire due to incompatibilities
* Update dependencies to compile on CMake 4 with no warnings
* Update ANTLR4
* Update GTest
* Fix Windows CI
* Fix case sensitive ANTLR include
* Fix naming issues and disable shared ANTLR+
* Include Mess for MSVC
* fix new windows signed/unsigned compare warning
* FRED2 linking settings
* Don't clang tidy gtest
---------
Co-authored-by: Tyler Blount <[email protected]>
Github runners for Linux arm64 are now in public beta with the same
free limits as normal github runners. Our Linux build images already
have arm64 support so this finally enables it as part of the official
workflow.
The official 1.2.1 release of humbletim/setup-vulkan-sdk was recently published. Update the repo version and, incidentally, also the vulkan version. See https://github.com/humbletim/setup-vulkan-sdk
Follow-up to #6582.
Coverity hasn't run since September 27. A close look at the log shows that the workflow makes it almost all the way through but fails on the "Upload to Coverity" step:
`fatal: detected dubious ownership in repository at '/__w/fs2open.github.com/fs2open.github.com'`
There are various questionable ways that people have tried to fix this, but it might be possible to completely avoid the issue by not using `git` in that step. So let's try to get the commit hash from GitHub context rather than by running `git rev-parse HEAD`.
PR #6335 did not update actions/upload-artifact; both upload and download need to use the same major version number.
Also move from v4.1.7 to just v4 because that appears to be the common practice.
* Fix AVX2 detection
* Also query for proper OS support
* Actually properly set ISA level on all platforms
* Expose level of x86-SIMD instructions to the code.
* Fix handling of forced instruction set
* Fix errors
* Fix MSVC
* Properly deal with linux CI builds
* fix clang
This prevents Coverity from running on any forked repository, by default; both because the workflow will fail, and also because the workflow's results would be identical. (Any forked repository can, of course, change this within its own scope.)
Per @notimaginative, change the `compiler` variable to uppercase to match its usage in the rest of the file. This should allow the coverity task to start running again.
Apple Silicon Macs require that all code is signed in order to run. Our builds
are partially signed due to the SDL framework already being signed, so it is
seen as broken. To fix that we need to codesign all the rest of the necessary
files with an ad-hoc signature in order to allow the builds to work properly.
By using app image and switching to Checkout V1.
Also removes Vulkan SDK install, since it seems to be taken care of by the app image or is disabled. I can't figure it out from the app images.
An arm64 mac can run unittests on a x86_64 build, but not the other way
around. So if the target arch doesn't match the build host arch then
just skip the tests. Saves us from a far more complicated fix that would
only produce the same test results anyway.
Qt has been added to the build image which eliminates the need to
dynamically install it which removed a possible point of failure.
At the moment this is only enabled for pull request builds and should
not affect nightly or release builds.
The previous version of the image accidentally removed the /tmp
directory which broke things in the GitHub actions.
Initially, an update for the upload/download actions was tried which had
no effect but keeping these updated is probably a good idea.
This advances the versions for Clang to 16 and GCC to 13 along with
fixing any warnings these new versions are detecting now.
The new image versions also include Vulkan so the additional workflow
step for installing that is not necessary anymore.
Use GNU tar instead of the default bsdtar. This works around some weird
corruption bug triggered by the combination of the GitHub runner-VM, the llvm
linker, and bsdtar.
Adjust intermediate filenames such that they don't get uploaded to
indiegames by mistake.
Unpack builds as a single step instead of two.
- handle double archiving of macOS builds so they'll work properly with Knossos
- fix issue where only a single configuration was included in the package
(Release or FastDebug, not both)