Building Azahar on Linux requires CMake 3.25 or later, a C++20-capable compiler, and a set of system libraries. The build system bundles many dependencies as Git submodules, so only a modest number of system packages are needed. The CI pipeline builds AppImages using Clang with Ninja, but GCC works equally well for local development.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/azahar-emu/azahar/llms.txt
Use this file to discover all available pages before exploring further.
Azahar requires GCC 10 or later or Clang 12 or later. Older compiler versions do not support all of the C++20 features the codebase relies on. On Ubuntu 20.04, you may need to install a newer GCC or Clang from a PPA or the official LLVM apt repository.
Install dependencies
- Ubuntu / Debian
- Fedora / openSUSE
dynarmic, fmt, cryptopp, soundtouch, cubeb, glslang, vulkan-headers, zstd, libressl, sdl2 (bundled), and boost—are included as Git submodules and compiled automatically as part of the build.
Build Azahar
Clone the repository with submodules
Clone the repository and initialize all Git submodules in one step:If you already cloned without
--recurse-submodules, fetch the submodules now:Configure with CMake
Create a build directory and run CMake. The default configuration enables the Qt frontend, SDL2, OpenAL, cubeb, libusb, and the Vulkan renderer:To speed up incremental builds, enable To build with Clang (as the CI does for AppImage releases):Key CMake options you can customize:
ccache:| Option | Default | Description |
|---|---|---|
ENABLE_QT | ON | Build the Qt6 desktop frontend |
ENABLE_SDL2 | ON | Enable SDL2 input/audio backend |
ENABLE_VULKAN | ON | Enable the Vulkan renderer |
ENABLE_OPENGL | ON (x86_64), OFF (aarch64) | Enable the OpenGL renderer |
ENABLE_OPENAL | ON | Enable the OpenAL audio backend |
ENABLE_CUBEB | ON | Enable the cubeb audio backend |
ENABLE_LIBUSB | ON | Enable libusb for GameCube Adapter support |
ENABLE_ROOM_STANDALONE | ON | Build the standalone azahar-room server |
USE_DISCORD_PRESENCE | OFF | Enable Discord Rich Presence |
ENABLE_QT_TRANSLATION | OFF | Bundle Qt UI translations |
On Linux aarch64,
ENABLE_OPENGL defaults to OFF because some aarch64 devices do not support OpenGL. You can enable it explicitly with -DENABLE_OPENGL=ON if your system supports it.Build
Compile the project:On a multi-core machine, Ninja automatically parallelizes the build. If you prefer to set the job count explicitly: