Files
UltraGrid/.github/scripts/Linux/install_sdl.sh
2025-11-20 12:38:37 +01:00

61 lines
1.8 KiB
Bash
Executable File

#!/bin/sh -eu
dir=$(dirname "$0")
# shellcheck source=/dev/null
. "$dir/common.sh" # for get_build_deps_excl
# build dir that will be restored from cache
cache_dir=/var/tmp/sdl
features="-DSDL_KMSDRM=ON\
-DSDL_OPENGL=ON\
-DSDL_VULKAN=ON\
-DSDL_WAYLAND=ON\
-DSDL_X11=ON"
# install the deps - runs always (regardless the cache)
deps() {
sudo apt build-dep libsdl2
fluidsynth_build_dep=$(get_build_deps_excl libfluidsynth3 libsdl2-dev)
sdl2_ttf_build_dep=$(get_build_deps_excl libsdl2-ttf libsdl2-dev)
# shellcheck disable=SC2086 # intentional
sudo apt install $fluidsynth_build_dep $sdl2_ttf_build_dep libxtst-dev
}
# build SDL, SDL_ttf and fluidsynth and also install them
build_install() {
mkdir -p $cache_dir
cd $cache_dir
git clone --depth 1 https://github.com/libsdl-org/SDL
cmake -S SDL -B SDL/build
cmake --build SDL/build -j "$(nproc)"
sudo cmake --install SDL/build
git clone --depth 1 https://github.com/libsdl-org/SDL_ttf
cmake -S SDL_ttf -B SDL_ttf/build
cmake --build SDL_ttf/build -j "$(nproc)"
sudo cmake --install SDL_ttf/build
git clone --recurse-submodules --depth 1\
https://github.com/Fluidsynth/fluidsynth
# shellcheck disable=SC2086 # intentional
cmake $features -S fluidsynth -B fluidsynth/build
cmake --build fluidsynth/build -j "$(nproc)"
sudo cmake --install fluidsynth/build
}
# if cache is successfully restored, just install the builds
install_cached() {
cd $cache_dir
sudo cmake --install SDL/build
sudo cmake --install SDL_ttf/build
sudo cmake --install fluidsynth/build
}
deps
if [ -d $cache_dir ]; then
install_cached
else
build_install
fi