eden-miror/docs/Options.md
Kaydax ad2e1cc554
Some checks are pending
tx-src / sources (push) Waiting to run
Check Strings / check-strings (push) Waiting to run
[externals] Update to SDL3 (#3952)
Since the launch of the steam controller I think it's only best to push towards updating to SDL3 allowing for a wider range of controller support

I went ahead and started on getting it working. Everything here should be functional, I've personally tested it all on Arch Linux. Still untested on windows, so looking for feedback on that

Any feedback and help would be appreciated!

Main changes:
- Bump everything to SDL3
- Handle SDL3 audio and input
- Add steam controller support, including HD Rumble
- Improved battery reporting via the status icon by using real % rather than state alone

Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3952
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2026-05-18 19:07:41 +02:00

5 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

Dependencies

These options control dependencies.

  • YUZU_USE_BUNDLED_FFMPEG (ON for non-UNIX) Download a pre-built and configured FFmpeg
  • YUZU_USE_EXTERNAL_FFMPEG (ON for Solaris) Build FFmpeg from source
  • YUZU_DOWNLOAD_ANDROID_VVL (ON) Download validation layer binary for Android
  • YUZU_DOWNLOAD_TIME_ZONE_DATA (ON) Always download time zone binaries
    • Currently, build fails without this
  • YUZU_TZDB_PATH (string) Path to a pre-downloaded timezone database (useful for nixOS and Gentoo)
  • YUZU_USE_BUNDLED_MOLTENVK (ON, macOS only) Download bundled MoltenVK lib
  • YUZU_USE_BUNDLED_OPENSSL (ON for MSVC, Android, Solaris, and OpenBSD) Download bundled OpenSSL build
  • YUZU_USE_BUNDLED_SDL3 (ON for MSVC) Download a prebuilt SDL3

Miscellaneous

  • ENABLE_WEB_SERVICE (ON) Enable multiplayer service
  • ENABLE_WIFI_SCAN (OFF) Enable WiFi scanning (requires iw on Linux) - experimental
  • ENABLE_CUBEB (ON) Enables the cubeb audio backend
    • This option is subject for removal.
  • YUZU_TESTS (ON) Compile tests - requires Catch2
  • ENABLE_LTO (OFF) Enable link-time optimization
    • Not recommended on Windows
    • UNIX may be better off appending -flto=thin to compiler args
  • USE_FASTER_LINKER (OFF) Check if a faster linker is available
    • Not recommended outside of Linux
  • YUZU_INSTALL_UDEV_RULES (OFF) Install udev rules to enable hidraw access
    • Needed for gyroscopes
    • Only available on Linux

Flavors

These options control executables and build flavors.

  • YUZU_LEGACY (OFF): Apply patches to improve compatibility on some older GPUs at the cost of performance
  • NIGHTLY_BUILD (OFF): This is only used by CI. Do not use this unless you're making your own distribution and know what you're doing.
  • YUZU_STATIC_BUILD (OFF) Attempt to build using static libraries if possible
    • Not supported on Linux
    • Automatically set if YUZU_USE_BUNDLED_QT is on for non-Linux
  • ENABLE_UPDATE_CHECKER (OFF) Enable update checking functionality
  • YUZU_DISABLE_LLVM (OFF) Do not attempt to link to the LLVM demangler
    • Really only useful for CI or distribution builds

Desktop only:

  • YUZU_CMD (ON) Compile the SDL-based frontend (eden-cli)
  • YUZU_ROOM (OFF) Compile dedicated room functionality into the main executable
  • YUZU_ROOM_STANDALONE (OFF) Compile a separate executable for room functionality
  • YUZU_STATIC_ROOM (OFF) Compile the room executable only as a static, portable executable
    • This is only usable on Alpine Linux.

Desktop

The following options are desktop only.

  • ENABLE_LIBUSB (ON) Enable the use of the libusb input backend (HIGHLY RECOMMENDED)
  • ENABLE_OPENGL (ON) Enable the OpenGL graphics backend
    • Unavailable on Windows/ARM64
    • You probably shouldn't turn this off.

Qt

Also desktop-only, but apply strictly to Qt

  • ENABLE_QT (ON) Enable the Qt frontend (recommended)
  • ENABLE_QT_TRANSLATION (OFF) Enable translations for the Qt frontend
  • YUZU_USE_BUNDLED_QT (ON for MSVC) Download bundled Qt binaries
    • Not recommended on Linux. For Windows and macOS, the provided build is statically linked.
  • 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)

Retired Options

The following options were a part of Eden at one point, but have since been retired.

  • ENABLE_OPENSSL - MbedTLS was fully replaced with OpenSSL in #3606, because OpenSSL straight-up performs better.
  • ENABLE_SDL2 - While technically possible to not use SDL2 on desktop, this is NOT a supported configuration under any means, and adding this matrix to our build system was not worth the effort.
  • YUZU_USE_CPM - This option once had a purpose, but that purpose has long since passed us by. All builds use CPMUtil to manage dependencies now.
    • If you want to force the usage of system dependencies, use -DCPMUTIL_FORCE_SYSTEM=ON.
  • YUZU_USE_EXTERNAL_SDL - This is now handled automatically. It was included even after CPM for purposes that have not applied for a very long time.

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