A (likely not exhaustive list) of Principia's current platform support:
- Windows has always been supported, but the open source builds have generally only supported Windows 7+. However I made a custom toolchain building everything from the ground up to create separate builds that runs on Windows XP again.
- Android has always been supported, but the FOSS builds haven't supported anything <4.0. A FOSS build that runs on at least Gingerbread would be cool but I'm generally burnt out on Android stuff.
- Linux support was one of the first things I worked on when the source code released, the original devs were all Linux users but I worked on getting that into a more usable state for end-users (like not depending on Valgrind to run & such...). Builds with GCC or Clang, runs on glibc or musl, have gotten it running on a Raspberry Pi as well as on Nura/postmarketOS with configurable touch support from the Android version.
- I ported Principia to Haiku OS, but haven't been able to get Haiku on real hardware yet
- I ported Principia to macOS with a VM, also set up CI to build it too but I don't have any real Apple hardware to test with
- I ported Principia to the web browser and integrated it into the site so you can conveniently create levels in the sandbox or play levels from the community site in your web browser
- I ported Principia to the Nintendo Switch with devkitPro, but their SDL3 is a bit unfinished and I haven't gotten further along with that. I also don't have a homebrewed Switch either.
- I recently got Principia to compile for iOS again in a VM but doesn't render in iOS sim yet. There's also a iOS slopfork from someone else that's further along but we don't talk about that one.
Principia is extremely portable with little dependencies, I replaced the old build system with a unified CMake build system to make it easier to build for different platforms, and I have managed to get rid of stuff like GTK3 and replacing them with Dear Imgui-based dialogs, but the main limiting factor at this point tends to be OpenGL 2.1 / ES 2.0 and SDL3.
Big endian support feels like the only low-hanging fruit left, as I believe there are parts of the codebase that are currently not endian safe and warn about it in our porting doc.