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 requires a handful of compilers, tools, and libraries before you can build it. This page lists every requirement by platform and provides exact install commands for a wide range of operating systems.

Compiler requirements

You must have a C++ compiler installed before anything else.
PlatformSupported compilers
LinuxGCC 11+ or Clang 14+ (GCC 12 also requires Clang 14+)
WindowsMSVC (Visual Studio 2022 Community, recommended), clang-cl, or MSYS2
macOSApple Clang via xcode-select --install
On Windows with MSVC, install the Desktop development with C++ workload. For clang-cl, install C++ Clang tools for Windows from the Visual Studio installer.

Required tools

In addition to a compiler, you need:
  • CMake 3.22+ — already included with the Android SDK
  • Git — use the Windows installer on Windows
  • Python 3.10+ — required to download external repositories
  • Vulkan SDK (Windows only) — install from LunarG; convenience scripts are provided at tools/windows/install-vulkan-sdk.ps1 (PowerShell 5+) and tools/windows/install-vulkan-sdk.sh (Git Bash)

Qt 6

If you are on desktop and plan to use the Qt frontend, you must install Qt 6. Qt Creator is the recommended IDE for building Eden.
  • On Linux, *BSD, and macOS, install Qt 6 via the package manager. Append qtcreator or qt-creator to the commands below if you also want Qt Creator.
  • On Windows with MSVC or clang-cl, install through the official Qt online installer.
  • MSYS2 can install Qt 6 via its package manager.
For help setting up Qt Creator, run ./install.sh -h qtcreator from the Eden source root.

Externals (CPM-managed dependencies)

The following libraries are handled by Eden’s externals system and can be controlled with CMake flags:
  • FFmpeg — use -DYUZU_USE_EXTERNAL_FFMPEG=ON
  • SDL2 2.0.18+ — use -DYUZU_USE_EXTERNAL_SDL2=ON or -DYUZU_USE_BUNDLED_SDL2=ON to reduce compile time
All other dependencies are downloaded and built by CPM if needed, but will use system packages when available on UNIX-like systems:
  • Boost 1.57.0+
  • Catch2 3.0.1+ (if YUZU_TESTS or DYNARMIC_TESTS are enabled)
  • fmt 8.0.1+
  • lz4
  • nlohmann_json 3.8+
  • OpenSSL 3+
  • ZLIB 1.2+
  • zstd 1.5+
  • enet 1.3+
  • Opus 1.3+
Vulkan 1.3.274+ is also required:
  • VulkanUtilityLibraries
  • VulkanHeaders
  • SPIRV-Tools
  • SPIRV-Headers
Certain other dependencies are always fetched by CPM (system packages can be used but may have issues):
  • SimpleIni
  • DiscordRPC
  • cubeb
  • libusb
  • VulkanMemoryAllocator
  • sirit
  • httplib (if ENABLE_UPDATE_CHECKER or ENABLE_WEB_SERVICE are on; known to be broken on the AUR)
  • cpp-jwt 1.4+ (if ENABLE_WEB_SERVICE is on)
  • unordered-dense
Architecture-specific dependencies:
  • amd64: xbyak (7.22 or earlier recommended)
  • aarch64 or if DYNARMIC_TESTS is on: oaknut 2.0.1+
  • riscv64: biscuit 0.9.1+

Install commands by platform

Always review commands before running them.
# Enable the GURU overlay first
sudo emerge -a app-eselect/eselect-repository
sudo eselect repository enable guru
sudo emaint sync -r guru

# Install all dependencies
sudo emerge -a \
    app-arch/lz4 app-arch/zstd app-arch/unzip \
    dev-libs/libfmt dev-libs/libusb dev-libs/mcl dev-libs/sirit \
    dev-libs/unordered_dense dev-libs/boost dev-libs/openssl dev-libs/discord-rpc \
    dev-util/spirv-tools dev-util/spirv-headers dev-util/vulkan-headers \
    dev-util/vulkan-utility-libraries dev-util/glslang \
    media-gfx/renderdoc media-libs/libva media-libs/opus media-video/ffmpeg \
    media-libs/VulkanMemoryAllocator media-libs/libsdl2 media-libs/cubeb \
    net-libs/enet \
    sys-libs/zlib \
    dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \
    games-util/gamemode \
    net-wireless/wireless-tools \
    dev-qt/qtbase:6 dev-libs/quazip \
    virtual/pkgconfig

