Build ‐ Alpine - daid/EmptyEpsilon GitHub Wiki
Current as of 2026-01-08 on Alpine latest (3.23.2).
Tested on an x64 device. For detailed instructions for building with Alpine on a Raspberry Pi, see Build ‐ RPi ‐ Alpine.
For generic build instructions and additional options, see Build.
Enable the community repository by editing /etc/apk/repositories and uncommenting the lines for it.
Install the required packages for compiling EmptyEpsilon from source:
apk add git cmake ninja build-base sdl2-dev freetype-dev opus-dev
Create a working directory, then from within it run:
git clone https://github.com/daid/SeriousProton.git
git clone https://github.com/daid/EmptyEpsilon.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
A script executing the steps to build EmptyEpsilon's master branch from scratch as root on a newly installed Alpine 3.23.2 system:
sed -i 's_^#\(http://dl-cdn\.alpinelinux\.org/alpine/v3\.23/community\)_\1_' /etc/apk/repositories &&
apk add git cmake ninja build-base sdl2-dev freetype-dev opus-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 \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 &&
cmake --build EmptyEpsilon/_buildThe result should be an EmptyEpsilon binary 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:
git clone -b EE-2024.12.08 https://github.com/daid/EmptyEpsilon.git &&
git clone -b EE-2024.12.08 https://github.com/daid/SeriousProton.gitCreate a version.cmake file for that version in the EmptyEpsilon repository root directory.
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)
EOFProvide version.cmake as a project include file:
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_buildA script executing the steps to build an EmptyEpsilon release tag from scratch on a newly installed Alpine 3.23.2 system:
For example, save this script as build-alpine.sh and run it as build-alpine.sh 2024.12.08 to build the EE-2024.12.08 release.
#!/bin/sh
# 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
sed -i 's_^#\(http://dl-cdn\.alpinelinux\.org/alpine/v3\.23/community\)_\1_' /etc/apk/repositories &&
apk add git cmake ninja build-base sdl2-dev freetype-dev opus-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*//'))
EOF
} &&
cmake -S EmptyEpsilon -B EmptyEpsilon/_build -G Ninja \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_PROJECT_EmptyEpsilon_INCLUDE=version.cmake &&
cmake --build EmptyEpsilon/_buildThe result should be an EmptyEpsilon binary located at emptyepsilon-compile/EmptyEpsilon/_build.
See Build for additional options, such as building releases with debugging symbols.