mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Instead of using the install baked in the image, let's clone vcpkg and set up a separate binary cache that can survive being cleaned. This allows us to reuse built artifacts from the vcpkg manifest baseline very quickly.
137 lines
4.2 KiB
YAML
137 lines
4.2 KiB
YAML
Windows x86:
|
|
extends: .srb2ci
|
|
|
|
stage: build
|
|
|
|
when: on_success
|
|
|
|
cache:
|
|
- key: ccache-$CI_PROJECT_PATH_SLUG-$CI_JOB_NAME_SLUG
|
|
fallback_keys:
|
|
- cache-$CI_PROJECT_PATH_SLUG-$CI_DEFAULT_BRANCH
|
|
- cache-$CI_PROJECT_PATH_SLUG-default
|
|
paths:
|
|
- ccache
|
|
- ccache_statslog
|
|
|
|
- key: apt-$CI_JOB_IMAGE
|
|
paths:
|
|
- apt-cache
|
|
unprotect: true
|
|
|
|
- key: vcpkg-root
|
|
paths:
|
|
- build/vcpkg-root
|
|
unprotect: true
|
|
|
|
- key: vcpkg-binary-cache-x86-mingw-static
|
|
paths:
|
|
- build/vcpkg-binary-cache
|
|
unprotect: true
|
|
|
|
artifacts:
|
|
paths:
|
|
- "build/ninja-x86_mingw_static_vcpkg-debug/bin/"
|
|
- "build/ninja-x86_mingw_static_vcpkg-debug/src/config.h"
|
|
expose_as: "Win32"
|
|
name: "$CI_PROJECT_PATH_SLUG-$CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA-Win32"
|
|
|
|
variables:
|
|
PREFIX: i686-w64-mingw32
|
|
CC: /usr/bin/i686-w64-mingw32-gcc-posix
|
|
CXX: /usr/bin/i686-w64-mingw32-g++-posix
|
|
|
|
script:
|
|
- |
|
|
# vcpkg
|
|
echo -e "\e[0Ksection_start:`date +%s`:vcpkg-root[collapsed=true]\r\e[0KUpdating vcpkg"
|
|
|
|
if [ -d "build/vcpkg-root" ]; then
|
|
pushd build/vcpkg-root
|
|
git fetch https://github.com/Microsoft/vcpkg master
|
|
git reset --hard FETCH_HEAD
|
|
popd
|
|
else
|
|
mkdir -p build
|
|
git clone https://github.com/Microsoft/vcpkg build/vcpkg-root
|
|
fi
|
|
|
|
export VCPKG_ROOT=$(pwd)/build/vcpkg-root
|
|
export VCPKG_BINARY_SOURCES="clear;files,$(pwd)/build/vcpkg-binary-cache,readwrite"
|
|
|
|
mkdir -p "build/vcpkg-binary-cache"
|
|
|
|
echo -e "\e[0Ksection_end:`date +%s`:vcpkg-root\r\e[0K"
|
|
|
|
- - |
|
|
# apt_toolchain
|
|
echo -e "\e[0Ksection_start:`date +%s`:apt_toolchain[collapsed=true]\r\e[0KInstalling toolchain packages"
|
|
- apt-get install gcc-mingw-w64-i686-win32
|
|
- |
|
|
# apt_toolchain
|
|
echo -e "\e[0Ksection_end:`date +%s`:apt_toolchain\r\e[0K"
|
|
|
|
- - |
|
|
# apt_development
|
|
echo -e "\e[0Ksection_start:`date +%s`:apt_development[collapsed=true]\r\e[0KInstalling development packages"
|
|
- apt-get install ninja-build
|
|
- |
|
|
# apt_development
|
|
echo -e "\e[0Ksection_end:`date +%s`:apt_development\r\e[0K"
|
|
|
|
- - |
|
|
# cmake
|
|
echo -e "\e[0Ksection_start:`date +%s`:cmake[collapsed=false]\r\e[0KBuilding Makefiles"
|
|
- |
|
|
CCACHE=$(which ccache)
|
|
|
|
cmake \
|
|
--preset ninja-x86_mingw_static_vcpkg-debug \
|
|
-G "Unix Makefiles" \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=$CCACHE \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=$CCACHE \
|
|
-DCMAKE_C_COMPILER=/usr/bin/i686-w64-mingw32-gcc-posix \
|
|
-DCMAKE_CXX_COMPILER=/usr/bin/i686-w64-mingw32-g++-posix \
|
|
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/toolchains/mingw.cmake
|
|
|
|
- |
|
|
# cmake
|
|
echo -e "\e[0Ksection_end:`date +%s`:cmake\r\e[0K"
|
|
|
|
- - |
|
|
# make
|
|
echo -e "\e[0Ksection_start:`date +%s`:make[collapsed=false]\r\e[0KCompiling SRB2"
|
|
- cmake --build --preset ninja-x86_mingw_static_vcpkg-debug --parallel 1 -- --keep-going || cmake --build --preset ninja-x86_mingw_static_vcpkg-debug --parallel 1 -- --keep-going
|
|
- |
|
|
# make
|
|
echo -e "\e[0Ksection_end:`date +%s`:make\r\e[0K"
|
|
|
|
after_script:
|
|
- - |
|
|
# apt_clean
|
|
echo -e "\e[0Ksection_start:`date +%s`:apt_clean[collapsed=true]\r\e[0KCleaning of unneeded APT packages"
|
|
- apt-get autoclean
|
|
- |
|
|
# apt_clean
|
|
echo -e "\e[0Ksection_end:`date +%s`:apt_clean\r\e[0K"
|
|
|
|
- - |
|
|
# vcpkg_clean
|
|
echo -e "\e[0Ksection_start:`date +%s`:vcpkg_clean[collapsed=true]\r\e[0KCleaning vcpkg-root"
|
|
|
|
if [ -d "build/vcpkg-root" ]; then
|
|
pushd "build/vcpkg-root"
|
|
git clean -f
|
|
popd
|
|
fi
|
|
|
|
echo -e "\e[0Ksection_end:`date +%s`:vcpkg_clean\r\e[0K"
|
|
|
|
- - |
|
|
# ccache_stats
|
|
echo -e "\e[0Ksection_start:`date +%s`:ccache_stats[collapsed=true]\r\e[0Kccache statistics:"
|
|
- ccache --show-stats
|
|
- ccache --show-log-stats || true
|
|
- |
|
|
# ccahe_stats
|
|
echo -e "\e[0Ksection_end:`date +%s`:ccache_stats\r\e[0K"
|