9.2 KiB
Dependencies
To build Eden, you MUST have a C++ compiler.
- On Linux, this is usually GCC 11+ or Clang v14+
- GCC 12 also requires Clang 14+
- On Windows, this is either:
- On macOS, this is Apple Clang
- This can be installed with
xcode-select --install
- This can be installed with
The following additional tools are also required:
- CMake 3.22+ - already included with the Android SDK
- Git for version control
- On Windows, you must install the Vulkan SDK as well
- A convenience script to install the latest SDK is provided in
.ci/windows/install-vulkan-sdk.ps1
- A convenience script to install the latest SDK is provided in
If you are on desktop and plan to use the Qt frontend, you must install Qt 6, and optionally Qt Creator (the recommended IDE for building)
- On Linux, *BSD and macOS, this can be done by the package manager
- If you wish to use Qt Creator, append
qtcreator
orqt-creator
to the commands seen below.
- If you wish to use Qt Creator, append
- MSVC/clang-cl users on Windows must install through the official installer
- Linux and macOS users may choose to use the installer as well.
- MSYS2 can also install Qt 6 via the package manager
If you are on Windows and NOT building with MSYS2, you may go back home and continue.
Externals
The following are handled by Eden's externals:
- FFmpeg (should use
-DYUZU_USE_EXTERNAL_FFMPEG=ON
) - SDL3 3.2.12+ (should use
-DYUZU_USE_EXTERNAL_SDL3=ON
OR-DYUZU_USE_BUNDLED_SDL3=ON
to reduce compile time)
All other dependencies will be downloaded and built by CPM if YUZU_USE_CPM
is on, but will always use system dependencies if available (UNIX-like only):
- Boost 1.57.0+
- Catch2 3.0.1 if
YUZU_TESTS
orDYNARMIC_TESTS
are on - fmt 8.0.1+
- lz4
- nlohmann_json 3.8+
- OpenSSL 1.1.1+
- ZLIB 1.2+
- zstd 1.5+
- enet 1.3+
- Opus 1.3+
- MbedTLS 3+
Vulkan 1.3.274+ is also needed:
Certain other dependencies will be fetched by CPM regardless. System packages can be used for these libraries, but many are either not packaged by most distributions OR have issues when used by the system:
- SimpleIni
- DiscordRPC
- cubeb
- libusb
- VulkanMemoryAllocator
- sirit
- httplib - if
ENABLE_QT_UPDATE_CHECKER
orENABLE_WEB_SERVICE
are on- This package is known to be broken on the AUR.
- cpp-jwt 1.4+ - if
ENABLE_WEB_SERVICE
is on - unordered-dense
- mcl - subject to removal
On amd64:
- xbyak - 7.22 or earlier is recommended
- zycore
- zydis 4+
- Note: zydis and zycore-c MUST match. Using one as a system dependency and the other as a bundled dependency WILL break things
On aarch64 OR if DYNARMIC_TESTS
is on:
- oaknut 2.0.1+
On riscv64:
- biscuit 0.9.1+
Commands
These are commands to install all necessary dependencies on various Linux and BSD distributions, as well as macOS. Always review what you're running before you hit Enter!
Click on the arrows to expand.
Arch Linux
sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 mbedtls ninja nlohmann-json openssl opus qt6-base qt6-multimedia sdl3 zlib zstd zip unzip zydis zycore vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers
- Building with QT Web Engine requires
qt6-webengine
as well. - Proper Wayland support requires
qt6-wayland
- GCC 11 or later is required.
Ubuntu, Debian, Mint Linux
sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2t64 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev libzydis-dev zydis-tools libzycore-dev vulkan-utility-libraries-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev
- 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
when running CMake.
Fedora Linux
sudo dnf install autoconf ccache cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel
- Force system libraries via CMake arguments:
- SDL3:
-DYUZU_USE_BUNDLED_SDL3=OFF -DYUZU_USE_EXTERNAL_SDL3=OFF
- FFmpeg:
-DYUZU_USE_EXTERNAL_FFMPEG=OFF
- SDL3:
- RPM Fusion is required for
ffmpeg-devel
- Fedora 32 or later is required.
- Fedora 36+ users with GCC 12 need Clang and should configure CMake with:
macOS
Install dependencies from Homebrew
brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl3 speexdsp zlib zstd cmake Catch2 molten-vk vulkan-loader spirv-tools
If you are compiling on Intel Mac, or are using a Rosetta Homebrew installation, you must replace all references of /opt/homebrew
with /usr/local
.
To run with MoltenVK, install additional dependencies:
brew install molten-vk vulkan-loader
FreeBSD
devel/cmake
devel/sdl30
devel/boost-libs
devel/catch2
devel/libfmt
devel/nlohmann-json
devel/ninja
devel/nasm
devel/autoconf
devel/pkgconf
devel/qt6-base
net/enet
multimedia/ffnvcodec-headers
multimedia/ffmpeg
audio/opus
archivers/liblz4
lang/gcc12
graphics/glslang
graphics/vulkan-utility-libraries
If using FreeBSD 12 or prior, use devel/pkg-config
instead.
OpenBSD
pkg_add -u
pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl3 libusb1.1.0.27
Solaris / OpenIndiana
Always consult the OpenIndiana package list to cross-verify availability.
Run the usual update + install of essential toolings: sudo pkg update && sudo pkg install git cmake
.
- gcc:
sudo pkg install developer/gcc-14
. - clang: Version 20 is broken, use
sudo pkg install developer/clang-19
.
Then install the libraries: sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl3 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt
.
MSYS2
- Open the
MSYS2 MinGW 64-bit
shell (mingw64.exe
) - Download and install all dependencies using:
pacman -Syu git make mingw-w64-x86_64-sdl3 mingw-w64-x86_64-cmake mingw-w64-x86_64-python-pip mingw-w64-x86_64-qt6 mingw-w64-x86_64-toolchain autoconf libtool automake-wrapper
- Add MinGW binaries to the PATH:
echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc
- Add VulkanSDK to the PATH:
echo 'PATH=$(readlink -e /c/VulkanSDK/*/Bin/):$PATH' >> ~/.bashrc
All Done
You may now return to the root build guide.