Platform notes

  • On amd64, also add dev-libs/xbyak
  • On riscv64, also add dev-libs/biscuit (currently unavailable)
  • On aarch64, also add dev-libs/oaknut
  • If tests are enabled, also add dev-libs/oaknut and dev-cpp/catch
Required USE flags:
  • dev-qt/qtbase network concurrent dbus gui widgets
  • dev-libs/quazip qt6
  • media-libs/libsdl2 haptic joystick sound video
  • dev-cpp/cpp-httplib ssl
The games-emulation/eden package is available in GURU. If you run into build issues, compare against the ebuild.
  • Building with Qt Web Engine requires qt6-webengine.
  • Proper Wayland support requires qt6-wayland.
  • GCC 11 or later is required.
  • Eden is also available as an AUR package.
  • Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
  • To enable Qt Web Engine, add -DYUZU_USE_QT_WEB_ENGINE=ON to your CMake command.
  • RPM Fusion is required for ffmpeg-devel.
  • Fedora 32 or later is required.
  • Fedora 36+ users with GCC 12 need Clang: cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build
  • For OpenEuler or derivatives, also install: SDL2-devel pkg-config fmt-dev nlohmann-json-dev
Enable the community repository with setup-apkrepos -c before installing.
Note that nlohmann-json is packaged as json-c++ on Void.
A shell.nix convenience script is provided at the root of the Eden repository. Run nix-shell from there.For a pure build (no downloaded deps), use -DYUZU_USE_CPM=ON -DCPMUTIL_FORCE_SYSTEM=ON.
If compiling on Intel Mac or using a Rosetta Homebrew installation, replace all references to /opt/homebrew with /usr/local.macOS is largely untested. Expect crashes, significant Vulkan issues, and related instability.
If using FreeBSD 12 or earlier, use devel/pkg-config instead of devel/pkgconf.The available OpenSSL port (3.0.17) is out of date; add -DYUZU_USE_BUNDLED_OPENSSL=ON to your CMake command.Gamepad/controller support may be broken on FreeBSD 15.0 due to an SDL conflict with the new usbhid(2) driver. Workaround: add hw.usb.usbhid.enable="0" to /boot/loader.conf.
NetBSD’s default g++-10 is too old. Install clang-19 with pkgin install clang-19, or gcc14/gcc15.As of 2026-02-07, do not install vulkan-headers from pkgsrc — it is older than required. Build a newer version from source.glslang is not available in binary form; you must build it yourself:
pkgin python313
git clone --depth=1 https://github.com/KhronosGroup/glslang.git
cd glslang
python3.13 ./update_glslang_sources.py
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j`nproc`
cmake --install build
System Boost does not include context (as of 7.8). You may need to add -DYUZU_USE_CPM=ON -DBoost_FORCE_BUNDLED=ON.Builds are currently affected by a lack of std::jthread support. Either compile libc++ manually or wait for ports to catch up.
As of 2026-02-07, do not install vulkan-headers or vulkan-utility-libraries from packages — version 1.3.289 is too old.Default g++ is outdated; install gcc14 and point CMake to it: -DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14.
Qt Widgets is currently broken on OpenIndiana. Add -DENABLE_QT=OFF to your configure command for now.Always consult the OpenIndiana package list to verify package availability. System OpenSSL generally does not work; use -DYUZU_USE_BUNDLED_OPENSSL=ON instead.
Most dependencies are missing on OmniOS; use -DCPMUTIL_FORCE_BUNDLED=ON -DYUZU_USE_EXTERNAL_SDL2=ON.You must build glslang yourself (see the OmniOS section of the Caveats page for details).
  • Only the MINGW64 environment (or CLANGARM64 on ARM) is tested.
  • Open the MSYS2 MinGW 64-bit shell (mingw64.exe) before running the install command.
  • Add MinGW binaries to PATH: echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc
  • Using qt6-static is possible if you build with -DYUZU_STATIC_BUILD=ON.
Run pkgman full-sync before installing. GPU support is limited; install mesa_lavapipe for acceptable performance.glslangValidator will crash on HaikuOS. You must build glslang yourself using the patch at .patch/glslang/0001-haikuos-fix.patch.Disable cubeb or uninstall cubeb_devel — it will not work. Uninstall quazip1_qt6_devel if present.
Once all dependencies are installed, return to the build guide to continue.

Build docs developers (and LLMs) love