Platform Support

CNA platform targets — current status and roadmap

Platform matrix

PlatformArchitectureCompiler(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_RENDERER backend 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_loop model
  • 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.