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.

Table of contents

Prerequisites

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

Build EmptyEpsilon from the master branch

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

Build script

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/_build

The result should be an EmptyEpsilon binary located at emptyepsilon-compile/EmptyEpsilon/_build.

Build a specific EmptyEpsilon version

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.git

Create 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)
EOF

Provide 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/_build

Build script

A 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/_build

The result should be an EmptyEpsilon binary located at emptyepsilon-compile/EmptyEpsilon/_build.

Build with additional options

See Build for additional options, such as building releases with debugging symbols.

⚠️ **GitHub.com Fallback** ⚠️