Skip to content

Use up-to-date dependencies #28

Use up-to-date dependencies

Use up-to-date dependencies #28

name: VCMI - vcpkg dependencies
on:
push:
branches: [ master ]
pull_request:
schedule:
- cron: '0 2 * * 0' # every Sunday 02:00
workflow_dispatch:
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- platform: msvc-x64
triplet: x64-windows
runner: windows-latest
overlay: vcmi-overlay-boost
- platform: msvc-x86
triplet: x86-windows
runner: windows-latest
overlay: vcmi-overlay-boost
- platform: msvc-arm64
triplet: arm64-windows
runner: windows-11-arm
overlay: vcmi-overlay-yasm
runs-on: ${{ matrix.runner }}
defaults:
run:
shell: bash
steps:
# Use latest vcpkg for x64/x86
- name: Checkout vcpkg (latest)
uses: actions/checkout@v4
with:
repository: 'microsoft/vcpkg'
ref: master
- name: Prepare overlays (Boost + YASM)
run: |
mkdir -p vcmi-overlay-boost vcmi-overlay-yasm
# Boost overlay (Win7 fix)
# Commit before addition of boost filesystem 1.87 that removes Win7 support:
# https://github.com/microsoft/vcpkg/pull/42678
# Commit: ec12d917a85839741f8345905f71b3e7f56d9ddc
git fetch origin ec12d917a85839741f8345905f71b3e7f56d9ddc
git checkout ec12d917a85839741f8345905f71b3e7f56d9ddc
cp -r ports/boost* vcmi-overlay-boost/
# YASM overlay (ARM64 fix)
# Commit before changes to yasm package which seem to break ARM builds:
# https://github.com/microsoft/vcpkg/pull/45856
# Commit: 94a9df6990e426ec3fff1a4ba20016da4aafea70
git fetch origin 94a9df6990e426ec3fff1a4ba20016da4aafea70
git checkout 94a9df6990e426ec3fff1a4ba20016da4aafea70
cp -r ports/yasm* vcmi-overlay-yasm/
# Switch back to master for the rest of the ports
git checkout master
# NOTE: disabling debug for all triplets, so 64 host / 32 guest won't build debug version of 64-bit tools
# Otherwise, x86 package size is way larger than needed
- name: Disable debug builds
run: |
echo 'set(VCPKG_BUILD_TYPE release)' >>triplets/x64-windows.cmake
echo 'set(VCPKG_BUILD_TYPE release)' >>triplets/x86-windows.cmake
echo 'set(VCPKG_BUILD_TYPE release)' >>triplets/arm64-windows.cmake
- name: Enable Windows 7 targeting (x86/x64)
if: matrix.triplet == 'x64-windows' || matrix.triplet == 'x86-windows'
run: |
echo 'set(VCPKG_CXX_FLAGS "-D_WIN32_WINNT=0x0601 -DWINVER=0x0601")' >>triplets/${{ matrix.triplet }}.cmake
echo 'set(VCPKG_C_FLAGS "-D_WIN32_WINNT=0x0601 -DWINVER=0x0601")' >>triplets/${{ matrix.triplet }}.cmake
- name: Initialize vcpkg
run: ./bootstrap-vcpkg.bat
- name: Install dependencies
run: |
./vcpkg.exe install yasm --triplet "${{ matrix.triplet }}" --overlay-ports=${{ matrix.overlay }}
./vcpkg.exe install \
tbb fuzzylite sdl2 sdl2-image sdl2-ttf sdl2-mixer[core,mpg123] \
qt5-base qt5-tools \
ffmpeg[core,avcodec,avformat,swresample,swscale] \
boost-filesystem boost-system boost-thread boost-program-options boost-locale \
boost-iostreams boost-headers boost-foreach boost-format boost-crc boost-logic \
boost-multi-array boost-ptr-container boost-heap boost-bimap boost-asio \
boost-stacktrace boost-assign boost-geometry boost-uuid boost-process \
--triplet "${{ matrix.triplet }}" \
--overlay-ports=${{ matrix.overlay }}
- name: Export packages
run: |
./vcpkg.exe export \
tbb fuzzylite sdl2 sdl2-image sdl2-ttf sdl2-mixer qt5-base qt5-tools ffmpeg \
boost-filesystem boost-system boost-thread boost-program-options boost-locale \
boost-iostreams boost-headers boost-foreach boost-format boost-crc boost-logic \
boost-multi-array boost-ptr-container boost-heap boost-bimap boost-asio \
boost-stacktrace boost-assign boost-geometry boost-uuid boost-process \
--raw --triplet "${{ matrix.triplet }}" \
--overlay-ports=${{ matrix.overlay }} \
--output=result/vcpkg
- name: Trim pdb files
run: |
find result/vcpkg/installed/*/tools -type f -name "*.pdb" -delete
- name: Create archive
run: |
tar --create --xz --file dependencies-${{ matrix.platform }}.txz -C result vcpkg
- name: Log resulting packages
run: ./vcpkg.exe list
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: dependencies-${{ matrix.platform }}
path: ${{ github.workspace }}/dependencies-${{ matrix.platform }}.txz
compression-level: 0