eden/docs/Options.md
crueter 18c11b88a0
[*] Drop MSVC support
To keep this PR description as short as possible, I will save the
ranting about MSVC for the blog post. In short: MSVC has been nothing
but a complete and utter slog to maintain for the *entire* existence of
Eden. CI is an absolute nightmare, it requires *completely* different
compile flags and definitions, has several sets of hacks dedicated to
getting its codegen to cooperate, is a horror story with respect to
dependency management, and is now completely broken and can't launch
games anymore.

Microsoft, you have long overstayed your welcome. And you're not getting
it back ever again. Good riddance.

Signed-off-by: crueter <crueter@eden-emu.dev>
2026-05-06 00:59:49 -04:00

4.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 everything except 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 Android, Solaris, and OpenBSD) Download bundled OpenSSL build
  • YUZU_USE_EXTERNAL_SDL2 (OFF) Compiles SDL2 from source
  • YUZU_USE_BUNDLED_SDL2 (OFF) Download a prebuilt SDL2

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

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 SDL2 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 (OFF) 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.

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