From a1cd2d53925f995826fc38c71191fc29d5c68465 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 17 Dec 2022 05:09:29 +0100
Subject: [PATCH] ci: add github workflow
---
.github/fetch_sdl_vc.ps1 | 40 +++++++++++++++++
.github/workflows/main.yml | 92 ++++++++++++++++++++++++++++++++++++++
2 files changed, 132 insertions(+)
create mode 100644 .github/fetch_sdl_vc.ps1
create mode 100644 .github/workflows/main.yml
diff --git a/.github/fetch_sdl_vc.ps1 b/.github/fetch_sdl_vc.ps1
new file mode 100644
index 0000000..84eec24
--- /dev/null
+++ b/.github/fetch_sdl_vc.ps1
@@ -0,0 +1,40 @@
+$ErrorActionPreference = "Stop"
+
+$project_root = "$psScriptRoot\.."
+Write-Output "project_root: $project_root"
+
+$sdl2_version = "2.0.10"
+$sdl2_zip = "SDL2-devel-$($sdl2_version)-VC.zip"
+
+$sdl2_url = "https://github.com/libsdl-org/SDL/releases/download/release-$($sdl2_version)/SDL2-devel-$($sdl2_version)-VC.zip"
+$sdl2_dlpath = "$($Env:TEMP)\$sdl2_zip"
+
+$sdl2_bindir = "$($project_root)"
+$sdl2_extractdir = "$($sdl2_bindir)\SDL2-$($sdl2_version)"
+$sdl2_root_name = "SDL2-devel-VC"
+
+echo "sdl2_bindir: $sdl2_bindir"
+echo "sdl2_extractdir: $sdl2_extractdir"
+echo "sdl2_root_name: $sdl2_root_name"
+
+echo "Cleaning previous artifacts"
+if (Test-Path $sdl2_extractdir) {
+ Remove-Item $sdl2_extractdir -Recurse -Force
+}
+if (Test-Path "$($sdl2_bindir)/$sdl2_root_name") {
+ Remove-Item "$($sdl2_bindir)/$sdl2_root_name" -Recurse -Force
+}
+if (Test-Path $sdl2_dlpath) {
+ Remove-Item $sdl2_dlpath -Force
+}
+
+Write-Output "Downloading $sdl2_url"
+Invoke-WebRequest -Uri $sdl2_url -OutFile $sdl2_dlpath
+
+Write-Output "Extracting archive"
+Expand-Archive $sdl2_dlpath -DestinationPath $sdl2_bindir
+
+Write-Output "Setting up SDL2 folder"
+Rename-Item $sdl2_extractdir $sdl2_root_name
+
+Write-Output "Done"
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..f5e40a8
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,92 @@
+name: Build
+
+on: [push, pull_request]
+
+jobs:
+ Build:
+ name: ${{ matrix.platform.name }}
+ runs-on: ${{ matrix.platform.os }}
+
+ defaults:
+ run:
+ shell: ${{ matrix.platform.shell }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ platform:
+ - { name: Windows (MSVC), os: windows-2019, shell: sh, msvc: 1 }
+ - { name: Windows (mingw32), os: windows-latest, shell: 'msys2 {0}', msystem: mingw32, msys-env: mingw-w64-i686 }
+ - { name: Windows (mingw64), os: windows-latest, shell: 'msys2 {0}', msystem: mingw64, msys-env: mingw-w64-x86_64 }
+ - { name: Linux, os: ubuntu-22.04, shell: sh }
+ - { name: Macos, os: macos-latest, shell: sh }
+
+ steps:
+ - name: Set up MSYS2
+ if: matrix.platform.shell == 'msys2 {0}'
+ uses: msys2/setup-msys2@v2
+ with:
+ msystem: ${{ matrix.platform.msystem }}
+ install: >-
+ ${{ matrix.platform.msys-env }}-SDL2
+ ${{ matrix.platform.msys-env }}-cmake
+ ${{ matrix.platform.msys-env }}-gcc
+ ${{ matrix.platform.msys-env }}-ninja
+ - name: Setup Macos dependencies
+ if: runner.os == 'macOS'
+ run: |
+ brew install \
+ sdl2 \
+ ninja \
+ ${NULL+}
+ - name: Setup Linux dependencies
+ if: runner.os == 'Linux'
+ run: |
+ sudo apt-get update
+ sudo apt-get -y install \
+ cmake \
+ libsdl2-dev \
+ ninja-build \
+ pkg-config \
+ ${NULL+}
+ - uses: actions/checkout@v3
+ - name: Setup MSVC dependencies
+ if: "matrix.platform.msvc"
+ shell: pwsh
+ run: |
+ echo "::group::Downloading SDL"
+ .github/fetch_sdl_vc.ps1
+ echo "SDL2_DIR=$Env:GITHUB_WORKSPACE/SDL2-devel-VC" >> $Env:GITHUB_ENV
+ echo "::endgroup::"
+ - name: Setup Ninja for MSVC
+ if: "matrix.platform.msvc"
+ uses: ashutoshvarma/setup-ninja@master
+ with:
+ version: 1.10.2
+ - uses: ilammy/msvc-dev-cmd@v1
+ if: "matrix.platform.msvc"
+ with:
+ arch: x64
+
+ - name: Configure (CMake)
+ run: |
+ cmake -S . -B build \
+ -DSDLGESTURE_TESTS=ON \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=prefix
+ - name: Build (CMake)
+ run: |
+ cmake --build build/ --config Release --parallel --verbose
+ - name: Install (CMake)
+ run: |
+ set -eu
+ rm -fr prefix_cmake
+ cmake --install build/ --config Release
+ ( cd prefix; find . ) | LC_ALL=C sort -u
+
+ - name: Verify CMake configuration files
+ run: |
+ cmake -S test -B cmake_config_build \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_PREFIX_PATH="$PWD/prefix"
+ cmake --build cmake_config_build --verbose --config Release