ISSOtm
a802bcb320
Switch MinGW building to CMake
...
Automatically grabs and compiles libpng, and avoids having hacky lines in our Makefile
(the compiler specification *should* be orthogonal to the build target!)
Also move the MinGW package install to the `install_deps.sh` script,
to move logic off of the YAML.
2026-04-16 00:57:33 +02:00
ISSOtm
846aa975f1
Stop trying to install md5sha1sum
...
macOS already provides it and Homebrew doesn't override it,
so that's a no-op anyway.
2026-04-16 00:25:58 +02:00
ISSOtm
b65649ca73
Tidy up system info
2026-04-16 00:25:58 +02:00
ISSOtm
62ddabb570
Avoid hardcoding Brew's prefix
2026-04-16 00:25:58 +02:00
ISSOtm
d48d6fe5d9
Bump our macOS CI runners
2026-04-16 00:25:58 +02:00
Eldred Habert
ac0f93ffda
Delete GCC static analyzer workflow ( #1950 )
...
As for GCC 15, it is stated not to be suitable for C++ code,
and we have gotten annoyingly many false positives out of it,
so let's just disable it (as per
https://github.com/gbdev/rgbds/pull/1950#issuecomment-4243959126 ).
2026-04-14 22:04:20 +02:00
ISSOtm
a1712cb6d9
Run patch format check on ubuntu-slim
2026-04-14 22:03:29 +02:00
Eldred Habert
2968bee86f
Run macos-static tests using CTest ( #1947 )
...
We can, so why not? It has benefits.
2026-04-14 01:25:47 +02:00
ISSOtm
dec7a74166
Fix macOS static build
...
- Turns out the variable wasn't being set, and thus the flags weren't being passed
- Passing the flags via those variables is basically a bad idea, and it
turns out to break libpng's config script
- The flags need to be passed during link as well, otherwise the binary
isn't linked as a fat one
2026-04-14 00:01:14 +02:00
Eldred Habert
9c4e53d1c4
Transition CI from pkg-config to pkgconf ( #1942 )
...
Upstream has changed the providing implementation,
so that package will eventually be removed.
2026-04-13 19:46:05 +02:00
Eldred Habert and Rangi
463edc3c01
Enable color output in our Linux and macOS CI tests ( #1939 )
...
Co-authored-by: Rangi <[email protected] >
2026-04-13 19:31:01 +02:00
Eldred Habert
65ec1af1e8
Switch macOS static build to CMake ( #1938 )
...
This moves the tortuous flags out of our CI scripts,
and allows us to benefit from the libpng download caching.
2026-04-12 22:26:15 -04:00
Eldred Habert
bc3572ec37
Stop trying to explicitly install pkg-config in CI ( #1940 )
...
Turns out it's already installed by default,
but under a different name that's causing extra ops
for no real gain.
2026-04-12 22:08:38 -04:00
Eldred Habert
78281a4aaa
Break down CTest cases into each test suite ( #1931 )
...
This allows parallelising the individual programs'
test suites, which can save a few minutes!
2026-04-12 21:29:12 -04:00
ISSOtm
6e51ab6f55
Remove a duplicate warning flag
...
We always pass this one
2026-04-13 01:52:25 +02:00
ISSOtm
52aaf7e3b3
Fix MSVC dependent option syntax
...
This is not how CMake works lol
2026-04-13 01:37:38 +02:00
ISSOtm
09db4f25dd
Bump the maximum version of CMake tested with
...
Future-proofing!
This is both the version on my own machine,
and what's distributed by Homebrew (thus on GitHub's runners).
2026-04-13 00:33:31 +02:00
Eldred Habert
fed5db7743
Move documentation outside of the root directory ( #1936 )
2026-04-12 18:09:40 -04:00
ISSOtm
c6dbec7830
Stop trying to run version test on Cygwin and FreeBSD
...
Fixes #1934
2026-04-12 23:40:39 +02:00
Eldred Habert
017b0119e6
Overhaul checkdiff CI ( #1930 )
2026-04-12 16:06:28 -04:00
Eldred Habert
0e6e91d048
Avoid copying RGBFIX binary when testing it ( #1933 )
...
This is just cleaner in general,
and also avoids separating it from any DLLs it may be needing.
2026-04-12 13:23:51 -04:00
Eldred Habert
123201ecc6
Avoid repeatedly specifying bash as the command shell in CI ( #1926 )
2026-04-10 22:04:16 -04:00
Eldred Habert
422e8eec20
Generate Bison output in CMake build tree ( #1929 )
...
Again, moving away from in-tree builds
2026-04-10 18:46:57 -04:00
ISSOtm
4577ff16bc
Generate Bison output in CMake build tree
...
Again, moving away from in-tree builds
2026-04-10 22:56:59 +02:00
ISSOtm
b430d5a8b8
Note why we are not using a CMake list to pass Bison flags
2026-04-10 22:33:54 +02:00
ISSOtm and vulcandth
a5be1d886e
Copy DLLs to appropriate dir for install-less Windows testing
...
Co-authored-by: vulcandth <[email protected] >
2026-04-10 18:01:16 +02:00
ISSOtm
ace2f3e613
Document why lib src cache is cross-OS
...
See https://github.com/gbdev/rgbds/pull/1919#discussion_r3048475606
2026-04-08 12:25:43 +02:00
ISSOtm
8d1a60d6b5
Switch release process to a lightweight runner
...
Easier to provision, less concurrency overhead for us
2026-04-08 12:25:43 +02:00
ISSOtm
11ac22d8f5
Switch from an Action to gh release
...
Fewer supply chain risks whooooo
2026-04-08 12:25:43 +02:00
ISSOtm
812e1f6d4b
Remove dead code checking for version tag
...
It was also vulnerable to template injection attacks.
2026-04-08 12:25:43 +02:00
ISSOtm
8dc052475b
Avoid caching in our release workflow
...
This is a malware distrib vector,
and we run this workflow sporadically enough
that we can afford to do so uncached.
2026-04-08 12:25:43 +02:00
ISSOtm
133eaa4e92
Build Windows release in, well, Release mode
2026-04-08 12:25:43 +02:00
ISSOtm
57f1894fbd
Fix installing Windows build deps on release
2026-04-08 12:25:43 +02:00
ISSOtm
021fe01eb0
Avoid CMake looking at test dir if testing is disabled
...
This saves building the two test support programs.
2026-04-08 12:25:43 +02:00
ISSOtm
bcff14b596
Clean up docs workflows
...
Usethe `ubuntu-slim` runner to (hopefully) get faster setup times
2026-04-07 21:48:26 +02:00
Eldred Habert
44b6a2c453
Add a key that turns out to be required
...
The documentation is super flaky tbh
2026-03-31 02:14:24 +02:00
Eldred Habert
3fc3130364
Fix some YAML syntax
...
I prefer TOML and JSON anyway...
2026-03-31 02:12:29 +02:00
Eldred Habert
5090395ca7
Enable GH Actions to be automatically bumped
...
Turns out those get new major releases somewhat often, and we get deprecation warnings and brownouts and all that.
Automatic bumps should help us avoid that, though I've set a *very* large scan interval to shield us from churn.
2026-03-31 02:03:37 +02:00
ISSOtm
8025c2ae66
Require uploaded artifacts to be non-empty
...
We can get silent failures otherwise
2026-03-28 11:31:49 +01:00
ISSOtm
f7831ce8da
Simplify CTest pre-run test command
2026-03-28 01:21:08 +01:00
ISSOtm
b736fa22ff
Suppress status messages when fetching test deps
...
Let's avoid status message spam.
2026-03-27 22:07:28 +01:00
ISSOtm
0692d1d28c
Avoid passing a C++-only flag when compiling C files
...
Avoids compiler warnings. This can happen because zlib and libpng are both C projects,
and we build them from source if they are unavailable.
2026-03-25 17:11:46 +01:00
Eldred Habert
4b69d5cc8a
Fix name of test repo cache used by macos-static ( #1909 )
2026-03-24 09:02:28 -04:00
Eldred Habert
52aa518e20
Enable Git colours in CI
2026-03-24 12:40:34 +01:00
Eldred Habert
d9932b9031
Always clone deps with --depth=1 ( #1908 )
2026-03-23 11:02:29 -04:00
ISSOtm
b8e425b41d
Avoid passing irrelevant flags to our deps
2026-03-19 20:30:12 +01:00
ISSOtm
6b0658fb59
Cache library deps on Windows
...
Besides the immediate performance improvement, reducing
the frequency of downloads should make spurious
failures (network, rate-limiting...) less bothersome.
2026-03-19 20:30:12 +01:00
ISSOtm
91fdfcd179
Specify MSVC architecture using presets
...
Shortens CI command lines slightly,
and documents the requirement.
2026-03-19 20:30:12 +01:00
ISSOtm
5abebcf61f
Specify build type implicitly
...
Again, shortening the CMake command line.
Unfortunately, this doesn't apply to `--install`.
2026-03-19 20:30:12 +01:00
ISSOtm
145473d9bd
Use develop preset on FreeBSD
...
Leak detection is not supported, so we have to disable it.
2026-03-19 20:30:12 +01:00
ISSOtm
2fb64816a9
Indicate more clearly that LTO is not used in debug mode
...
This has made me worried once or twice
2026-03-19 20:30:12 +01:00
ISSOtm
7cf330e3f9
Enable CMake parallelism in a central place
...
Shortening command lines is useful
2026-03-19 20:30:12 +01:00
ISSOtm
2e66515096
Invoke CTest directly
...
This allows passing it arguments directly, like `--verbose` here
(which is more appropriate for CI use).
2026-03-19 20:30:12 +01:00
ISSOtm
c93f377bfb
Enable colour diagnostics in CI
...
At least for CMake.
2026-03-19 20:30:12 +01:00
ISSOtm
d6d1844d60
Seek lib deps via CMake FetchContent
...
`FetchContent` respects existing installs, and downloads and compiles the libs
if they aren't found.
This is admittedly a little finicky, since this ignores the usual `Find*`
modules provided by CMake, requiring a bit of glue on our side.
But, one upside is that this moves that logic from our CI into the build system,
which can thus benefit other downstream users.
This also opens the door to some improvements in upcoming commits.
Doing this with Bison turned out to be much more painful, however, due to
`FindBISON` providing the specific `bison_target` command; thus, it remains
installed externally, so that it can be picked up by `FindBISON`.
This also bumps our CMake version requirement slightly, though it's
possible that older versions keep working, or could be supported with small patches;
however, our CI doesn't provide anything below 3.31, so we can't check.
2026-03-19 20:30:12 +01:00
ISSOtm
fd38a3dbc4
Add CMake and YAML files to EditorConfig
...
Since we use a different style for those
2026-03-19 20:30:12 +01:00
ISSOtm
60d58723aa
Use a modern GNU Make for CMake CI on macOS
...
We can assume that CMake handles old Make correctly,
but we'd like to benefit from improvements
like output batching.
2026-03-19 20:30:12 +01:00
ISSOtm
a9b6cda77b
Reorder CMakeLists commands by topic
2026-03-17 08:18:50 +01:00
ISSOtm
091452d591
Remove call to configuring version file
...
Missed in 5c4ca36c5a
2026-03-17 05:28:23 +01:00
ISSOtm
df1d909853
Improve documentation of CMake bin output dir
2026-03-17 05:27:39 +01:00
ISSOtm
fb4e08ce71
Tidy up CMake sanitizer flags
...
Set the flags in the build itself instead of trying to override the cache
(this was an artifact of when I didn't understand the CMake variable model),
which avoids them being duplicated on each re-configuration.
Also remove `-g`, since it's defined by the build type by default
(we leave it up to the user to choose Debug or RelWithDebInfo).
2026-03-16 20:23:47 -04:00
ISSOtm
7244b9d17e
Silence the same warning as in the Makefile
...
As requested by https://github.com/gbdev/rgbds/pull/1899#discussion_r2943039607
2026-03-16 20:23:47 -04:00
ISSOtm
5c4ca36c5a
Harmonise passing build version
...
Avoid running some configure step, instead pass it as a define like the Makefile
2026-03-16 20:23:47 -04:00
ISSOtm
292c297518
Sync Windows release steps with new CI
2026-03-16 20:23:47 -04:00
ISSOtm
a5bb431d47
Fix debug-mode building on Windows
...
ASan seems broken, and the debug-mode DLL names are different
2026-03-16 20:23:47 -04:00
ISSOtm
10e1c9d187
Avoid passing sanitizer options to MSVC linker
...
Apparently it does not support them
2026-03-16 20:23:47 -04:00
ISSOtm
d8722b6705
Use imported targets for linking to libpng
...
This massively simplifies the process lol
2026-03-16 20:23:47 -04:00
ISSOtm
2d0ac7eeb0
Disable exceptions and RTTI when building with CMake
2026-03-16 20:23:47 -04:00
ISSOtm
d5033a2bd9
Handle project version better in CMake
...
Parse the version from `version.hpp`, and check its consistency with
the Git tag to help catch release blunders.
2026-03-16 20:23:47 -04:00
ISSOtm
45fff0fd58
Harmonise naming of CMake test knobs
...
Also reorganise the file a little
2026-03-16 20:23:47 -04:00
ISSOtm
c963c7b1c7
Simplify include directory directive
2026-03-16 20:23:47 -04:00
ISSOtm
63c7835e71
Stop overriding the binaries' install dir
...
This is equivalent to the default, except the default accepts being overridden
2026-03-16 20:23:47 -04:00
ISSOtm
35af3185eb
Enable LTO even for multi-config CMake generators
...
See https://cmake.org/cmake/help/latest/manual/cmake-buildsystem.7.html#build-configurations
for the rationale.
2026-03-16 20:23:47 -04:00
ISSOtm
db9d9c7653
Install our man pages in a more standard-configurable manner
2026-03-16 20:23:47 -04:00
ISSOtm
9e5a9107f2
Remove enforced CTest verbosity
...
It can be controlled from the command line instead, and that's better
2026-03-16 20:23:47 -04:00
ISSOtm
275fcf8fcf
Improve CMake-in-tree fatal error message
2026-03-16 20:23:47 -04:00
ISSOtm
bc37b0ece6
Skip trying to link to libm explicitly
...
This doesn't seem to be necessary: it is automatically linked to,
at least on my machine. \*shrugs\*
2026-03-16 20:23:47 -04:00
ISSOtm
e63ce24e48
Add a CMake preset for maintainer flags
2026-03-16 20:23:47 -04:00
ISSOtm
d524884799
Run CI tests using CTest when possible
2026-03-16 20:23:47 -04:00
ISSOtm
34e1f8dcc5
Remove useless MSVC flag
...
CMake only passes a single file at a time anyway
2026-03-16 20:23:47 -04:00
ISSOtm
cd64de9323
Remove a warning triggered by MSVC's own standard library
...
No longer triggers now, so we can remove our workaround for their breakage.
2026-03-16 20:23:47 -04:00
ISSOtm
a01b805e4b
Remove an outdated comment
2026-03-16 20:23:47 -04:00
ISSOtm
a139cbc744
Refactor the source file listing
...
Make the common files into an object library, which lets them
be compiled only once (saving 41 build steps)
This also lends itself well to removing the per-program loop,
which simplifies the code somewhat.
2026-03-16 20:23:47 -04:00
ISSOtm
06e5386d93
Move FreeBSD deps install to common CI script
...
Making the OS filter in test driver consistent as per
https://github.com/gbdev/rgbds/pull/1899#discussion_r2942998932
2026-03-16 20:23:47 -04:00
ISSOtm
37f57a752f
Print a more graceful error message for run-tests.sh --unk
2026-03-16 20:23:47 -04:00
ISSOtm
670bdf2095
Document run-tests.sh --os
...
Also switch to heredoc syntax for ease of editing
2026-03-16 20:23:47 -04:00
ISSOtm
6270f654a1
Make sure to init all variables involved in CMake tests
2026-03-16 20:23:47 -04:00
ISSOtm
676db46c01
Add a few details to the project() call
...
We can use them now that the minimum version has been bumped
2026-03-16 20:23:47 -04:00
ISSOtm
8979b54281
Ignore a CMake file that is not intended to be checked in
2026-03-16 20:23:47 -04:00
ISSOtm
a6f03530ed
Correct minimum CMake version required
...
Turns out the status messages use 3.17
2026-03-16 20:23:47 -04:00
ISSOtm
b56b56a695
Reformat some long warning-flag-setting lines
2026-03-16 20:23:47 -04:00
ISSOtm
dc5fc9f327
Remove obsolete CMake version comment
2026-03-16 20:23:47 -04:00
ISSOtm
3d35457eeb
Avoid showing the "more warnings" option for MSVC
2026-03-16 20:23:47 -04:00
ISSOtm
aea39ec8c8
Log with sanitizers are enabled under CMake
...
This can help bring attention to the MSVC difference (no UBSan there)
2026-03-16 20:23:47 -04:00
ISSOtm
9293068370
Properly specify our max CMake version supported
...
Also bump it to the version I just tested it with
2026-03-16 20:23:47 -04:00
ISSOtm
d054f07703
Fix some truncation warnings
...
Amusingly, reported by MSVC only
2026-03-10 01:31:23 -04:00
Eldred Habert
7c1e1fe515
Reference the file that actually provides the linker script lexer
2026-01-27 12:54:06 +01:00
Eldred Habert and Rangi42
8cf6c5423a
Implement --background-color ( #1508 )
...
Co-authored-by: Rangi42 <[email protected] >
2025-05-01 23:39:52 -04:00
Eldred Habert
d5f39c8dce
Remove the use of floating-point for palette packing ( #1565 )
...
This is primarily a correctness change, *not* a performance one.
The expected performance impact is minimal anyway.
The goal is to eliminate the use of platform-inconsistent floating-point operations
for this load-bearing task.
2024-11-29 13:44:19 -05:00
ISSOtm
86bf289452
Process the last line of textual palette specs even without a trailing newline
...
Fixes #1519
2024-09-30 22:26:00 +02:00