Skip to content

Building and Installing

github-actions[bot] edited this page Aug 7, 2026 · 5 revisions

Building and Installing

Status reviewed 2026-08-06. The supported build is CMake + SDL3 with a C11 compiler. Release packages and source builds use the same hash-gated original-data admission rules described in Game Data.

Build from Source

Requirements

  • CMake 3.20+
  • Ninja build system
  • System C compiler (clang on macOS, gcc on Linux)
  • SDL3 (release-3.2.14 or later)
  • pkg-config

macOS

brew install cmake ninja sdl3 pkg-config
cmake -S . -B build -DCMAKE_C_COMPILER=cc -G Ninja
ninja -C build

Linux (Ubuntu/Debian)

sudo apt install build-essential cmake ninja-build pkg-config \
  libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev \
  libxfixes-dev libxss-dev libxtst-dev libwayland-dev \
  libxkbcommon-dev wayland-protocols

# SDL3 must be built from source (not yet in distro repos)
git clone --depth 1 --branch release-3.2.14 https://github.com/libsdl-org/SDL.git /tmp/SDL3
cmake -S /tmp/SDL3 -B /tmp/SDL3-build -G Ninja \
  -DCMAKE_BUILD_TYPE=Release -DSDL_SHARED=ON -DSDL_STATIC=OFF -DSDL_TESTS=OFF
cmake --build /tmp/SDL3-build --parallel
sudo cmake --install /tmp/SDL3-build
sudo ldconfig

cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
ninja -C build

Windows (MSYS2 UCRT64)

pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake \
  mingw-w64-ucrt-x86_64-ninja mingw-w64-ucrt-x86_64-sdl3
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build --target firestaff --parallel

Steam Deck

Use the Linux x86_64 packages from the release. Both a pacman .pkg.tar.zst and an AppImage are provided:

# pacman package
sudo pacman -U Firestaff-x.y.z-steamdeck-x86_64.pkg.tar.zst

# or AppImage
chmod +x Firestaff-x.y.z-steamdeck-x86_64.AppImage
./Firestaff-x.y.z-steamdeck-x86_64.AppImage

Install from Release Packages

macOS

Download the .dmg for your architecture (arm64 for Apple Silicon, x86_64 for Intel). Open the DMG and drag Firestaff to Applications. A .zip archive is also provided.

Windows

Download and run the Inno Setup installer (-windows-installer.exe), or extract the portable .zip.

Linux

# Debian/Ubuntu
sudo dpkg -i firestaff_x.y.z_amd64.deb

# Fedora/RHEL
sudo rpm -i firestaff-x.y.z.x86_64.rpm

ARM64 .deb and .rpm packages are also available.

iOS (AltStore Classic Sideload)

The .ipa is ad-hoc signed and designed for sideloading via AltStore Classic. No Apple Developer account is required.

  1. Install AltStore Classic on your Mac or Windows PC following the official guide.
  2. Connect your iPhone/iPad via USB.
  3. In AltStore, tap the + button and select the downloaded Firestaff-x.y.z-ios-arm64.ipa.
  4. AltStore will install the app on your device.

Requirements:

  • iOS 14.0 or later
  • iPhone or iPad with arm64 processor
  • AltStore Classic installed and configured
  • The app must be refreshed every 7 days via AltStore (Apple limitation for free provisioning)

Limitations:

  • Landscape orientation only (iPhone); all orientations supported on iPad
  • Game data files must be supplied separately (see Game Data)
  • Touch input maps to the SDL3 touch backend

Android

Download the .apk and install it directly:

  1. On your Android device, enable "Install from unknown sources" in Settings > Security (or Settings > Apps > Special app access > Install unknown apps).
  2. Transfer the .apk to your device or download it directly.
  3. Tap the .apk file to install.

Requirements:

  • Android 7.0 (API 24) or later
  • arm64-v8a processor (virtually all modern Android devices)
  • OpenGL ES 2.0 support

Limitations:

  • Landscape orientation only
  • Game data files must be supplied separately (see Game Data)
  • Debug-signed (sideload only, not from Google Play)

Running Tests

ctest --test-dir build -j4

Run a subset:

ctest --test-dir build -R "viewport" -j4 --output-on-failure

The repository contains thousands of registered checks. Some viewport and boot checks require original game data and are intentionally skip-safe or data-dependent when those files are absent. Use the focused game commands in the relevant technical reference before interpreting a full-suite result.

Clone this wiki locally