eden/docs/Options.md
crueter b7f2aa3dbd
[docs] refactor: full rewrite, generalization + dedup
Combines most of the stuff that was repeated thrice over verbatim into a
single common Build Instructions page, with additional caveats marked
elsewhere. Prettifies some stuff too because why not.

Signed-off-by: crueter <crueter@eden-emu.dev>
2025-09-15 00:16:55 -04:00

3.8 KiB

CMake Options

To change these options, add -DOPTION_NAME=NEWVALUE to the command line.

  • On Qt Creator, go to Project -> Current Configuration

Notes:

  • Defaults are marked per-platform.
  • "Non-UNIX" just means Windows/MSVC and Android (yes, macOS is UNIX
  • Android generally doesn't need to change anything; if you do, go to src/android/app/build.gradle.kts
  • To set a boolean variable to on, use ON for the value; to turn it off, use OFF
  • If a variable is mentioned as being e.g. "ON" for a specific platform(s), that means it is defaulted to OFF on others
  • TYPE is always boolean unless otherwise specified
  • Format:
    • OPTION_NAME (TYPE DEFAULT) DESCRIPTION

Options

  • YUZU_USE_CPM (ON for non-UNIX) Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched. See the CPM and Deps docs for more info.
  • ENABLE_WEB_SERVICE (ON) Enable multiplayer service
  • ENABLE_WIFI_SCAN (OFF) Enable WiFi scanning (requires iw on Linux) - experimental
  • YUZU_USE_BUNDLED_FFMPEG (ON for non-UNIX) Download (Windows, Android) or build (UNIX) bundled FFmpeg
  • ENABLE_CUBEB (ON) Enables the cubeb audio backend
  • YUZU_TESTS (ON) Compile tests - requires Catch2
  • YUZU_USE_PRECOMPILED_HEADERS (ON for non-UNIX) Use precompiled headers
  • YUZU_DOWNLOAD_ANDROID_VVL (ON) Download validation layer binary for Android
  • YUZU_ENABLE_LTO (OFF) Enable link-time optimization
    • Not recommended on Windows
    • UNIX may be better off appending -flto=thin to compiler args
  • YUZU_DOWNLOAD_TIME_ZONE_DATA (ON) Always download time zone binaries
    • Currently, build fails without this
  • YUZU_USE_FASTER_LD (ON) Check if a faster linker is available
    • Only available on UNIX
  • USE_SYSTEM_MOLTENVK (OFF, macOS only) Use the system MoltenVK lib (instead of the bundled one)
  • YUZU_TZDB_PATH (string) Path to a pre-downloaded timezone database (useful for nixOS)
  • ENABLE_OPENSSL (ON for Linux and *BSD) Enable OpenSSL backend for the ssl service
    • Always enabled if the web service is enabled
  • YUZU_USE_BUNDLED_OPENSSL (ON for MSVC) Download bundled OpenSSL build
    • Always on for Android
    • Unavailable on OpenBSD

The following options are desktop only:

  • ENABLE_SDL2 (ON) Enable the SDL2 desktop, audio, and input frontend (HIGHLY RECOMMENDED!)
    • Unavailable on Android
  • YUZU_USE_EXTERNAL_SDL2 (ON for non-UNIX) Compiles SDL2 from source
  • YUZU_USE_BUNDLED_SDL2 (ON for MSVC) Download a prebuilt SDL2
    • Unavailable on OpenBSD
    • Only enabled if YUZU_USE_CPM and ENABLE_SDL2 are both ON
  • ENABLE_LIBUSB (ON) Enable the use of the libusb input frontend (HIGHLY RECOMMENDED)
  • ENABLE_OPENGL (ON) Enable the OpenGL graphics frontend
    • Unavailable on Windows/ARM64 and Android
  • ENABLE_QT (ON) Enable the Qt frontend (recommended)
  • ENABLE_QT_TRANSLATION (OFF) Enable translations for the Qt frontend
  • ENABLE_QT_UPDATE_CHECKER (OFF) Enable update checker for the Qt frontend
  • YUZU_USE_BUNDLED_QT (ON for MSVC) Download bundled Qt binaries
  • YUZU_QT_MIRROR (string) What mirror to use for downloading the bundled Qt libraries
  • YUZU_USE_QT_MULTIMEDIA (OFF) Use QtMultimedia for camera support
  • YUZU_USE_QT_WEB_ENGINE (OFF) Use QtWebEngine for web applet implementation (requires the huge QtWebEngine dependency; not recommended)
  • USE_DISCORD_PRESENCE (OFF) Enables Discord Rich Presence (Qt frontend only)
  • YUZU_ROOM (ON) Enable dedicated room functionality
  • YUZU_ROOM_STANDALONE (ON) Enable standalone room executable (eden-room)
    • Requires YUZU_ROOM
  • YUZU_CMD (ON) Compile the SDL2 frontend (eden-cli) - requires SDL2
  • YUZU_CRASH_DUMPS Compile crash dump (Minidump) support"
    • Currently only available on Windows and Linux

See src/dynarmic/CMakeLists.txt for additional options--usually, these don't need changed