Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/eden-emulator/mirror/llms.txt

Use this file to discover all available pages before exploring further.

Eden exposes a set of CMake options that let you control which dependencies are bundled, which frontends are built, and other build behaviors. This page documents every available option organized by category.

How to set options

Add -DOPTION_NAME=VALUE to your CMake configure command:
cmake -S . -B build -DYUZU_TESTS=OFF -DENABLE_LTO=ON
Boolean options use ON or OFF. String options take a plain string value. In Qt Creator, go to Project → Current Configuration to view and edit options through the GUI.
Defaults are noted per platform. “Non-UNIX” means Windows/MSVC and Android (macOS is UNIX). If an option is marked as ON for specific platforms, it defaults to OFF everywhere else.

These options control how Eden sources its dependencies.
OptionTypeDefaultDescription
YUZU_USE_BUNDLED_FFMPEGboolON (non-UNIX)Download a pre-built and configured FFmpeg
YUZU_USE_EXTERNAL_FFMPEGboolON (Solaris)Build FFmpeg from source
YUZU_DOWNLOAD_ANDROID_VVLboolONDownload Vulkan validation layer binary for Android
YUZU_DOWNLOAD_TIME_ZONE_DATAboolONAlways download time zone binaries (build currently fails without this)
YUZU_TZDB_PATHstringPath to a pre-downloaded timezone database (useful for NixOS and Gentoo)
YUZU_USE_BUNDLED_MOLTENVKboolON (macOS only)Download a bundled MoltenVK library
YUZU_USE_BUNDLED_OPENSSLboolON (MSVC, Android, Solaris, OpenBSD)Download a bundled OpenSSL build
YUZU_USE_EXTERNAL_SDL2boolOFFCompile SDL2 from source
YUZU_USE_BUNDLED_SDL2boolON (MSVC)Download a prebuilt SDL2
Usage examples:
# Use an external FFmpeg build
cmake -S . -B build -DYUZU_USE_EXTERNAL_FFMPEG=ON

# Point to a local timezone database (NixOS/Gentoo)
cmake -S . -B build -DYUZU_TZDB_PATH=/path/to/tzdb

# Use bundled OpenSSL (recommended for FreeBSD, OpenIndiana)
cmake -S . -B build -DYUZU_USE_BUNDLED_OPENSSL=ON
General build behavior options.
OptionTypeDefaultDescription
ENABLE_WEB_SERVICEboolONEnable multiplayer web service
ENABLE_WIFI_SCANboolOFFEnable WiFi scanning (requires iw on Linux; experimental)
ENABLE_CUBEBboolONEnable the cubeb audio backend (subject to removal)
YUZU_TESTSboolONCompile tests (requires Catch2)
ENABLE_LTOboolOFFEnable link-time optimization
USE_FASTER_LINKERboolOFFCheck for and use a faster linker if available
Notes:
  • ENABLE_LTO is not recommended on Windows. On UNIX, appending -flto=thin to compiler args may be more effective.
  • USE_FASTER_LINKER is not recommended outside of Linux.
  • Disabling ENABLE_WEB_SERVICE also removes the cpp-jwt and httplib dependencies.
These options control build flavor, executable variants, and distribution-specific behavior.
OptionTypeDefaultDescription
YUZU_LEGACYboolOFFApply patches to improve compatibility on older GPUs at the cost of performance
NIGHTLY_BUILDboolOFFCI-only flag for nightly distribution builds. Do not use unless you’re making your own distribution and know what you’re doing.
YUZU_STATIC_BUILDboolOFFAttempt to build using static libraries where possible (not supported on Linux; automatically set when YUZU_USE_BUNDLED_QT is ON on non-Linux)
ENABLE_UPDATE_CHECKERboolOFFEnable update checking functionality
YUZU_DISABLE_LLVMboolOFFDo not attempt to link to the LLVM demangler (useful for CI or distribution builds)
Desktop-only flavor options:
OptionTypeDefaultDescription
YUZU_CMDboolONCompile the SDL2 command-line frontend (eden-cli)
YUZU_ROOMboolOFFCompile dedicated room functionality into the main executable
YUZU_ROOM_STANDALONEboolOFFCompile a separate executable for room functionality
YUZU_STATIC_ROOMboolOFFCompile the room executable as a static, portable binary (Alpine Linux only)
These options apply to desktop builds only.
OptionTypeDefaultDescription
ENABLE_LIBUSBboolONEnable the libusb input backend (highly recommended)
ENABLE_OPENGLboolONEnable the OpenGL graphics backend (unavailable on Windows/ARM64; not recommended to disable)
These options are desktop-only and apply specifically to the Qt frontend.
OptionTypeDefaultDescription
ENABLE_QTboolONEnable the Qt frontend (recommended)
ENABLE_QT_TRANSLATIONboolOFFEnable translations for the Qt frontend
YUZU_USE_BUNDLED_QTboolON (MSVC)Download bundled Qt binaries (not recommended on Linux; produces a statically linked build on Windows and macOS)
YUZU_QT_MIRRORstringMirror URL to use when downloading bundled Qt libraries
YUZU_USE_QT_MULTIMEDIAboolOFFUse QtMultimedia for camera support
YUZU_USE_QT_WEB_ENGINEboolOFFUse QtWebEngine for web applet support (adds a large dependency; not recommended)
USE_DISCORD_PRESENCEboolOFFEnable Discord Rich Presence (Qt frontend only)
Usage examples:
# Enable Qt Web Engine support (also install qt6-webengine on Arch, or equivalent)
cmake -S . -B build -DYUZU_USE_QT_WEB_ENGINE=ON

# Enable Discord Rich Presence
cmake -S . -B build -DUSE_DISCORD_PRESENCE=ON

# Use a custom Qt mirror for bundled downloads
cmake -S . -B build -DYUZU_QT_MIRROR=https://your-mirror.example.com
These options existed in earlier versions of Eden but have since been removed.
OptionReason for retirement
ENABLE_OPENSSLMbedTLS was fully replaced by OpenSSL in #3606. OpenSSL performs better.
ENABLE_SDL2While technically possible to omit SDL2 on desktop, this is not a supported configuration. Maintaining this build matrix was not worth the effort.
YUZU_USE_CPMAll builds now use CPMUtil to manage dependencies. To force system dependencies, use -DCPMUTIL_FORCE_SYSTEM=ON instead.
For additional options that control the Dynarmic JIT backend, see src/dynarmic/CMakeLists.txt. These options rarely need to be changed.

Build docs developers (and LLMs) love