Windows CI build: Ditch vcpkg

This replaces vcpkg with simply downloading the pre-compiled
dependencies from official upstream releases. The rationale is that
vcpkg is sometimes really slow to update to the latest SDL version when
it releases, and also that it requires the runner to compile SDL every
single time it's instantiated, which is slow and wasteful.

Instead, download the pre-compiled binaries of SDL from its release page
on GitHub. This way, we don't have to compile it ourselves, and we
aren't waiting on vcpkg whenever SDL releases a new version. And for
good measure, cache it so we aren't downloading it _every_ time, which
is even more efficient.

The same can't be done for SDL_mixer, though, because it doesn't have a
GitHub release page with pre-compiled binaries. Instead, we'll download
them from libsdl.org, which is an infrastructure that takes more strain
than if we used GitHub instead. But, it shouldn't matter anyways,
because we cahe this too. And we are going to ditch SDL_mixer for FAudio
in 2.4 anyways, so it's a moot point either way.
This commit is contained in:
Misa 2022-02-11 15:37:11 -08:00
parent a43f5e1140
commit 23f91005d6
1 changed files with 37 additions and 5 deletions

View File

@ -112,20 +112,52 @@ jobs:
runs-on: windows-latest
env:
SDL_VERSION: 2.0.20
SDL_MIXER_VERSION: 2.0.4
steps:
- uses: actions/checkout@v1
- name: Install dependencies (Windows)
- name: Cache SDL
uses: actions/cache@v2
env:
cache-name: cache-sdl
with:
path: C:\SDL
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Cache SDL_mixer
uses: actions/cache@v2
env:
cache-name: cache-sdl-mixer
with:
path: C:\SDL_mixer
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Download SDL if not cached
run: |
vcpkg install sdl2 sdl2-mixer
if (-Not (Test-Path C:\SDL))
{
Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -o C:\SDL.zip
Expand-Archive C:\SDL.zip -DestinationPath C:\
}
- name: Download SDL_mixer if not cached
run: |
if (-Not (Test-Path C:\SDL_mixer))
{
Invoke-WebRequest "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-devel-$env:SDL_MIXER_VERSION-VC.zip" -o C:\SDL_mixer.zip
Expand-Archive C:\SDL_mixer.zip -DestinationPath C:\
}
- name: CMake configure (default version)
run: |
cd $env:SRC_DIR_PATH
$env:LDFLAGS = "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib "
$env:LDFLAGS += "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib\manual-link"
$env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 "
$env:LDFLAGS += "/LIBPATH:C:\SDL2_mixer-$env:SDL_MIXER_VERSION\lib\x86"
cmake -G "Visual Studio 16 2019" -A Win32 `
-DSDL2_INCLUDE_DIRS="$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\include\SDL2" `
-DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include;C:\SDL2_mixer-$env:SDL_MIXER_VERSION\include" `
-DSDL2_LIBRARIES="SDL2;SDL2main;SDL2_mixer" .
- name: Build (default version)
run: |