Files
cross-compilation-cmake-tem…/scripts/bootstrap_sdl_mixer_linux.sh
Colin Sames ac9d2f8648 Experimental support for SDL_mixer
Now working. We need support for SDL 3.4.0 but current wayland
dependency is not fulfilled.
2026-04-03 19:23:53 +02:00

73 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# One-time bootstrap: builds SDL2_mixer from source and installs it into prebuilt/linux/.
# SDL3 must already be bootstrapped via bootstrap_sdl_linux.sh before running this.
# Run this once on the Linux remote after cloning. Re-run only when upgrading SDL2_mixer.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
SDL_MIXER_VERSION="${1:-2.8.1}"
BUILD_TYPE="${2:-Release}"
BUILD_DIR="$PROJECT_ROOT/out/build/_sdl_mixer_bootstrap/linux"
PREBUILT_DIR="$PROJECT_ROOT/prebuilt/linux"
SDL_MIXER_SOURCE="$BUILD_DIR/SDL2_mixer-src"
# Install build dependencies (Debian 12 bookworm)
echo "Checking build dependencies..."
sudo apt-get update -qq
sudo apt-get install -y --no-install-recommends \
ninja-build cmake build-essential \
gcc-12 g++-12 \
libmpg123-dev libopusfile-dev libvorbis-dev libflac-dev
# Download SDL2_mixer source if not already present
if [ ! -d "$SDL_MIXER_SOURCE" ]; then
echo ""
echo "=== Downloading SDL2_mixer $SDL_MIXER_VERSION ==="
mkdir -p "$BUILD_DIR"
curl -L "https://github.com/libsdl-org/SDL_mixer/releases/download/release-${SDL_MIXER_VERSION}/SDL2_mixer-${SDL_MIXER_VERSION}.tar.gz" \
| tar -xz -C "$BUILD_DIR"
mv "$BUILD_DIR/SDL2_mixer-${SDL_MIXER_VERSION}" "$SDL_MIXER_SOURCE"
fi
build_sdl_mixer() {
local LINK_TYPE="$1"
local SHARED="OFF"
local STATIC="OFF"
if [ "$LINK_TYPE" = "dynamic" ]; then SHARED="ON"; else STATIC="ON"; fi
local OUT_DIR="$PREBUILT_DIR/SDL2_mixer-$LINK_TYPE"
local BUILD_OUT="$BUILD_DIR/$LINK_TYPE"
echo ""
echo "=== Building SDL2_mixer ($LINK_TYPE) for Linux ==="
# Wipe any stale build directory to avoid corrupted cache issues
if [ -d "$BUILD_OUT" ]; then
echo "Removing stale build directory: $BUILD_OUT"
rm -rf "$BUILD_OUT"
fi
cmake -S "$SDL_MIXER_SOURCE" -B "$BUILD_OUT" \
-G "Ninja" \
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
-DCMAKE_INSTALL_PREFIX="$OUT_DIR" \
-DCMAKE_C_COMPILER=gcc-12 \
-DCMAKE_CXX_COMPILER=g++-12 \
-DSDL2MIXER_SHARED="$SHARED" \
-DSDL2MIXER_STATIC="$STATIC" \
-DSDL2MIXER_INSTALL=ON \
-DSDL2MIXER_SAMPLES=OFF \
-DSDL2MIXER_MIDI_FLUIDSYNTH=OFF \
-DSDL2MIXER_WAVPACK=OFF \
-DSDL3_DIR="$PREBUILT_DIR/SDL3-$LINK_TYPE/lib/cmake/SDL3"
cmake --build "$BUILD_OUT"
cmake --install "$BUILD_OUT"
echo "=== Done: $OUT_DIR ==="
}
build_sdl_mixer "dynamic"
build_sdl_mixer "static"