Skip to content

Build and CI

bot edited this page Sep 14, 2026 · 1 revision

Build and CI

From source (desktop)

Prerequisites: git, Rust toolchain, CMake, C/C++ compilers. On Linux also libboost-dev, libstdc++-14-dev, libsndio-dev, X11 headers (libxext-dev, libx11-dev, …).

git clone https://github.com/KlugKlugTG/HyperHLE-Fork
cd HyperHLE-Fork
git submodule update --init

# Linux on the standard CI-like VM needs -latomic (OpenAL Soft static build):
RUSTFLAGS="-C link-arg=-latomic" cargo build --release

Run: cargo run --release -- path/to/app.app

Dynamically linked build (uses system SDL2/OpenAL instead of bundled): add --no-default-features. macOS note: Apple's OpenAL.framework is unsupported; use OpenAL Soft and set the linker path yourself.

Ship folders touchHLE_dylibs/, touchHLE_fonts/ and the license files with any distribution.

Android

Prereqs: Rust target aarch64-linux-android, cargo-ndk ≥ 3.4.0, Android SDK + NDK.

export ANDROID_NDK_HOME=…   export ANDROID_SDK_HOME=…
gradle build                # or: open android/ in Android Studio and build
gradle installDebug

If the Gradle lib-build step fails, debug it directly: cargo ndk -t arm64-v8a build.

CI workflows (.github/workflows/)

Workflow Trigger What it does
HyperHLE_release.yml push/PR to trunk, tags, manual Builds Windows/macOS/Linux/Android, caches Boost & Rust artifacts; tag builds → GitHub Releases; manual runs can force-publish
run_ipa.yml manual Downloads a provided .ipa/.app.zip URL, builds, and runs the app for N seconds on 3 OSes (xvfb on Linux) to smoke-test

Tests / lint / format

RUSTFLAGS="-C link-arg=-latomic" cargo test -- --skip test_app
dev-scripts/lint.sh      # comment-length check + clippy --deny warnings + cargo doc
dev-scripts/format.sh    # needs clang-format for C/C++ submodules

The test_app integration tests need a custom LLVM/SDK toolchain not present everywhere; on some branches clippy has pre-existing warnings with Rust 1.95+ — run plain cargo clippy to confirm no hard errors.

More details: dev-docs/building.md in the repo.

Clone this wiki locally