ISSOtm
d43ef53745
Remove unreachable bank range check
...
The only case where it is not generated by our own code
(which we ought to be `assume`ing is correct) is when the bank
is used-specified, but that is caught by an earlier check.
2026-09-18 21:19:37 +02:00
ISSOtm
ef709fade6
Refactor and fix sect packing's bank iteration
...
Moving both pieces of related code together, as it were.
This also ends up changing the behaviour of scrambling,
where sections could “leak” out of the scrambling's bank pool
and resume being placed normally.
We have discussed it offline, and decided that this was a bug.
The test suite has been updated accordingly, which even gives
the occasion to move this test from a special case to the main
generic loop!
2026-09-18 21:19:37 +02:00
ISSOtm
8685bcbfbf
Refactor all scrambling-related dispatch into a single func
...
Yay for (poor man's) pattern matching! 🦀
2026-09-18 21:19:37 +02:00
ISSOtm
1ca4282e31
Move a function closer to its usage point
...
Trying to keep code grouped together well.
2026-09-18 21:19:37 +02:00
Eldred Habert
afe1f01d00
Fix linker script align 16 in floating address context ( #2115 )
...
Turns out we were just using the wrong var lmao
2026-09-17 20:46:55 -04:00
ISSOtm
f234796428
Avoid allocating for our linkdef names ( #2111 )
...
This reverts a change introduced in fd78a9ae8 , though it wasn't that commit's main point
so I'm feeling okay with undoing that.
This feels like an overkill change, using a static string is good enough for this
since we never modify this. I have considered using `string_view` instead, to have
the best of both worlds, but that's not NUL-terminated so our print functions
get a little grumpy.
2026-09-17 13:58:30 -04:00
ISSOtm
0b9f8ab523
Use Section::typeInfo() more
2026-09-17 13:19:26 -04:00
Eldred Habert
3b250d5386
Emit auxiliary files even if asserts fail ( #2104 )
...
Closes #2100
2026-09-17 17:47:53 +02:00
ISSOtm
6f69867d04
Make more RGBLINK tests use at-files
...
Less special handling = good
Possibly this can be done to more tests, but this is what I found.
2026-09-17 10:25:47 -04:00
ISSOtm
960f82126f
Fix to actually allow one-past-the-end zero-sized sections in linker scripts
2026-09-17 10:19:47 -04:00
ISSOtm
b9b5c9a2b4
Avoid reporting redundant errors on too-large fixed sect addr
...
This would happen for any such section of non-zero size.
2026-09-17 10:17:26 -04:00
ISSOtm
e39dbe1752
Remove no-op in link test script
...
No, `printf` does not do that.
This works because making it read from stdin suppresses
any words after the first one.
2026-09-17 09:35:32 -04:00
ISSOtm
9f175f7923
Use SectionTypeInfo struct member functions for section type info
2026-09-17 09:33:21 -04:00
ISSOtm
6587941512
Allow scrambling SRAM banks up to the full 8-bit range
2026-09-15 23:06:19 -04:00
Eldred Habert
0fe43bf0cb
Use CMake-native methods to do our static-build macOS trickery ( #2083 )
...
This should remain equivalent for our current setups,
but play nicer with anyone wanting to experiment further.
It *may* break for someone building on an Intel Mac,
but this is a libpng limitation and thus out of our control.
2026-09-14 09:55:34 -04:00
Eldred Habert
c8e8a2f522
Avoid duplicating warning flags when linking with the Makefile ( #2085 )
...
The warning flag list with `make develop` is quite long,
and this duplication is making those command lines particularly indigestible.
2026-09-13 20:35:54 -04:00
Eldred Habert
de1e1ff688
Actually silence -Wformat et al. on MinGW ( #2084 )
...
Thus far, we have just ensured they wouldn't fail the build,
but they still pollute the build log, so we should silence them entirely.
2026-09-13 20:25:13 -04:00
ISSOtm
9d69a08909
Determine the number of fetch/clone jobs ourselves
...
Apparently our CI has some versions of Git too old to support zero to mean that.
2026-09-11 16:31:19 -04:00
ISSOtm
970bb84450
Fix updating ext-test repos from existing copies
...
The current setup fails with a "cannot read tree" error.
Also added flags to parallelise each fetch, which is relevant when submodules
are involved. (So, pretty much just starter-kit, haha.)
It would be nice to also parallelise the various fetches, but that would hit
the same remote multiple times, and could lead to rate-limiting...
2026-09-11 16:17:26 -04:00
ISSOtm
a0ab1802ff
Avoid fetching external repos on 32-bit Cygwin
...
The comment says we aren't doing this, but we are
2026-09-03 13:39:24 +02:00
ISSOtm
bf3ab7cb18
Explicitly specify the Python version to be installed
...
Turns out `python3-imaging` only redirects to Python 3.**6**'s version,
not the latest like the metapackage does.
2026-09-03 13:39:24 +02:00
ISSOtm
d9003f633a
Allow the CMake user to provide their own version string
...
This will be useful for downstream packagers, as well as rgbds-live
2026-08-15 20:25:35 +02:00
ISSOtm
cda77721d4
Avoid assuming that RGBDS is the root CMakeLists
...
This breaks rgbds-live building us as a subproject, for example
2026-08-15 20:05:17 +02:00
Eldred Habert
3b1606c63c
Fix typo'd APT option in release workflow
...
Fixing up bcff14b596
2026-07-20 21:53:43 +02:00
ISSOtm
3eb8c7e8f2
Let tests know they are being run under Cygwin
2026-07-05 20:58:50 -04:00
ISSOtm
4a77c42ed7
Remove redundant labels from tests
...
It's possible to filter tests by name (`-R`)
2026-07-02 10:39:59 -04:00
ISSOtm
b12eac356e
Try to automatically determine the test OS name
2026-07-02 10:39:59 -04:00
ISSOtm
82702d8149
Point out an ordering dep isn't a success one
2026-07-02 10:39:59 -04:00
ISSOtm
1f9cc9651a
Avoid fetching some repos twice
...
Also enables a nice bit of logic cleanup
2026-07-02 10:39:59 -04:00
ISSOtm
04b9c7fa3d
Move external tests files to tests/external/
2026-07-02 10:39:59 -04:00
ISSOtm
5e8a6cde20
Remove the need to explicitly list external tests
...
I like having a single source of truth!
2026-07-02 10:39:59 -04:00
ISSOtm
d59081a918
Shorten external test prop names slightly
...
Makes the scripts a bit easier to read, I think
2026-07-02 10:39:59 -04:00
ISSOtm
e3fc46f933
Remove static compile flags
...
We support CMake now, which can generate a more accurate `compile_commands.json` database
(and our `develop` preset automatically enables them)
2026-06-30 16:52:31 +02:00
ISSOtm
0ed8c2f8ee
Docu-comment an implicit correctness assumption
2026-05-14 14:47:23 +02:00
ISSOtm
d5186b088b
Link against (non-debug) MSVC runtime statically
2026-05-14 14:47:23 +02:00
ISSOtm
fee177d0b9
Link zlib and libpng statically by default
...
Only when we are building them ourselves, that is.
2026-05-14 14:47:23 +02:00
ISSOtm
1af8bdda16
Have CMake put RGBDS executables in our own dir
...
Not the top-level if we are part of a larger project!
2026-05-06 18:49:19 +02:00
ISSOtm
fa22b78e7d
Use type instead of which in shell scripts
...
The latter is not a Bash built-in,
and some environments turn out to produce non-conforming
return codes.
`type` is provided by Bash itself,
so we can rely on it better.
2026-05-05 16:03:33 +02:00
ISSOtm
37d39f91f6
Build using GCC 9 in CI
...
Checking that we don't regress this later.
Ubuntu doesn't package GCC 8, and we don't support it either,
so that is a good compromise for now.
2026-04-26 23:30:59 +02:00
ISSOtm
d5ce5329ea
Fix compilation with GCC 9
2026-04-26 23:30:59 +02:00
ISSOtm
6bcd79b997
Revert "Derive operator!= from operator== ( #1660 )"
...
This reverts commit 993879a2ed .
2026-04-26 23:30:59 +02:00
ISSOtm
decc5f7153
Let parallelism be determined automatically
...
Ninja is parallel by default;
however, it is not used on FreeBSD, so we still have to specify it there.
2026-04-20 15:32:54 +02:00
ISSOtm
a3c953ea46
Pass C++ compiler to CMake via env var
...
This is a little terser
2026-04-20 15:32:54 +02:00
ISSOtm
d43049c84d
Imply CMake source dir
...
Shortening our command lines slightly
2026-04-20 15:32:54 +02:00
ISSOtm
b6ff54acc3
Avoid libpng compilation on Windows spamming the Microsoft banner
2026-04-20 15:32:54 +02:00
ISSOtm
71fc449452
Use Ninja on Unix platforms
...
It has nicer UX, only showing full command lines when they fail.
It could also be slightly faster, though I've seen no measurable improvement.
2026-04-20 15:32:54 +02:00
ISSOtm
59dd1fbbf8
Correct naming of MSBuild CMake presets
...
You can build with MSVC without MSBuild
2026-04-20 15:32:54 +02:00
ISSOtm
2502d130eb
Use Ninja on Windows
...
MSBuild is slow, and its output is hard to parse visually
(it's all interwoven, like Make without `--output-sync`).
Since we use CMake anyway, we don't care about the build system.
2026-04-20 15:32:54 +02:00
ISSOtm
a78a268cb4
Pass convenience options to Make invoked via CMake
...
Can't pass them to plain Make invocations,
because we try to be compatible with macOS' old Make.
2026-04-20 15:32:54 +02:00
ISSOtm
aeedfb35a6
Set up Cygwin before cloning our repo
...
Otherwise different Gits set up and tear down the repo,
leading to issues.
2026-04-16 03:16:56 +02:00
ISSOtm
63609871f4
Cache downloaded dependencies for MinGW build also
...
Forgot about you!
2026-04-16 02:56:14 +02:00
ISSOtm
393eaa9dc1
Fix a Fix typo ;)
2026-04-16 02:54:40 +02:00
ISSOtm
185a5c5369
Add necessary flags to apt install for checkformat
2026-04-16 01:58:42 +02:00
ISSOtm
4ea15ed85a
Touch up checkformat.bash
...
The logic can be slightly simplified,
and the script doesn't require Bash after all.
2026-04-16 01:05:03 +02:00
ISSOtm
b218fd65a0
Install clang-format on ubuntu-slim runner
...
Unlike the “fat” runners, that's not installed by default.
Why that causes `find` to nonetheless exit normally, I have no idea.
2026-04-16 01:02:30 +02:00
ISSOtm
81edc27b6e
Fix two warnings on MinGW
2026-04-16 00:57:33 +02:00
ISSOtm
dc52487d31
Make -Wformat non-fatal on MinGW
...
See the comment for a rationale.
2026-04-16 00:57:33 +02:00
ISSOtm
6b994b1737
Fix some warnings raised by MSVC
2026-04-16 00:57:33 +02:00
ISSOtm
0849eb801e
Decouple -Werror from MORE_WARNINGS
2026-04-16 00:57:33 +02:00
ISSOtm
e6916360f4
Set some flags only for our own code
2026-04-16 00:57:33 +02:00
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