GitHub Actions and ancient toolchains
CI is wonderful. I use it basically everywhere, and it's nice to get almost immediate
feedback for whether a commit I made was bogus or not.
That being said, it's fun to be able to make builds for weird esoteric platforms no
one except me (and maybe
Jade)
care about.
Building for ancient Windows
MinGW-w64 (the new, modern toolchain for Windows) does not support anything below XP
or systems without SSE2, which means we have to use an older toolchain. Fortunately,
the original MinGW is still very much available, so we can just use its toolchain.
This poses a problem though, how are we supposed to compile for subsystems that are
unavailable in the older toolchain? Well, by making a "franken-toolchain" of course! :)
What I did was add a configure flag to allow custom CFLAGS during the compilation
of files that need these new headers, and added the new MinGW-w64 headers during that
step. Et voila, it works, and now Schism can be run on as low as Windows 95 or NT 4!
Building for ancient Mac OS X
Now this is tricky, in particular because I want to support PowerPC, and these systems
never had a compiler version released that could target old versions on PowerPC.
I started by simply targeting Leopard, since it was the easiest. I just bundled together
the compilers from mesopotamian-era Xcode, and built Schism with
a custom version of SDL 2 patched for Leopard. It worked, and I was satisfied, until
I had an actual user that wanted to run Schism on Tiger.
Since the only machine I had on hand was running Panther, I decided to target it instead
of Tiger. Because the compiler version was simply too new, I had to specifically link
against the Leopard libgcc_s instead of the Panther one, and put the newer one in the
application bundle. And
it worked.
Why?
Because doing pointless things are fun, and
fun things are fun.