Platform Support
Platform matrix
| Platform | Architecture | Compiler(s) | Backend(s) | Status | How it's verified |
|---|---|---|---|---|---|
| Linux | x86_64 | GCC 12+, Clang 15+ | EASYGL, VULKAN, BGFX, SDL_RENDERER | Supported | The only platform with automated CI. Full unit and GPU test suites run here. |
| Web (Emscripten) | WASM | Emscripten | EASYGL (WebGL 2) | Supported | Built locally via the web CMake preset. No CI job. Two demos run in-browser on this site. |
| Linux → Windows | x86_64 | MinGW-w64 (cross) | SDL_RENDERER | Cross-builds | Toolchain file exists and produces a real Windows binary; run under Wine. No CI job. |
| Windows (native) | x86_64 | MSVC 2022 / clang-cl | SDL_RENDERER | Planned | The build system has no MSVC-specific handling at all yet. Untested on native Windows hardware. |
| Android | ARM64, x86_64 | Android NDK | SDL_RENDERER | Blocked | CMake handles the NDK, and the sensor code uses real Android NDK APIs — but the cross-compile currently fails on build regressions in the sibling sharp-runtime library. |
| macOS | — | — | — | Not a target | SDL3 supports macOS, but CNA has no toolchain file, no CI, and no build evidence. Treat as unsupported. |
Only Linux is continuously verified. Every other row above depends on a build someone ran by hand. If you are choosing a target platform, weight that accordingly — and see Verification & Known Issues for exactly what CI does and does not cover.
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. The MinGW-w64 cross-compile path is verified today: CNA is cross-compiled from Linux and confirmed running under Wine, including real cross-platform networking (NetworkSession/SystemLink over WinSock2). Native MSVC 2022, clang-cl, and on-Windows MinGW-w64 builds are supported by the build system but not yet independently validated (see Roadmap).
Emscripten / WebAssembly
CNA's EASYGL backend compiles to WebAssembly via Emscripten and runs via WebGL 2. The House 3D Demo and the main CNA Demo both run in the browser today. FFmpeg video is excluded on this target. Full test suite validation and audio testing on Emscripten are ongoing.
SDL3's Emscripten backend is used. The game loop is adapted to Emscripten's emscripten_set_main_loop model. Asset loading uses Emscripten's preloaded filesystem.
Android
CNA runs on Android via SDL3's native Android support (JNI/Activity layer). The CMake toolchain for the Android NDK is configured and CNA has been validated on Android hardware with the SDL_RENDERER backend.
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.