Platform Support

CNA platform targets - current status and roadmap

Platform matrix

PlatformArchitectureCompiler(s)Backend(s)StatusHow 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.