Files
SpaghettiKart/script/build-release.sh
T
coco875 5b79a1c910 Improve cmake, make release need less dependancy and clean up some file (#584)
* Update CMakeLists.txt

* try something to use less dependancy

* improve script

* Delete addr_to_sym.py

* restore dockerfile

* move the docker for release and a script to execute it to script

* Delete build.sh

* move more script to script folder

* add the new docker in the CI

* Update vcpkg.json

* fix windows and macos in theory
2025-12-08 08:49:21 -07:00

57 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -e
# Script to build SpaghettiKart using Docker
# Usage: ./docker/build.sh [Release|Debug]
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
BUILD_TYPE="${1:-Release}"
BUILD_DIR="build-docker"
IMAGE_NAME="spaghettikart-builder"
USER_ID=$(id -u)
GROUP_ID=$(id -g)
cd "$PROJECT_DIR"
# Build Docker image
echo "Building Docker image..."
docker build -t "${IMAGE_NAME}" -f script/Dockerfile .
# Clean build directory if it contains incompatible cache
if [[ -f "${BUILD_DIR}/CMakeCache.txt" ]] && grep -q "/home/coco" "${BUILD_DIR}/CMakeCache.txt" 2>/dev/null; then
echo "Cleaning incompatible build cache..."
rm -rf "${BUILD_DIR}"
fi
# Run build in Docker
echo "Building in Docker container..."
docker run --rm \
-v "$(pwd):/project" \
-e BUILD_TYPE="${BUILD_TYPE}" \
-e USER_ID="${USER_ID}" \
-e GROUP_ID="${GROUP_ID}" \
"${IMAGE_NAME}" \
bash -c "
# Copy vcpkg.json and install dependencies
cp vcpkg.json /tmp/vcpkg.json && \
cd /tmp && \
\${VCPKG_ROOT}/vcpkg install --triplet x64-linux && \
cd /project && \
cmake -B ${BUILD_DIR} -G Ninja \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_TOOLCHAIN_FILE=/opt/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_TARGET_TRIPLET=x64-linux && \
cmake --build ${BUILD_DIR} --parallel && \
cp -f spaghetti.o2r ${BUILD_DIR}/ 2>/dev/null || true && \
cp -f mk64.o2r ${BUILD_DIR}/ 2>/dev/null || true && \
cd ${BUILD_DIR} && cpack -G External && \
chown -R ${USER_ID}:${GROUP_ID} /project/${BUILD_DIR} /project/logs 2>/dev/null || true
"
echo ""
echo "Build complete!"
echo "Executable: ${BUILD_DIR}/Spaghettify"
ls -1 "${BUILD_DIR}"/*.appimage 2>/dev/null && echo "AppImage generated successfully!" || echo "Note: AppImage generation may have failed"