Platform Support
Platform matrix
| Platform | Architecture | Compiler(s) | Backend(s) | Status |
|---|---|---|---|---|
| Linux | x86_64 | GCC 12+, Clang 15+ | EASYGL, SDL_RENDERER | Supported |
| Windows | x86_64 | MSVC 2022 | SDL_RENDERER | Planned |
| Windows | x86_64 | clang-cl | SDL_RENDERER | Planned |
| Windows | x86_64 | MinGW-w64 | SDL_RENDERER | Planned |
| Linux → Windows | x86_64 | MinGW-w64 (cross) | SDL_RENDERER | Planned |
| Android | ARM64, x86_64 | Android NDK | SDL_RENDERER | Planned |
| Web (Emscripten) | WASM | Emscripten | SDL_RENDERER | Planned |
Linux (x86_64)
Linux is the primary development platform for CNA. Both GCC 12+ and Clang 15+ are supported. The EASYGL and SDL_RENDERER backends are both validated here.
SDL3, SDL3_image, and SDL3_mixer are built from vendored submodules — no system SDL packages required. The sharp-runtime and optionally easy-gl dependencies must be present as sibling directories.
See Building for the exact commands.
Windows (x86_64)
Windows support targets the SDL_RENDERER backend with three supported toolchains:
- MSVC 2022 — Visual Studio 2022 v17.8+ with C++20/23 support. Open the project in Visual Studio or build from a Developer Command Prompt.
- clang-cl — LLVM for Windows targeting the MSVC ABI.
- MinGW-w64 — Either natively on Windows or cross-compiled from Linux.
SDL3 is built from vendored submodules on Windows — no pre-built SDL binaries or CMAKE_PREFIX_PATH configuration is needed. Windows validation is planned (see Roadmap).
Android
Android is an architectural target. SDL3 supports Android natively through its JNI/Activity layer. CNA's backend abstraction is designed to accommodate Android as a platform.
What is needed to reach Android support:
- CMake toolchain configuration for the Android NDK
- SDL3 Android build validation
- CNA platform layer adaptation for Android lifecycle events
- Validation of the
SDL_RENDERERbackend on Android hardware
Android builds are a planned Phase 2 milestone. See the Roadmap for context.
Emscripten / WebAssembly
Web builds via Emscripten are architecturally possible. SDL3 has Emscripten support. Building CNA to WebAssembly would enable browser-based demos and web distribution of CNA-based games.
What is needed to reach Emscripten support:
- CMake toolchain configuration for Emscripten
- SDL3 Emscripten build validation
- CNA game loop adaptation for Emscripten's
emscripten_set_main_loopmodel - Asset loading adaptation for web (fetch-based or bundled)
Emscripten is a planned Phase 2 milestone. See the Roadmap for context.
macOS
macOS is not currently a stated target, but SDL3 supports it. If the community expresses interest and a contributor is willing to validate and maintain it, macOS could be added as a target. It is not in the current roadmap.