SuperTuxKart 1.5 upstream source (from official release tarball)
This commit is contained in:
Executable
+797
@@ -0,0 +1,797 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# (C) 2020 Dawid Gan, under the Holy Hedgehog License (do whatever you want)
|
||||
#
|
||||
|
||||
# This is a build script that creates STK linux package.
|
||||
#
|
||||
# To run the script you need debootstrap and schroot packages, and working
|
||||
# chroot environment.
|
||||
#
|
||||
# The build environment can be created using debootstrap:
|
||||
#
|
||||
# debootstrap --arch i386 --components=main \
|
||||
# jessie ./chroot-jessie32 http://ftp.debian.org/debian
|
||||
#
|
||||
# debootstrap --arch amd64 --components=main \
|
||||
# jessie ./chroot-jessie64 http://ftp.debian.org/debian
|
||||
#
|
||||
#
|
||||
# Here is example configuration for schroot:
|
||||
# /etc/schroot/chroot.d/chroot-jessie32.conf
|
||||
#
|
||||
# [chroot-jessie32]
|
||||
# description=Debian Jessie
|
||||
# personality=linux32
|
||||
# directory=/path/to/chroot-jessie32
|
||||
# root-users=deve
|
||||
# type=directory
|
||||
# users=deve
|
||||
#
|
||||
#
|
||||
# /etc/schroot/chroot.d/chroot-jessie64.conf
|
||||
#
|
||||
# [chroot-jessie64]
|
||||
# description=Debian Jessie 64-bit
|
||||
# #personality=linux32
|
||||
# directory=/path/to/chroot-jessie64
|
||||
# root-users=deve
|
||||
# type=directory
|
||||
# users=deve
|
||||
#
|
||||
#
|
||||
# Packages that are needed to compile all STK dependencies have to be installed
|
||||
# manually inside both chroot directories.
|
||||
|
||||
|
||||
export DIRNAME="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
######################## CONFIG ########################
|
||||
|
||||
export STK_VERSION="git`date +%Y%m%d`"
|
||||
export THREADS_NUMBER=`nproc`
|
||||
export SCHROOT_32BIT_NAME="chroot-buster32"
|
||||
export SCHROOT_64BIT_NAME="chroot-buster64"
|
||||
export SCHROOT_ARMV7_NAME="chroot-buster-armhf"
|
||||
export SCHROOT_ARM64_NAME="chroot-buster-arm64"
|
||||
export SCHROOT_RISCV_NAME="chroot-trixie-riscv64"
|
||||
|
||||
export STKCODE_DIR="$DIRNAME/.."
|
||||
export STKASSETS_DIR="$STKCODE_DIR/../supertuxkart-assets"
|
||||
export OPENGLRECORDER_DIR="$STKCODE_DIR/../libopenglrecorder"
|
||||
export STKEDITOR_DIR="$STKCODE_DIR/../supertuxkart-editor"
|
||||
|
||||
export BLACKLIST_LIBS="ld-linux libbsd.so libc.so libdl.so libdrm libexpat \
|
||||
libGL libgl libm.so libmvec.so libpthread libresolv \
|
||||
librt.so libX libxcb libxshm \
|
||||
libEGL libgbm libwayland libffi bcm_host libvc"
|
||||
|
||||
export BUILD_DIR="build-linux"
|
||||
export DEPENDENCIES_DIR="$STKCODE_DIR/dependencies-linux"
|
||||
export STK_INSTALL_DIR="$STKCODE_DIR/build-linux-install"
|
||||
|
||||
export STATIC_GCC=1
|
||||
|
||||
# Use it if you build STK with Debian Jessie
|
||||
export ENABLE_JESSIE_HACKS=1
|
||||
|
||||
########################################################
|
||||
|
||||
|
||||
# A helper function that checks if error ocurred
|
||||
check_error()
|
||||
{
|
||||
if [ $? -gt 0 ]; then
|
||||
echo "Error ocurred."
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
write_run_game_sh()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
export INSTALL_DIR=$1
|
||||
export FILE="$INSTALL_DIR/run_game.sh"
|
||||
|
||||
echo '#!/bin/sh' > "$FILE"
|
||||
echo '' >> "$FILE"
|
||||
echo 'export DIRNAME="$(dirname "$(readlink -f "$0")")"' >> "$FILE"
|
||||
echo 'export SYSTEM_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"' >> "$FILE"
|
||||
echo '' >> "$FILE"
|
||||
echo 'export SUPERTUXKART_DATADIR="$DIRNAME"' >> "$FILE"
|
||||
echo 'export SUPERTUXKART_ASSETS_DIR="$DIRNAME/data/"' >> "$FILE"
|
||||
echo '' >> "$FILE"
|
||||
echo 'cd "$DIRNAME"' >> "$FILE"
|
||||
echo '' >> "$FILE"
|
||||
echo 'export LD_LIBRARY_PATH="$DIRNAME/lib:$LD_LIBRARY_PATH"' >> "$FILE"
|
||||
echo '"$DIRNAME/bin/supertuxkart" "$@"' >> "$FILE"
|
||||
echo '' >> "$FILE"
|
||||
}
|
||||
|
||||
build_stk()
|
||||
{
|
||||
if [ -z "$1" ] || [ -z "$2" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
export ARCH_OPTION="$1"
|
||||
export STK_CMAKE_FLAGS="$2"
|
||||
export DEPENDENCIES_DIR="$DEPENDENCIES_DIR-$ARCH_OPTION"
|
||||
export BUILD_DIR="$BUILD_DIR-$ARCH_OPTION"
|
||||
export INSTALL_DIR="$DEPENDENCIES_DIR/dependencies"
|
||||
export INSTALL_LIB_DIR="$INSTALL_DIR/lib"
|
||||
export INSTALL_INCLUDE_DIR="$INSTALL_DIR/include"
|
||||
|
||||
export PKG_CONFIG_PATH="$INSTALL_LIB_DIR/pkgconfig"
|
||||
export CFLAGS="-I$INSTALL_INCLUDE_DIR"
|
||||
export CPPFLAGS="-I$INSTALL_INCLUDE_DIR"
|
||||
export LDFLAGS="-Wl,-rpath,$INSTALL_LIB_DIR -L$INSTALL_LIB_DIR"
|
||||
|
||||
export PATH="$INSTALL_DIR/bin:$PATH"
|
||||
|
||||
if [ "$STATIC_GCC" -gt 0 ]; then
|
||||
LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++"
|
||||
fi
|
||||
|
||||
cd "$STKCODE_DIR"
|
||||
mkdir -p "$DEPENDENCIES_DIR"
|
||||
|
||||
# CMake
|
||||
if [ ! -f "$DEPENDENCIES_DIR/cmake.stamp" ]; then
|
||||
echo "Compiling CMake"
|
||||
git clone --depth 1 -b v3.24.1 https://github.com/Kitware/CMake.git "$DEPENDENCIES_DIR/cmake"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/cmake"
|
||||
./bootstrap --prefix="$INSTALL_DIR" \
|
||||
--parallel=$THREADS_NUMBER \
|
||||
-- -DCMAKE_USE_OPENSSL=0 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/cmake.stamp"
|
||||
fi
|
||||
|
||||
# ISPC
|
||||
if [ ! -f "$DEPENDENCIES_DIR/ispc.stamp" ]; then
|
||||
if [ "$ARCH_OPTION" = "x86_64" ]; then
|
||||
echo "Downloading ISPC"
|
||||
|
||||
mkdir -p "$DEPENDENCIES_DIR/ispc"
|
||||
cd "$DEPENDENCIES_DIR/ispc"
|
||||
ISPC_VERSION="v1.18.0"
|
||||
wget https://github.com/ispc/ispc/releases/download/$ISPC_VERSION/ispc-$ISPC_VERSION-linux.tar.gz -O ispc.tar.gz
|
||||
check_error
|
||||
tar -xzf "ispc.tar.gz"
|
||||
check_error
|
||||
cp "$DEPENDENCIES_DIR/ispc/ispc-$ISPC_VERSION-linux/bin/ispc" "$INSTALL_DIR/bin/"
|
||||
fi
|
||||
|
||||
touch "$DEPENDENCIES_DIR/ispc.stamp"
|
||||
fi
|
||||
|
||||
# Zlib
|
||||
if [ ! -f "$DEPENDENCIES_DIR/zlib.stamp" ]; then
|
||||
echo "Compiling zlib"
|
||||
mkdir -p "$DEPENDENCIES_DIR/zlib"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/zlib/"* "$DEPENDENCIES_DIR/zlib"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/zlib"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DINSTALL_PKGCONFIG_DIR="$PKG_CONFIG_PATH" &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/zlib.stamp"
|
||||
fi
|
||||
|
||||
# Libpng
|
||||
if [ ! -f "$DEPENDENCIES_DIR/libpng.stamp" ]; then
|
||||
echo "Compiling libpng"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libpng"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libpng/lib"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/libpng/"* "$DEPENDENCIES_DIR/libpng"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/libpng"
|
||||
./configure --prefix="$INSTALL_DIR" &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/libpng.stamp"
|
||||
fi
|
||||
|
||||
# Freetype bootstrap
|
||||
if [ ! -f "$DEPENDENCIES_DIR/freetype_bootstrap.stamp" ]; then
|
||||
echo "Compiling freetype bootstrap"
|
||||
mkdir -p "$DEPENDENCIES_DIR/freetype/build"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/freetype/"* "$DEPENDENCIES_DIR/freetype"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/freetype/build"
|
||||
cmake .. -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DFT_DISABLE_HARFBUZZ=1 \
|
||||
-DFT_DISABLE_BZIP2=1 \
|
||||
-DFT_DISABLE_BROTLI=1 \
|
||||
-DFT_REQUIRE_ZLIB=1 \
|
||||
-DFT_REQUIRE_PNG=1 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/freetype_bootstrap.stamp"
|
||||
fi
|
||||
|
||||
# Harfbuzz
|
||||
if [ ! -f "$DEPENDENCIES_DIR/harfbuzz.stamp" ]; then
|
||||
echo "Compiling harfbuzz"
|
||||
mkdir -p "$DEPENDENCIES_DIR/harfbuzz"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/harfbuzz/"* "$DEPENDENCIES_DIR/harfbuzz"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/harfbuzz"
|
||||
./autogen.sh
|
||||
./configure --prefix="$INSTALL_DIR" \
|
||||
--with-freetype=yes \
|
||||
--with-glib=no \
|
||||
--with-gobject=no \
|
||||
--with-cairo=no \
|
||||
--with-fontconfig=no \
|
||||
--with-icu=no \
|
||||
--with-graphite2=no &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/harfbuzz.stamp"
|
||||
fi
|
||||
|
||||
# Freetype
|
||||
if [ ! -f "$DEPENDENCIES_DIR/freetype.stamp" ]; then
|
||||
echo "Compiling freetype"
|
||||
mkdir -p "$DEPENDENCIES_DIR/freetype/build"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/freetype/"* "$DEPENDENCIES_DIR/freetype"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/freetype/build"
|
||||
rm -rf ./*
|
||||
cmake .. -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DBUILD_SHARED_LIBS=1 \
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_BZip2=1 \
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_BrotliDec=1 \
|
||||
-DFT_REQUIRE_HARFBUZZ=1 \
|
||||
-DFT_DISABLE_BZIP2=1 \
|
||||
-DFT_DISABLE_BROTLI=1 \
|
||||
-DFT_REQUIRE_ZLIB=1 \
|
||||
-DFT_REQUIRE_PNG=1 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/freetype.stamp"
|
||||
fi
|
||||
|
||||
# Openal
|
||||
if [ ! -f "$DEPENDENCIES_DIR/openal.stamp" ]; then
|
||||
echo "Compiling openal"
|
||||
mkdir -p "$DEPENDENCIES_DIR/openal"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/openal/"* "$DEPENDENCIES_DIR/openal"
|
||||
|
||||
if [ "$ENABLE_JESSIE_HACKS" -gt 0 ]; then
|
||||
JESSIE_HACK="-DHAVE_LIBATOMIC=0"
|
||||
fi
|
||||
|
||||
cd "$DEPENDENCIES_DIR/openal"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DALSOFT_UTILS=0 \
|
||||
-DALSOFT_EXAMPLES=0 \
|
||||
-DALSOFT_TESTS=0 \
|
||||
-DALSOFT_BACKEND_SNDIO=0 \
|
||||
$JESSIE_HACK &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/openal.stamp"
|
||||
fi
|
||||
|
||||
# MbedTLS
|
||||
if [ ! -f "$DEPENDENCIES_DIR/mbedtls.stamp" ]; then
|
||||
echo "Compiling mbedtls"
|
||||
mkdir -p "$DEPENDENCIES_DIR/mbedtls"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/mbedtls/"* "$DEPENDENCIES_DIR/mbedtls"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/mbedtls"
|
||||
if [ "$ARCH_OPTION" = "x86" ]; then
|
||||
sed -i 's/#define MBEDTLS_AESNI_C//g' "$DEPENDENCIES_DIR/mbedtls/include/mbedtls/mbedtls_config.h"
|
||||
fi
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=1 \
|
||||
-DENABLE_TESTING=0 \
|
||||
-DENABLE_PROGRAMS=0 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/mbedtls.stamp"
|
||||
fi
|
||||
|
||||
# Curl
|
||||
if [ ! -f "$DEPENDENCIES_DIR/curl.stamp" ]; then
|
||||
echo "Compiling curl"
|
||||
mkdir -p "$DEPENDENCIES_DIR/curl"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/curl/"* "$DEPENDENCIES_DIR/curl"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/curl"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DBUILD_TESTING=0 \
|
||||
-DBUILD_CURL_EXE=0 \
|
||||
-DCURL_USE_MBEDTLS=1 \
|
||||
-DCURL_USE_OPENSSL=0 \
|
||||
-DCURL_USE_LIBSSH=0 \
|
||||
-DCURL_USE_LIBSSH2=0 \
|
||||
-DCURL_USE_GSSAPI=0 \
|
||||
-DCURL_USE_LIBPSL=0 \
|
||||
-DUSE_ZLIB=1 \
|
||||
-DUSE_NGHTTP2=0 \
|
||||
-DUSE_QUICHE=0 \
|
||||
-DUSE_LIBIDN2=0 \
|
||||
-DHTTP_ONLY=1 \
|
||||
-DCURL_CA_BUNDLE=none \
|
||||
-DCURL_CA_PATH=none \
|
||||
-DENABLE_THREADED_RESOLVER=1 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
rm -rf "$INSTALL_DIR/lib/cmake/CURL"
|
||||
touch "$DEPENDENCIES_DIR/curl.stamp"
|
||||
fi
|
||||
|
||||
# Libjpeg
|
||||
if [ ! -f "$DEPENDENCIES_DIR/libjpeg.stamp" ]; then
|
||||
echo "Compiling libjpeg"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libjpeg"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/libjpeg/"* "$DEPENDENCIES_DIR/libjpeg"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/libjpeg"
|
||||
chmod a+x ./configure
|
||||
ASM_NASM=yasm \
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/libjpeg.stamp"
|
||||
fi
|
||||
|
||||
# Libogg
|
||||
if [ ! -f "$DEPENDENCIES_DIR/libogg.stamp" ]; then
|
||||
echo "Compiling libogg"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libogg"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/libogg/"* "$DEPENDENCIES_DIR/libogg"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/libogg"
|
||||
./autogen.sh
|
||||
./configure --prefix="$INSTALL_DIR" &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/libogg.stamp"
|
||||
fi
|
||||
|
||||
# Libvorbis
|
||||
if [ ! -f "$DEPENDENCIES_DIR/libvorbis.stamp" ]; then
|
||||
echo "Compiling libvorbis"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libvorbis"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/libvorbis/"* "$DEPENDENCIES_DIR/libvorbis"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/libvorbis"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DBUILD_SHARED_LIBS=1 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/libvorbis.stamp"
|
||||
fi
|
||||
|
||||
# Shaderc
|
||||
if [ ! -f "$DEPENDENCIES_DIR/shaderc.stamp" ]; then
|
||||
echo "Compiling shaderc"
|
||||
mkdir -p "$DEPENDENCIES_DIR/shaderc"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/shaderc/"* "$DEPENDENCIES_DIR/shaderc"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/shaderc"
|
||||
|
||||
if [ ! -f "$DEPENDENCIES_DIR/shaderc-deps.stamp" ]; then
|
||||
./utils/git-sync-deps
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/shaderc-deps.stamp"
|
||||
fi
|
||||
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DCMAKE_C_FLAGS="-fpic -O3" \
|
||||
-DCMAKE_CXX_FLAGS="-fpic -O3" \
|
||||
-DSHADERC_SKIP_INSTALL=1 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DSHADERC_SKIP_TESTS=1 \
|
||||
-DSHADERC_SKIP_EXAMPLES=1 \
|
||||
-DSPIRV_HEADERS_SKIP_INSTALL=1 \
|
||||
-DSPIRV_HEADERS_SKIP_EXAMPLES=1 \
|
||||
-DSKIP_SPIRV_TOOLS_INSTALL=1 \
|
||||
-DSPIRV_SKIP_TESTS=1 \
|
||||
-DSPIRV_SKIP_EXECUTABLES=1 \
|
||||
-DENABLE_GLSLANG_BINARIES=0 \
|
||||
-DENABLE_CTEST=0 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
cp "$DEPENDENCIES_DIR/shaderc/libshaderc/libshaderc"* "$INSTALL_DIR/lib/" &&
|
||||
cp -a -f "$DEPENDENCIES_DIR/shaderc/libshaderc/include/"* "$INSTALL_DIR/include/"
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/shaderc.stamp"
|
||||
fi
|
||||
|
||||
# ASTC-encoder
|
||||
if [ ! -f "$DEPENDENCIES_DIR/astc-encoder.stamp" ]; then
|
||||
echo "Compiling astc-encoder"
|
||||
mkdir -p "$DEPENDENCIES_DIR/astc-encoder"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/astc-encoder/"* "$DEPENDENCIES_DIR/astc-encoder"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/astc-encoder"
|
||||
sed -i '/-Werror/d' Source/cmake_core.cmake
|
||||
sed -i 's|${ASTC_TARGET}-static|astcenc|g' Source/cmake_core.cmake
|
||||
if [ "$ARCH_OPTION" = "armv7" ]; then
|
||||
ASTC_CMAKE_FLAGS=""
|
||||
ASTC_CFLAGS="-mfpu=neon"
|
||||
elif [ "$ARCH_OPTION" = "arm64" ]; then
|
||||
ASTC_CMAKE_FLAGS="-DISA_NEON=ON -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang"
|
||||
elif [ "$ARCH_OPTION" = "x86" ]; then
|
||||
#ASTC_CMAKE_FLAGS="-DISA_SSE2=ON"
|
||||
ASTC_CMAKE_FLAGS=""
|
||||
elif [ "$ARCH_OPTION" = "x86_64" ]; then
|
||||
ASTC_CMAKE_FLAGS="-DISA_SSE41=ON"
|
||||
fi
|
||||
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
$ASTC_CMAKE_FLAGS \
|
||||
-DCMAKE_C_FLAGS="-fpic -O3 -g $ASTC_CFLAGS" \
|
||||
-DCMAKE_CXX_FLAGS="-fpic -O3 -g $ASTC_CFLAGS" \
|
||||
-DNO_INVARIANCE=ON -DCLI=OFF &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
cp "$DEPENDENCIES_DIR/astc-encoder/Source/libastcenc-native-static.a" "$INSTALL_DIR/lib/" &&
|
||||
cp "$DEPENDENCIES_DIR/astc-encoder/Source/astcenc.h" "$INSTALL_DIR/include/"
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/astc-encoder.stamp"
|
||||
fi
|
||||
|
||||
# Wayland
|
||||
if [ ! -f "$DEPENDENCIES_DIR/wayland.stamp" ]; then
|
||||
echo "Compiling wayland"
|
||||
mkdir -p "$DEPENDENCIES_DIR/wayland"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/wayland/"* "$DEPENDENCIES_DIR/wayland"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/wayland"
|
||||
meson --prefix="$INSTALL_DIR" -Ddocumentation=false build &&
|
||||
ninja -C build -j$THREADS_NUMBER &&
|
||||
ninja -C build install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/wayland.stamp"
|
||||
fi
|
||||
|
||||
# SDL2
|
||||
if [ ! -f "$DEPENDENCIES_DIR/sdl2.stamp" ]; then
|
||||
echo "Compiling SDL2"
|
||||
mkdir -p "$DEPENDENCIES_DIR/sdl2"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/sdl2/"* "$DEPENDENCIES_DIR/sdl2"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/sdl2"
|
||||
./configure --prefix="$INSTALL_DIR" --disable-audio &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/sdl2.stamp"
|
||||
fi
|
||||
|
||||
# Libvpx
|
||||
if [ ! -f "$DEPENDENCIES_DIR/libvpx.stamp" ]; then
|
||||
echo "Compiling libvpx"
|
||||
mkdir -p "$DEPENDENCIES_DIR/libvpx"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/libvpx/"* "$DEPENDENCIES_DIR/libvpx"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/libvpx"
|
||||
./configure --prefix="$INSTALL_DIR" \
|
||||
--enable-shared &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/libvpx.stamp"
|
||||
fi
|
||||
|
||||
# Libbluetooth
|
||||
if [ ! -f "$DEPENDENCIES_DIR/bluez.stamp" ]; then
|
||||
echo "Compiling libbluetooth"
|
||||
mkdir -p "$DEPENDENCIES_DIR/bluez"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/bluez/"* "$DEPENDENCIES_DIR/bluez"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/bluez"
|
||||
./bootstrap
|
||||
./configure --prefix="$INSTALL_DIR" \
|
||||
--enable-library \
|
||||
--disable-debug \
|
||||
--disable-systemd \
|
||||
--disable-tools \
|
||||
--disable-obex \
|
||||
--disable-cups \
|
||||
--disable-client \
|
||||
--disable-datafiles \
|
||||
--disable-monitor \
|
||||
--disable-udev &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/bluez.stamp"
|
||||
fi
|
||||
|
||||
# Sqlite
|
||||
if [ ! -f "$DEPENDENCIES_DIR/sqlite.stamp" ]; then
|
||||
echo "Compiling sqlite"
|
||||
mkdir -p "$DEPENDENCIES_DIR/sqlite"
|
||||
cp -a -f "$DEPENDENCIES_DIR/../lib/sqlite/"* "$DEPENDENCIES_DIR/sqlite"
|
||||
sed -i s/' STATIC '/' SHARED '/g "$DEPENDENCIES_DIR/sqlite/CMakeLists.txt"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/sqlite"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DINSTALL_PKGCONFIG_DIR="$PKG_CONFIG_PATH" \
|
||||
-DENABLE_READLINE=0 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/sqlite.stamp"
|
||||
fi
|
||||
|
||||
# Openglrecorder
|
||||
if [ ! -f "$DEPENDENCIES_DIR/openglrecorder.stamp" ]; then
|
||||
echo "Compiling openglrecorder"
|
||||
mkdir -p "$DEPENDENCIES_DIR/openglrecorder"
|
||||
cp -a -f "$OPENGLRECORDER_DIR/"* "$DEPENDENCIES_DIR/openglrecorder"
|
||||
|
||||
cd "$DEPENDENCIES_DIR/openglrecorder"
|
||||
cmake . -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||
-DBUILD_PULSE_WO_DL=0 &&
|
||||
make -j$THREADS_NUMBER &&
|
||||
make install
|
||||
check_error
|
||||
touch "$DEPENDENCIES_DIR/openglrecorder.stamp"
|
||||
fi
|
||||
|
||||
# Supertuxkart
|
||||
mkdir -p "$STKCODE_DIR/$BUILD_DIR"
|
||||
cd "$STKCODE_DIR/$BUILD_DIR"
|
||||
|
||||
if [ -f "$INSTALL_DIR/bin/ispc" ]; then
|
||||
HAS_ISPC=1
|
||||
else
|
||||
HAS_ISPC=0
|
||||
fi
|
||||
|
||||
cmake .. -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
-DUSE_SYSTEM_ANGELSCRIPT=0 \
|
||||
-DUSE_SYSTEM_ENET=0 \
|
||||
-DUSE_SYSTEM_WIIUSE=0 \
|
||||
-DUSE_SYSTEM_SQUISH=0 \
|
||||
-DUSE_SYSTEM_MCPP=0 \
|
||||
-DUSE_CRYPTO_OPENSSL=0 \
|
||||
-DENABLE_WAYLAND_DEVICE=0 \
|
||||
-DBC7_ISPC=$HAS_ISPC \
|
||||
-DCMAKE_DISABLE_FIND_PACKAGE_Fontconfig=1 \
|
||||
$STK_CMAKE_FLAGS &&
|
||||
make -j$THREADS_NUMBER
|
||||
check_error
|
||||
|
||||
# Stk editor
|
||||
# mkdir -p "$STKEDITOR_DIR/$BUILD_DIR"
|
||||
# cd "$STKEDITOR_DIR/$BUILD_DIR"
|
||||
# cmake .. -DCMAKE_FIND_ROOT_PATH="$INSTALL_DIR" \
|
||||
# -DSTATIC_ZLIB=1 \
|
||||
# -DSTATIC_PHYSFS=1 \
|
||||
# -DCMAKE_DISABLE_FIND_PACKAGE_Fontconfig=1 \
|
||||
# $STK_CMAKE_FLAGS &&
|
||||
# make -j$THREADS_NUMBER
|
||||
# check_error
|
||||
}
|
||||
|
||||
copy_libraries()
|
||||
{
|
||||
if [ -z "$1" ] || [ -z "$2" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
export ARCH_OPTION="$1"
|
||||
export LIB_INSTALL_DIR="$2"
|
||||
export DEPENDENCIES_DIR="$DEPENDENCIES_DIR-$ARCH_OPTION"
|
||||
export BUILD_DIR="$BUILD_DIR-$ARCH_OPTION"
|
||||
|
||||
if [ -z "$DEPENDENCIES_DIR" ] || [ -z "$BUILD_DIR" ] || [ -z "$LIB_INSTALL_DIR" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
LIBRARIES_LIST=`LD_LIBRARY_PATH="$DEPENDENCIES_DIR/dependencies/lib" \
|
||||
ldd "$STKCODE_DIR/$BUILD_DIR/bin/supertuxkart" | \
|
||||
cut -d">" -f2 | cut -d"(" -f1 | grep "\.so"`
|
||||
|
||||
for FILE in $LIBRARIES_LIST; do
|
||||
BLACKLISTED=0
|
||||
|
||||
for BLACKLIST_LIB in $BLACKLIST_LIBS; do
|
||||
if [ `echo "$FILE" | grep -c "$BLACKLIST_LIB"` -gt 0 ]; then
|
||||
BLACKLISTED=1
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $BLACKLISTED -eq 1 ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -f "$FILE" ]; then
|
||||
echo " Copying $FILE"
|
||||
cp -L "$FILE" "$LIB_INSTALL_DIR"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
test_package()
|
||||
{
|
||||
if [ -z "$1" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
PACKAGE_DIR="$1"
|
||||
BINARY_ARCH="$2"
|
||||
|
||||
if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart" | grep -c "$BINARY_ARCH"` -eq 0 ]; then
|
||||
echo "Error: bin/supertuxkart is not $BINARY_ARCH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart-editor" | grep -c "$BINARY_ARCH"` -eq 0 ]; then
|
||||
# echo "Error: bin/supertuxkart-editor is not $BINARY_ARCH"
|
||||
# exit 1
|
||||
# fi
|
||||
|
||||
if [ `LD_LIBRARY_PATH="$PACKAGE_DIR/lib" ldd "$PACKAGE_DIR/bin/supertuxkart" | grep -c "not found"` -gt 0 ]; then
|
||||
echo "Error: bin/supertuxkart has some missing libraries"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# if [ `ldd "$PACKAGE_DIR/bin/supertuxkart-editor" | grep -c "not found"` -gt 0 ]; then
|
||||
# echo "Error: bin/supertuxkart-editor has some missing libraries"
|
||||
# exit 1
|
||||
# fi
|
||||
|
||||
LD_LIBRARY_PATH="$PACKAGE_DIR/lib" "$PACKAGE_DIR/bin/supertuxkart" --version
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Couldn't start bin/supertuxkart"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
create_package()
|
||||
{
|
||||
SCHROOT_NAME="$1"
|
||||
ARCH="$2"
|
||||
BINARY_ARCH="$3"
|
||||
|
||||
echo "Building $ARCH version..."
|
||||
|
||||
schroot -c $SCHROOT_NAME -- "$0" build_stk "$ARCH" "-DDEBUG_SYMBOLS=1"
|
||||
|
||||
if [ ! -f "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" ]; then
|
||||
echo "Couldn't build $ARCH version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Prepare package..."
|
||||
|
||||
STK_PACKAGE_DIR="$STK_INSTALL_DIR/SuperTuxKart-$STK_VERSION-linux-$ARCH"
|
||||
|
||||
if [ -f "$STK_PACKAGE_DIR" ]; then
|
||||
rm -rf "$STK_PACKAGE_DIR"
|
||||
fi
|
||||
|
||||
mkdir -p "$STK_PACKAGE_DIR"
|
||||
mkdir -p "$STK_PACKAGE_DIR/bin"
|
||||
mkdir -p "$STK_PACKAGE_DIR/lib"
|
||||
|
||||
schroot -c $SCHROOT_NAME -- "$0" copy_libraries "$ARCH" "$STK_PACKAGE_DIR/lib"
|
||||
|
||||
find "$STK_PACKAGE_DIR/lib" -type f -exec strip -s {} \;
|
||||
|
||||
if [ "$STATIC_GCC" -eq 0 ]; then
|
||||
mv "$STK_PACKAGE_DIR/lib/libgcc_s.so.1" "$STK_PACKAGE_DIR/lib/libgcc_s.so.1-orig"
|
||||
mv "$STK_PACKAGE_DIR/lib/libstdc++.so.6" "$STK_PACKAGE_DIR/lib/libstdc++.so.6-orig"
|
||||
fi
|
||||
|
||||
write_run_game_sh "$STK_PACKAGE_DIR"
|
||||
|
||||
cp "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" "$STK_INSTALL_DIR/supertuxkart-$STK_VERSION-linux-$ARCH-symbols"
|
||||
# cp "$STKEDITOR_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart-editor" "$STK_INSTALL_DIR/supertuxkart-editor-$STK_VERSION-linux-$ARCH-symbols"
|
||||
|
||||
cp -a "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" "$STK_PACKAGE_DIR/bin/"
|
||||
# cp -a "$STKEDITOR_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart-editor" "$STK_PACKAGE_DIR/bin/"
|
||||
|
||||
cp -a "$STKCODE_DIR/data/." "$STK_PACKAGE_DIR/data"
|
||||
# cp -a "$STKASSETS_DIR/editor" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/karts" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/library" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/models" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/music" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/sfx" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/textures" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/tracks" "$STK_PACKAGE_DIR/data/"
|
||||
cp -a "$STKASSETS_DIR/licenses.txt" "$STK_PACKAGE_DIR/data/"
|
||||
|
||||
strip --strip-debug "$STK_PACKAGE_DIR/bin/supertuxkart"
|
||||
# strip --strip-debug "$STK_PACKAGE_DIR/bin/supertuxkart-editor"
|
||||
|
||||
find "$STK_PACKAGE_DIR/bin" -type f -exec chrpath -d {} \;
|
||||
find "$STK_PACKAGE_DIR/lib" -type f -exec chrpath -d {} \;
|
||||
|
||||
chmod a+rwx "$STK_PACKAGE_DIR" -R
|
||||
find "$STK_PACKAGE_DIR" -type f -exec chmod a-x {} \;
|
||||
find "$STK_PACKAGE_DIR/bin" -type f -exec chmod a+x {} \;
|
||||
chmod a+x "$STK_PACKAGE_DIR/run_game.sh"
|
||||
|
||||
schroot -c $SCHROOT_NAME -- "$0" test_package "$STK_PACKAGE_DIR" "$BINARY_ARCH"
|
||||
|
||||
# Compress package
|
||||
|
||||
echo "Compress package..."
|
||||
|
||||
cd "$STK_INSTALL_DIR"
|
||||
tar -czf "SuperTuxKart-$STK_VERSION-linux-$ARCH.tar.gz" "SuperTuxKart-$STK_VERSION-linux-$ARCH"
|
||||
cd -
|
||||
}
|
||||
|
||||
# Handle clean command
|
||||
if [ ! -z "$1" ] && [ "$1" = "clean" ]; then
|
||||
rm -rf "$DEPENDENCIES_DIR-"*
|
||||
rm -rf "$STKCODE_DIR/$BUILD_DIR-"*
|
||||
# rm -rf "$STKEDITOR_DIR/$BUILD_DIR-"*
|
||||
rm -rf "$STK_INSTALL_DIR"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Handle build_stk command (internal only)
|
||||
if [ ! -z "$1 " ] && [ "$1" = "build_stk" ]; then
|
||||
build_stk "$2" "$3"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Handle copy_libraries command (internal only)
|
||||
if [ ! -z "$1 " ] && [ "$1" = "copy_libraries" ]; then
|
||||
copy_libraries "$2" "$3"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Handle test_package command (internal only)
|
||||
if [ ! -z "$1 " ] && [ "$1" = "test_package" ]; then
|
||||
test_package "$2" "$3"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
# Building STK
|
||||
|
||||
create_package "$SCHROOT_32BIT_NAME" "x86" "elf32-i386"
|
||||
create_package "$SCHROOT_64BIT_NAME" "x86_64" "elf64-x86-64"
|
||||
create_package "$SCHROOT_ARMV7_NAME" "armv7" "elf32-littlearm"
|
||||
create_package "$SCHROOT_ARM64_NAME" "arm64" "elf64-littleaarch64"
|
||||
create_package "$SCHROOT_RISCV_NAME" "riscv64" "elf64-littleriscv"
|
||||
|
||||
echo "Success."
|
||||
Reference in New Issue
Block a user