Build ‐ Linux ‐ Fedora - daid/EmptyEpsilon GitHub Wiki

Be sure to check Build for generic instructions.

Current as of 2025-07-24 on Fedora 42

⚠️ Before October 2021, the project relied on SFML. Check the previous instructions if you're building for an older version.

You can build EmptyEpsilon for Linux on Fedora systems. Cross-compilation of Windows builds is not supported on Fedora; see Build ‐ Windows on Linux for instructions compatible with and tested on Debian and Ubuntu.

Requirements

Install the prerequisite packages:

dnf install git gcc gcc-c++ cmake python3 ninja-build SDL2-devel SDL2_gfx-devel SDL2_image-devel SDL2_mixer-devel SDL2_ttf-devel SDL2_net-devel rpm-build

Note that on Fedora 42 and later, SDL2-devel is a metapackage that installs SDL3 with SDL2 compatibility libraries (SDL3-devel and sdl2-compat-devel). Errors in the compatibility libraries might introduce bugs or unexpected behaviors to EmptyEpsilon because it's designed for SDL2. See Build SDL2 from source for an alternative method.

Clone the repositories:

git clone https://github.com/daid/SeriousProton.git
git clone https://github.com/daid/EmptyEpsilon.git

Build latest version

Update the repositories to the latest versions of the master branch, then build the source:

cd SeriousProton
git checkout master
git pull
cd ../EmptyEpsilon
git checkout master
git pull

# Build the source:
mkdir -p _build
cd _build
cmake .. -G Ninja -DCPACK_GENERATOR="RPM" -DSERIOUS_PROTON_DIR=$PWD/../../SeriousProton/
ninja

To create a .rpm package, run ninja package. The resulting RPM requires the freetype and SDL2 packages as dependencies.

To create a .deb package with ninja package, remove -DCPACK_GENERATOR="RPM" from the cmake line.

To build from a different git tag or ref, replace master in git checkout master.

To set the EmptyEpsilon version, set the CPACK_PACKAGE_VERSION values as flags, such as -DCPACK_PACKAGE_VERSION_MAJOR=2024 -DCPACK_PACKAGE_VERSION_MINOR=12 -DCPACK_PACKAGE_VERSION_PATCH=08, as described in the Build doc.

Troubleshooting

If the cmake command fails with a message about Ninja support for RPATH, add the -DCMAKE_BUILD_WITH_INSTALL_RPATH=true flag:

cmake .. -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_WITH_INSTALL_RPATH=true -DSERIOUS_PROTON_DIR=$PWD/../../SeriousProton/

Build SDL2 from source

If building EmptyEpsilon with sdl2-compat causes serious stability issues with EE, file detailed issues with the libsdl-org/sdl2-compat project. Fedora project maintainers have stated that SDL2 will not be packaged for the project from Fedora 42 onward, so building SDL2 from source is the only way to build EmptyEpsilon as intended.

You can build EmptyEpsilon with SDL2 compiled and installed from source. Install the prerequisite packages listed in Requirements, as well as:

sudo dnf install -y alsa-lib-devel

Then clone the SDL2 branch of the SDL repository, build it from source, and install it:

git clone https://github.com/libsdl-org/SDL.git -b SDL2
cd SDL
mkdir build
cd build
../configure
make
sudo make install

Finally, rebuild EmptyEpsilon with the new SDL2 installation in place.