diff --git a/Building-for-Linux.md b/Building-for-Linux.md index 21490a2..0cc5745 100644 --- a/Building-for-Linux.md +++ b/Building-for-Linux.md @@ -14,65 +14,73 @@ Libraries will silently fall back to their vendored counterpart if they cannot be found on the system. -| Dependency | Vendored | Version | Note | Debian / Ubuntu | Fedora | Arch | Alpine | -| :----------------: | :------: | :------: | ---- | ----------------------------------------------------------- | ------------------ | --------------- | ------------------------------- | -| **Kernel Headers** | ⬜ | | | `linux-libc-dev` | `kernel-headers` | `linux-headers` | `linux-headers` | -| **fmt** | ✅ | >=10.1 | | `libfmt-dev` | `fmt-devel` | `fmt` | `fmt-dev` | -| **glslang** | ✅ | >=15.0 | | `glslang-tools` `glslang-dev` | `glslang-devel` | `glslang` | `glslang-dev` `spirv-tools-dev` | -| **pugixml** | ✅ | | | `libpugixml-dev` | `pugixml-devel` | `pugixml` | `pugixml-dev` | -| **enet** | ✅ | >=1.3.18 | | `libenet-dev` | `enet-devel` | `enet` | `enet-dev` | -| **xxhash** | ✅ | >=0.8.2 | | `libxxhash-dev` | `xxhash-devel` | `xxhash` | `xxhash-dev` | -| **bzip2** | ✅ | | | `libbz2-dev` | `bzip2-devel` | `bzip2` | `bzip2-dev` | -| **lzma** | ✅ | | | `liblzma-dev` | `xz-devel` | `xz` | `xz-dev` | -| **zstd** | ✅ | >=1.4.0 | | `libzstd-dev` | `libzstd-devel` | `zstd` | `zstd-dev` | -| **zlib** | ✅ | >=1.3.1 | | `zlib1g-dev` | `zlib-devel` | `zlib-ng` | `zlib-dev` | -| **minizip-ng** | ✅ | >=4.0.4 | | [Missing](https://github.com/zlib-ng/minizip-ng/issues/358) | `minizip-ng-devel` | `minizip-ng` | `minizip-ng-dev` | -| **lzo** | ✅ | | | `liblzo2-dev` | `lzo-devel` | `lzo` | `lzo-dev` | -| **lz4** | ✅ | >=1.8 | | `liblz4-dev` | `lz4-devel` | `lz4` | `lz4-dev` | -| **spng** | ✅ | | | `libspng-dev` | `libspng-devel` | `libspng` | `libspng-dev` | -| **libusb** | ✅ | | | `libusb-1.0-0-dev` | `libusb1-devel` | `libusb` | `libusb-dev` | -| **curl** | ✅ | | | `libcurl4-openssl-dev` or `libcurl4-gnutls-dev` | `libcurl-devel` | `curl` | `curl-dev` | -| **hidapi** | ✅ | | | `libhidapi-dev` | `hidapi-devel` | `hidapi` | `hidapi-dev` | +| Dependency | Vendored | Version | Note | Debian / Ubuntu | Fedora | Arch | Alpine | +| :----------------: | :------: | :------: | ---- | --------------------------------------------------------------------------------------------------------- | ------------------ | --------------- | ------------------------------- | +| **Kernel Headers** | ⬜ | | | `linux-libc-dev` | `kernel-headers` | `linux-headers` | `linux-headers` | +| **fmt** | ✅ | >=10.1 | | `libfmt-dev` | `fmt-devel` | `fmt` | `fmt-dev` | +| **glslang** | ✅ | >=15.0 | | `glslang-tools` `glslang-dev` | `glslang-devel` | `glslang` | `glslang-dev` `spirv-tools-dev` | +| **pugixml** | ✅ | | | `libpugixml-dev` | `pugixml-devel` | `pugixml` | `pugixml-dev` | +| **enet** | ✅ | >=1.3.18 | | `libenet-dev` | `enet-devel` | `enet` | `enet-dev` | +| **xxhash** | ✅ | >=0.8.2 | | `libxxhash-dev` | `xxhash-devel` | `xxhash` | `xxhash-dev` | +| **bzip2** | ✅ | | | `libbz2-dev` | `bzip2-devel` | `bzip2` | `bzip2-dev` | +| **lzma** | ✅ | | | `liblzma-dev` | `xz-devel` | `xz` | `xz-dev` | +| **zstd** | ✅ | >=1.4.0 | | `libzstd-dev` | `libzstd-devel` | `zstd` | `zstd-dev` | +| **zlib** | ✅ | >=1.3.1 | | `zlib1g-dev` | `zlib-devel` | `zlib-ng` | `zlib-dev` | +| **minizip-ng** | ✅ | >=4.0.4 | | `libminizip-ng-dev` In testing on [Debian](https://packages.debian.org/search?keywords=libminizip-ng-dev) | `minizip-ng-devel` | `minizip-ng` | `minizip-ng-dev` | +| **lzo** | ✅ | | | `liblzo2-dev` | `lzo-devel` | `lzo` | `lzo-dev` | +| **lz4** | ✅ | >=1.8 | | `liblz4-dev` | `lz4-devel` | `lz4` | `lz4-dev` | +| **spng** | ✅ | | | `libspng-dev` | `libspng-devel` | `libspng` | `libspng-dev` | +| **libusb** | ✅ | | | `libusb-1.0-0-dev` | `libusb1-devel` | `libusb` | `libusb-dev` | +| **curl** | ✅ | | | `libcurl4-openssl-dev` or `libcurl4-gnutls-dev` | `libcurl-devel` | `curl` | `curl-dev` | +| **hidapi** | ✅ | | | `libhidapi-dev` | `hidapi-devel` | `hidapi` | `hidapi-dev` | ### Optional Dependencies -| Dependency | Vendored | Version | Note | Debian / Ubuntu | Fedora | Arch | Alpine | -| :------------: | :------: | :----------: | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| **Qt6** | ⬜ | >=6.0 | Only optional if `-DENABLE_HEADLESS=ON` is set. | `qt6-base-dev` `qt6-base-private-dev` `qt6-svg-dev` | `qt6-qtbase-devel` `qt6-qtbase-private-devel` `qt6-qtsvg-devel` | `qt6-base` `qt6-svg` | `qt6-qtbase-dev` `qt6-qtsvg-dev` | -| **OpenGL** | ⬜ | | | `libgl1-mesa-dev` | `mesa-libGL-devel` | `libglvnd` | `glfw-dev` | -| **x11** | ⬜ | | | `libx11-dev` `libxrandr-dev` `libxi-dev` | `libX11-devel` `libXrandr-devel` `libXi-devel` | `libx11` `libxrandr` `libxi` | `libx11-dev` `libxrandr-dev` `libxi-dev` | -| **PkgConfig** | ⬜ | | | `pkg-config` | `pkgconf-pkg-config` | `pkgconf` | `pkgconf` | -| **egl** | ⬜ | | Disable missing warnings with `-DENABLE_EGL=OFF`. | `libegl1-mesa-dev` | `mesa-libEGL-devel` | `libglvnd` | `mesa-egl` | -| **FFmpeg** | ⬜ | | Disable missing warnings with `-DENCODE_FRAMEDUMPS=OFF`. | `libavcodec-dev` `libavformat-dev` `libavutil-dev` `libswresample-dev` `libswscale-dev` | `libavcodec-free-devel` `libavformat-free-devel` `libavutil-free-devel` `libswresample-free-devel` `libswscale-free-devel` | `ffmpeg` | `ffmpeg-dev` | -| **libudev** | ⬜ | | Only optional if `-DENABLE_HWDB=OFF` and `DENABLE_EVDEV=OFF` are set. | `libudev-dev` or `libeudev-dev` | `systemd-devel` | `systemd-libs` | `eudev-dev` | -| **libevdev** | ⬜ | | Only optional if `-DENABLE_EVDEV=OFF` is set. | `libevdev-dev` | `libevdev-devel` | `libevdev` | `libevdev-dev` | -| **SDL** | ✅ | >=3.2.0 | Disable with `-DENABLE_SDL=OFF`. | `libsdl3-dev` | `SDL3-devel` | `sdl3` | `sdl3-dev` | -| **cubeb** | ✅ | | Disable with `-DENABLE_CUBEB=OFF`. | `libcubeb-dev` | `cubeb-devel` | `cubeb` (Only in AUR) | Not in the repos | -| **SFML** | ✅ | >=3.0 | | ~~`libsfml-dev`~~ Version 3.x currently not available on [Debian](https://packages.debian.org/libsfml-dev) and [Ubuntu](https://packages.ubuntu.com/libsfml-dev). | ~~`SFML-devel`~~ Version 3.x [currently not available](https://bugzilla.redhat.com/show_bug.cgi?id=2312363) | `sfml` | ~~`sfml-dev`~~ Version 3.x [Currently not available](https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/85247) | -| **miniupnpc** | ✅ | >=1.6 | Disable with `-DUSE_UPNP=OFF`. | `libminiupnpc-dev` | `miniupnpc-devel` | `miniupnpc` | `miniupnpc-dev` | -| **mbedtls** | ✅ | >=2.0, <=3.0 | | ~~`libmbedtls-dev`~~ MbedTLS 2.x is no longer shipped from Debian Trixie forward and Ubuntu 25.04 forward. | ~~`mbedtls-devel`~~ MbedTLS 2.x is no longer shipped from Fedora 42 forward. | `mbedtls2` | `mbedtls2-dev` | -| **iconv** | ✅ | >=1.14 | | Built-in | Built-in | `libiconv` | Built-in | -| **mgba** | ✅ | | Disable with `-DUSE_MGBA=OFF` or `DENABLE_HEADLESS=ON`. | ~~`libmgba-dev`~~ Newer MGBA versions are currently broken with Dolphin. | Not in the repos | ~~`libmgba`~~ Newer MGBA versions are currently broken with Dolphin. | ~~`libmgba-dev`~~ Newer MGBA versions are currently broken with Dolphin. | -| **systemd** | ⬜ | | | `libsystemd-dev` | `systemd-devel` | `systemd-libs` | N/A | -| **gtest** | ✅ | | Disable with `-DENABLE_TESTS=OFF`. | `libgtest-dev` | `gtest-devel` | `gtest` | `gtest-dev` | -| **ALSA** | ⬜ | | Disable with `-DENABLE_ALSA=OFF`. | `libasound2-dev` | `alsa-lib-devel` | `alsa-lib` | `alsa-lib-dev` | -| **PulseAudio** | ⬜ | | Disable with `-DENABLE_PULSEAUDIO=OFF`. | `libpulse-dev` | `pulseaudio-libs-devel` | `libpulse` | `pulseaudio-dev` | -| **LLVM** | ⬜ | | Disable with `-DENABLE_LLVM=OFF`. | `llvm-dev` | `llvm-devel` | `llvm` | ~~`llvm-dev`~~ Broken packaging | -| **BlueZ** | ⬜ | | Disable with `-ENABLE_BLUEZ=OFF`. | `libbluetooth-dev` | `bluez-libs-devel` | `bluez-libs` | `bluez-dev` | -| **gettext** | ⬜ | | | `gettext` | `gettext` | `gettext` | `gettext` | +| Dependency | Vendored | Version | Note | Debian / Ubuntu | Fedora | Arch | Alpine | +| :------------: | :------: | :----------: | --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | +| **Qt6** | ⬜ | >=6.0 | Only optional if `-DENABLE_HEADLESS=ON` is set. | `qt6-base-dev` `qt6-base-private-dev` `qt6-svg-dev` | `qt6-qtbase-devel` `qt6-qtbase-private-devel` `qt6-qtsvg-devel` | `qt6-base` `qt6-svg` | `qt6-qtbase-dev` `qt6-qtsvg-dev` | +| **OpenGL** | ⬜ | | | `libgl1-mesa-dev` | `mesa-libGL-devel` | `libglvnd` | `glfw-dev` | +| **x11** | ⬜ | | | `libx11-dev` `libxrandr-dev` `libxi-dev` | `libX11-devel` `libXrandr-devel` `libXi-devel` | `libx11` `libxrandr` `libxi` | `libx11-dev` `libxrandr-dev` `libxi-dev` | +| **PkgConfig** | ⬜ | | | `pkg-config` | `pkgconf-pkg-config` | `pkgconf` | `pkgconf` | +| **egl** | ⬜ | | Disable missing warnings with `-DENABLE_EGL=OFF`. | `libegl1-mesa-dev` | `mesa-libEGL-devel` | `libglvnd` | `mesa-egl` | +| **FFmpeg** | ⬜ | | Disable missing warnings with `-DENCODE_FRAMEDUMPS=OFF`. | `libavcodec-dev` `libavformat-dev` `libavutil-dev` `libswresample-dev` `libswscale-dev` | `libavcodec-free-devel` `libavformat-free-devel` `libavutil-free-devel` `libswresample-free-devel` `libswscale-free-devel` | `ffmpeg` | `ffmpeg-dev` | +| **libudev** | ⬜ | | Only optional if `-DENABLE_HWDB=OFF` and `DENABLE_EVDEV=OFF` are set. | `libudev-dev` or `libeudev-dev` | `systemd-devel` | `systemd-libs` | `eudev-dev` | +| **libevdev** | ⬜ | | Only optional if `-DENABLE_EVDEV=OFF` is set. | `libevdev-dev` | `libevdev-devel` | `libevdev` | `libevdev-dev` | +| **SDL** | ✅ | >=3.2.0 | Disable with `-DENABLE_SDL=OFF`. | `libsdl3-dev` | `SDL3-devel` | `sdl3` | `sdl3-dev` | +| **cubeb** | ✅ | | Disable with `-DENABLE_CUBEB=OFF`. | `libcubeb-dev` | `cubeb-devel` | `cubeb` (Only in AUR) | Not in the repos | +| **SFML** | ✅ | >=3.0 | | `libsfml-dev` Version 3.x currently not available on [Debian](https://packages.debian.org/libsfml-dev). | ~~`SFML-devel`~~ Version 3.x [currently not available](https://bugzilla.redhat.com/show_bug.cgi?id=2312363) | `sfml` | ~~`sfml-dev`~~ Version 3.x [Currently not available](https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/85247) | +| **miniupnpc** | ✅ | >=1.6 | Disable with `-DUSE_UPNP=OFF`. | `libminiupnpc-dev` | `miniupnpc-devel` | `miniupnpc` | `miniupnpc-dev` | +| **mbedtls** | ✅ | >=2.0, <=3.0 | | ~~`libmbedtls-dev`~~ MbedTLS 2.x is no longer shipped from Debian Trixie forward and Ubuntu 25.04 forward. | ~~`mbedtls-devel`~~ MbedTLS 2.x is no longer shipped from Fedora 42 forward. | `mbedtls2` | `mbedtls2-dev` | +| **iconv** | ✅ | >=1.14 | | Built-in | Built-in | `libiconv` | Built-in | +| **mgba** | ✅ | | Disable with `-DUSE_MGBA=OFF` or `DENABLE_HEADLESS=ON`. | ~~`libmgba-dev`~~ Newer MGBA versions are currently broken with Dolphin. | Not in the repos | ~~`libmgba`~~ Newer MGBA versions are currently broken with Dolphin. | ~~`libmgba-dev`~~ Newer MGBA versions are currently broken with Dolphin. | +| **systemd** | ⬜ | | | `libsystemd-dev` | `systemd-devel` | `systemd-libs` | N/A | +| **gtest** | ✅ | | Disable with `-DENABLE_TESTS=OFF`. | `libgtest-dev` | `gtest-devel` | `gtest` | `gtest-dev` | +| **ALSA** | ⬜ | | Disable with `-DENABLE_ALSA=OFF`. | `libasound2-dev` | `alsa-lib-devel` | `alsa-lib` | `alsa-lib-dev` | +| **PulseAudio** | ⬜ | | Disable with `-DENABLE_PULSEAUDIO=OFF`. | `libpulse-dev` | `pulseaudio-libs-devel` | `libpulse` | `pulseaudio-dev` | +| **LLVM** | ⬜ | | Disable with `-DENABLE_LLVM=OFF`. | `llvm-dev` | `llvm-devel` | `llvm` | ~~`llvm-dev`~~ Broken packaging | +| **BlueZ** | ⬜ | | Disable with `-ENABLE_BLUEZ=OFF`. | `libbluetooth-dev` | `bluez-libs-devel` | `bluez-libs` | `bluez-dev` | +| **gettext** | ⬜ | | | `gettext` | `gettext` | `gettext` | `gettext` | ### System-Specific Instructions #### Debian / Ubuntu -Ubuntu users of versions prior to 25.04 may need alternative sources to meet minimum version requirements: +Ubuntu users of these versions may need alternative flags or sources to meet minimum version requirements: + +25.04 and older: - SDL: [PPA](https://launchpad.net/~hrzhu/+archive/ubuntu/sdl3-backport) OR `-DUSE_SYSTEM_SDL3=OFF` - FMT: [PPA](https://launchpad.net/~trldp/+archive/ubuntu/libfmt) OR `-DUSE_SYSTEM_FMT=OFF` - ENET: `-DUSE_SYSTEM_ENET=OFF` - ZLIB: `-DUSE_SYSTEM_ZLIB=OFF` -CMake Flags: `-DUSE_SYSTEM_MINIZIP-NG=OFF -DUSE_SYSTEM_SFML=OFF -DUSE_SYSTEM_MBEDTLS=OFF -DUSE_SYSTEM_LIBMGBA=OFF` +25.10 and older: + +- minizip-ng: `-DUSE_SYSTEM_MINIZIP-NG=OFF` +- SFML: `-DUSE_SYSTEM_SFML=OFF` + +Ubuntu CMake Flags: `-DUSE_SYSTEM_MBEDTLS=OFF -DUSE_SYSTEM_LIBMGBA=OFF` +Debian CMake Flags: `-DUSE_SYSTEM_MINIZIP-NG=OFF -DUSE_SYSTEM_SFML=OFF -DUSE_SYSTEM_MBEDTLS=OFF -DUSE_SYSTEM_LIBMGBA=OFF`
@@ -122,7 +130,7 @@ apt install \ # zlib zlib1g-dev \ # minizip-ng - ## Not packaged yet (but soon on Debian) + libminizip-ng-dev \ # lzo liblzo2-dev \ # lz4 @@ -134,8 +142,7 @@ apt install \ # libusb libusb-1.0-0-dev \ # SFML - ## libsfml-dev \ - ## SFML 3.0 is not yet shipped on Debian and Ubuntu + libsfml-dev \ # MiniUPNPC libminiupnpc-dev \ # MbedTLS