Build ‐ Linux ‐ Debian - daid/EmptyEpsilon GitHub Wiki
Current as of 2026-01-08 on Debian 13 Trixie. Also tested and confirmed on Debian 12 Bookworm and Raspberry Pi OS 4 Dec 2025.
Debian is the official build system for EmptyEpsilon releases and a recommended operating system for building EmptyEpsilon from source. These steps might also work on Debian derivatives, such as Ubuntu and Raspberry Pi OS.
For generic build instructions and additional options, see Build.
- Prerequisites
- Build EmptyEpsilon from the master branch
- Build a distributable package of a specific EmptyEpsilon version
- On older distributions
- For old versions of EmptyEpsilon
Install the required packages for compiling EmptyEpsilon from source:
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype-dev
The libfreetype-dev package might be libfreetype6-dev on older versions of Debian.
Create a working directory, then from within it run:
git clone https://github.com/daid/EmptyEpsilon.git
git clone https://github.com/daid/SeriousProton.git
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja
cmake --build EmptyEpsilon/_build
To launch the build without installing, run:
(cd EmptyEpsilon && _build/EmptyEpsilon)
To install this build globally on your local system, run:
sudo cmake --build EmptyEpsilon/_build --target install
To build a distributable .deb package, run:
cmake --build EmptyEpsilon/_build --target package
The package target builds a Debian package by default. To manually specify this, add the -DCPACK_GENERATOR=DEB flag to the build environment step:
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja -DCPACK_GENERATOR=DEB
A script executing the steps to build a Debian package of EmptyEpsilon's master branch from scratch on a newly installed Debian 13 system:
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone https://github.com/daid/EmptyEpsilon.git &&
git clone https://github.com/daid/SeriousProton.git &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja &&
cmake --build EmptyEpsilon/_build --target packageThe result should be an EmptyEpsilon.deb package located at emptyepsilon-compile/EmptyEpsilon/_build.
See Build for details on downloading a specific release's source or using a repository release tag, and for specifying a version number.
Download or clone the repository for a specific version. Given the 2024.12.08 official release as an example:
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype6-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone --branch EE-2024.12.08 --depth 1 https://github.com/daid/EmptyEpsilon.git &&
git clone --branch EE-2024.12.08 --depth 1 https://github.com/daid/SeriousProton.gitCreate a version.cmake file for that version in the EmptyEpsilon repository root directory. Note the CPACK_DEBIAN_PACKAGE_VERSION line; without it, the package version will be today's date instead of the expected EmptyEpsilon version.
cat <<EOF > EmptyEpsilon/version.cmake
set(PROJECT_VERSION 2024.12.08)
set(PROJECT_VERSION_MAJOR 2024)
set(PROJECT_VERSION_MINOR 12)
set(PROJECT_VERSION_PATCH 8)
set(CPACK_DEBIAN_PACKAGE_VERSION 2024.12.08)
EOFProvide version.cmake as a project include file:
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_build --target packageConfirm the package with dpkg:
dpkg --info EmptyEpsilon/_build/EmptyEpsilon.deb
dpkg should output something similar to the following, depending on your architecture and the version you defined:
new Debian package, version 2.0.
size 261765618 bytes: control archive=21570 bytes.
238 bytes, 10 lines control
76438 bytes, 744 lines md5sums
Architecture: amd64
Depends: libfreetype6, libsdl2-2.0-0
Description: EmptyEpsilon built using CMake
Maintainer: https://github.com/daid/
Package: emptyepsilon
Priority: optional
Section: devel
Version: 2024.12.08
Installed-Size: 301753
A script executing the steps to build a Debian package of an EmptyEpsilon release tag from scratch on a newly installed Debian 13 system:
For example, save this script as build-debian.sh and run it as build-debian.sh 2024.12.08 to build the EE-2024.12.08 release.
#!/bin/bash
# Capture version from first command-line argument
if [ $# -eq 0 ]; then
echo "Error: Version number is required"
echo "Usage: $0 <version>"
exit 1
fi
VERSION="$1"
# Validate YYYY.MM.DD format
if [[ ! "$VERSION" =~ ^[0-9]{4}\.[0-9]{2}\.[0-9]{2}$ ]]; then
echo "Error: Invalid version format. Use YYYY.MM.DD"
exit 1
fi
sudo apt install git build-essential cmake ninja-build zip unzip libsdl2-dev libfreetype-dev &&
mkdir -p emptyepsilon-compile &&
cd emptyepsilon-compile &&
git clone --branch EE-${VERSION} --depth 1 https://github.com/daid/EmptyEpsilon.git &&
git clone --branch EE-${VERSION} --depth 1 https://github.com/daid/SeriousProton.git &&
{
cat <<EOF > EmptyEpsilon/version.cmake
set(PROJECT_VERSION ${VERSION})
set(PROJECT_VERSION_MAJOR $(echo ${VERSION} | cut -d. -f1))
set(PROJECT_VERSION_MINOR $(echo ${VERSION} | cut -d. -f2 | sed 's/^0*//'))
set(PROJECT_VERSION_PATCH $(echo ${VERSION} | cut -d. -f3 | sed 's/^0*//'))
set(CPACK_DEBIAN_PACKAGE_VERSION ${VERSION})
EOF
} &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_build --target package &&
dpkg --info EmptyEpsilon/_build/EmptyEpsilon.debThe result should be an EmptyEpsilon.deb package located at emptyepsilon-compile/EmptyEpsilon/_build.
See Build for additional options, such as building releases with debugging symbols.
If you're running on an older operating system such as Ubuntu 18, you may need to upgrade your compiler:
sudo apt-get install gcc-8
sudo apt-get install g++-8
When you run cmake, use prefixes to direct CMake to the updated compiler:
CC=gcc-8 CXX=g++-8 cmake .. -G Ninja -DSERIOUS_PROTON_DIR=$PWD/../../SeriousProton/
You might also need to update CMake to version 3.11. To check its version, run:
cmake --version
To update CMake, remove the previous version:
sudo apt remove --purge cmake
Next, compile and install CMake 3.11 or later from source. These instructions are for 3.20.2; the version can be replaced with 3.11.0 if newer versions won't build.
sudo apt install build-essential libssl-dev
wget https://github.com/Kitware/CMake/releases/download/v3.20.2/cmake-3.20.2.tar.gz
tar -zxvf cmake-3.20.2.tar.gz
cd cmake-3.20.2
./bootstrap
make
sudo make install
Next, make a soft link to the new cmake binary:
cd /usr/bin
sudo ln -s /usr/local/bin/cmake cmake