mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-06-06 07:45:56 +08:00
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>
4.8 KiB
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
ONfor the value; to turn it off, useOFF - 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 FFmpegYUZU_USE_EXTERNAL_FFMPEG(ON for Solaris) Build FFmpeg from sourceYUZU_DOWNLOAD_ANDROID_VVL(ON) Download validation layer binary for AndroidYUZU_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 libYUZU_USE_BUNDLED_OPENSSL(ON for Android, Solaris, and OpenBSD) Download bundled OpenSSL buildYUZU_USE_EXTERNAL_SDL2(OFF) Compiles SDL2 from sourceYUZU_USE_BUNDLED_SDL2(OFF) Download a prebuilt SDL2
Miscellaneous
ENABLE_WEB_SERVICE(ON) Enable multiplayer serviceENABLE_WIFI_SCAN(OFF) Enable WiFi scanning (requires iw on Linux) - experimentalENABLE_CUBEB(ON) Enables the cubeb audio backend- This option is subject for removal.
YUZU_TESTS(ON) Compile tests - requires Catch2ENABLE_LTO(OFF) Enable link-time optimization- Not recommended on Windows
- UNIX may be better off appending
-flto=thinto 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 performanceNIGHTLY_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_QTis on for non-Linux
ENABLE_UPDATE_CHECKER(OFF) Enable update checking functionalityYUZU_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 executableYUZU_ROOM_STANDALONE(OFF) Compile a separate executable for room functionalityYUZU_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 frontendYUZU_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 librariesYUZU_USE_QT_MULTIMEDIA(OFF) Use QtMultimedia for camera supportYUZU_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.
- If you want to force the usage of system dependencies, use
See src/dynarmic/CMakeLists.txt for additional options--usually, these don't need changed