Initial commit
This commit is contained in:
259
.github/workflows/ci.yml
vendored
Normal file
259
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,259 @@
|
||||
name: CI
|
||||
on: [push, pull_request]
|
||||
# schedule:
|
||||
# - cron: '0 0-23/4 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
jobs:
|
||||
emscripten:
|
||||
name: Emscripten
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- name: emscripten
|
||||
configFlags: --enable-gif --enable-jpeg --enable-ogg --enable-png --enable-vorbis --enable-zlib --enable-freetype2
|
||||
- name: emscripten (extra libs)
|
||||
configFlags: --enable-gif --enable-jpeg --enable-ogg --enable-png --enable-vorbis --enable-zlib --enable-freetype2 --enable-a52 --enable-faad --enable-fluidlite --enable-fribidi --enable-mad --enable-mpcdec --enable-mpeg2 --enable-mpeg2 --enable-mikmod --enable-retrowave --enable-theoradec --enable-vpx
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build cache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ matrix.platform }}
|
||||
max-size: 1G
|
||||
create-symlink: true
|
||||
- name: Restore libs cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
key: ${{ matrix.configFlags }}
|
||||
path: |
|
||||
dists/emscripten/libs/
|
||||
- name: Call configure
|
||||
run: |
|
||||
CXX='ccache emcc' dists/emscripten/build.sh configure --enable-all-engines ${{ matrix.configFlags }}
|
||||
- name: Save libs cache
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
key: ${{ matrix.configFlags }}
|
||||
path: |
|
||||
dists/emscripten/libs/
|
||||
- name: Build scummvm
|
||||
run: |
|
||||
dists/emscripten/build.sh make
|
||||
windows:
|
||||
name: Windows
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: win32
|
||||
triplet: x86-windows
|
||||
arch: x86
|
||||
configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx
|
||||
useNasm: 'true'
|
||||
- platform: x64
|
||||
arch: x64
|
||||
triplet: x64-windows
|
||||
configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx
|
||||
- platform: arm64
|
||||
arch: arm64
|
||||
triplet: arm64-windows
|
||||
configFlags: --enable-discord --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx
|
||||
env:
|
||||
CONFIGURATION: Debug
|
||||
PLATFORM: ${{ matrix.platform }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
VCPKG_FEATURE_FLAGS: dependencygraph
|
||||
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }}
|
||||
VCPKG_INSTALLED_DIR: ${{ github.workspace }}/vcpkg_installed
|
||||
VCPKG_BINARY_SOURCES: clear;files,${{ github.workspace }}/vcpkg_cache,readwrite
|
||||
VCPKG_OVERLAY_PORTS: ${{ github.workspace }}/.github/vcpkg-ports
|
||||
GIT_VCPKG_COMMIT: ef7dbf94b9198bc58f45951adcf1f041fcbc5ea0
|
||||
permissions:
|
||||
contents: write # For dependencygraph
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup nasm
|
||||
uses: ilammy/setup-nasm@v1
|
||||
if: matrix.useNasm == 'true'
|
||||
- name: Install vcpkg
|
||||
uses: lukka/run-vcpkg@v11
|
||||
id: runvcpkg
|
||||
with:
|
||||
vcpkgGitCommitId: ${{ env.GIT_VCPKG_COMMIT }}
|
||||
- name: Integrate vcpkg
|
||||
run: |
|
||||
${{ steps.runvcpkg.outputs.RUNVCPKG_VCPKG_ROOT_OUT }}/vcpkg integrate install
|
||||
- name: Restore vcpkg cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/vcpkg_cache
|
||||
key: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}-${{ hashFiles('vcpkg.json', 'vcpkg_installed/compiler-file-hash-cache.json', 'vcpkg_installed/status') }}
|
||||
restore-keys: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}-
|
||||
- name: Build create_project
|
||||
run: |
|
||||
cd devtools/create_project/cmake
|
||||
cmake .
|
||||
cmake --build . -j 2
|
||||
ls
|
||||
cd ../../../
|
||||
- name: Call create_project
|
||||
run: |
|
||||
mkdir build-scummvm
|
||||
cd build-scummvm
|
||||
../devtools/create_project/cmake/Debug/create_project.exe .. --msvc --vcpkg --enable-all-engines ${{ matrix.configFlags }}
|
||||
ls
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
- name: Install vcpkg packages
|
||||
run: |
|
||||
vcpkg install
|
||||
- name: Save vcpkg cache
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ${{ github.workspace }}/vcpkg_cache
|
||||
key: vcpkg-${{ env.GIT_VCPKG_COMMIT }}-${{ matrix.triplet }}-${{ hashFiles('vcpkg.json', 'vcpkg_installed/compiler-file-hash-cache.json', 'vcpkg_installed/status') }}
|
||||
- name: Build scummvm
|
||||
run: |
|
||||
cd build-scummvm
|
||||
ls
|
||||
msbuild scummvm.sln /m /p:VcpkgEnableManifest=true /p:BuildInParallel=true /p:Configuration=${{ env.CONFIGURATION }} /p:PreferredToolArchitecture=x64 /p:Platform=${{ matrix.platform }} /v:minimal
|
||||
- name: Upload scummvm
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.buildArtifacts == 'true'
|
||||
with:
|
||||
name: scummvm-${{ matrix.arch }}
|
||||
path: build-scummvm/${{ env.CONFIGURATION }}${{ matrix.arch }}/*.exe
|
||||
- name: Upload scummvm libs
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.buildArtifacts == 'true'
|
||||
with:
|
||||
name: libs-${{ matrix.arch }}
|
||||
path: ${{ env.VCPKG_INSTALLED_DIR }}\\${{ matrix.triplet }}\\bin\\*.dll
|
||||
- name: Upload scummvm symbols
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.buildArtifacts == 'true' && env.CONFIGURATION == 'Debug'
|
||||
with:
|
||||
name: symbols-${{ matrix.arch }}
|
||||
path: build-scummvm/${{ env.CONFIGURATION }}${{ matrix.arch }}/*.pdb
|
||||
- name: Upload scummvm libs symbols
|
||||
uses: actions/upload-artifact@v4
|
||||
if: matrix.buildArtifacts == 'true' && env.CONFIGURATION == 'Debug'
|
||||
with:
|
||||
name: lib-symbols-${{ matrix.arch }}
|
||||
path: ${{ env.VCPKG_INSTALLED_DIR }}\\${{ matrix.triplet }}\\bin\\*.pdb
|
||||
xcode:
|
||||
name: Xcode
|
||||
runs-on: macos-15-intel
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: macosx
|
||||
buildFlags: -scheme ScummVM-macOS -destination 'platform=macOS,arch=x86_64'
|
||||
configFlags: --enable-faad --enable-gif --enable-mikmod --enable-mpeg2 --enable-vpx
|
||||
brewPackages: a52dec faad2 flac fluid-synth freetype fribidi giflib jpeg mad libmikmod libmpeg2 libogg libpng libvorbis libvpx sdl2 sdl2_net theora
|
||||
- platform: ios7
|
||||
buildFlags: -scheme ScummVM-iOS CODE_SIGN_IDENTITY="" CODE_SIGNING_ALLOWED=NO
|
||||
configFlags: --ios --use-xcframework --enable-faad --enable-gif --enable-mikmod --enable-vpx --enable-mpc --enable-a52 --disable-taskbar --disable-tts
|
||||
packagesUrl: https://downloads.scummvm.org/frs/build/scummvm-ios7-libs-v4.zip
|
||||
defaults:
|
||||
run:
|
||||
# Must be explicit for proper pipefail support
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Install packages
|
||||
if: ${{ matrix.brewPackages }}
|
||||
run: brew install ${{ matrix.brewPackages }}
|
||||
- name: Download libraries
|
||||
if: ${{ matrix.packagesUrl }}
|
||||
run: |
|
||||
curl -L -o libs.zip ${{ matrix.packagesUrl }}
|
||||
unzip libs.zip
|
||||
ls
|
||||
- name: Build create_project
|
||||
run: |
|
||||
cd devtools/create_project/xcode
|
||||
xcodebuild
|
||||
ls
|
||||
cd ../../../
|
||||
- name: Call create_project
|
||||
run: |
|
||||
./devtools/create_project/xcode/build/Release/create_project . --xcode --enable-all-engines ${{ matrix.configFlags }}
|
||||
ls
|
||||
- name: Build cache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ matrix.platform }}
|
||||
max-size: 1G
|
||||
create-symlink: true
|
||||
- name: Build scummvm
|
||||
run: |
|
||||
xcodebuild CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ build -project scummvm.xcodeproj ${{ matrix.buildFlags }} | awk '$1 !~ /^(export|cd|clang++)/'
|
||||
ls
|
||||
ubuntu:
|
||||
name: Ubuntu
|
||||
runs-on: ${{ matrix.platform }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- platform: ubuntu-latest
|
||||
sdlConfig: sdl2-config
|
||||
cxx: ccache g++
|
||||
aptPackages: 'liba52-dev libcurl4-openssl-dev libfaad-dev libflac-dev libfluidsynth-dev libfreetype6-dev libfribidi-dev libgif-dev libgtk-3-dev libjpeg-turbo8-dev libmad0-dev libmikmod-dev libmpeg2-4-dev libogg-dev libpng-dev libsdl2-dev libsdl2-net-dev libsndio-dev libspeechd-dev libtheora-dev libunity-dev libvorbis-dev libvpx-dev zlib1g-dev'
|
||||
configFlags: --enable-discord --with-discord-prefix=/usr/local
|
||||
- platform: ubuntu-22.04
|
||||
sdlConfig: sdl-config
|
||||
cxx: ccache g++-4.8
|
||||
aptPackages: 'g++-4.8 liba52-dev libcurl4-openssl-dev libfaad-dev libflac-dev libfluidsynth-dev libfreetype6-dev libfribidi-dev libgif-dev libgtk-3-dev libjpeg-turbo8-dev libmad0-dev libmikmod-dev libmpeg2-4-dev libogg-dev libpng-dev libsdl-net1.2-dev libsdl1.2-dev libsndio-dev libspeechd-dev libtheora-dev libunity-dev libvorbis-dev libvpx-dev zlib1g-dev'
|
||||
configFlags: --enable-discord --with-discord-prefix=/usr/local
|
||||
env:
|
||||
SDL_CONFIG: ${{ matrix.sdlConfig }}
|
||||
defaults:
|
||||
run:
|
||||
# Must be explicit for proper pipefail support
|
||||
shell: bash
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Add Ubuntu Xenial package sources
|
||||
if: matrix.platform == 'ubuntu-22.04'
|
||||
run: |
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 40976EAF437D05B5
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 3B4FE6ACC0B21F32
|
||||
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial main'
|
||||
sudo apt-add-repository 'deb http://azure.archive.ubuntu.com/ubuntu/ xenial universe'
|
||||
- name: Install packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install ${{ matrix.aptPackages }}
|
||||
- name: Download and install Discord RPC libraries
|
||||
run: |
|
||||
curl -L -o discord-rpc-linux.zip https://github.com/discord/discord-rpc/releases/download/v3.4.0/discord-rpc-linux.zip
|
||||
echo 'dac1f5dc6bedaeab1cc3c2c7fd4261e00838c81619c3ee325f3723c3d55ee03a discord-rpc-linux.zip' | sha256sum --check && unzip discord-rpc-linux.zip
|
||||
sudo cp -v -pR discord-rpc/linux-dynamic/include/*.* /usr/local/include/
|
||||
sudo cp -v -pR discord-rpc/linux-dynamic/lib/*.* /usr/local/lib/
|
||||
- name: ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
key: ${{ matrix.platform }}
|
||||
max-size: 1G
|
||||
- name: Call configure
|
||||
run: |
|
||||
CXX='${{ matrix.cxx }}' ./configure --enable-all-engines ${{ matrix.configFlags }}
|
||||
- name: Build scummvm
|
||||
run: |
|
||||
make -j2
|
||||
- name: Build tests
|
||||
run: |
|
||||
make test
|
||||
- name: Build devtools
|
||||
run: |
|
||||
make devtools
|
||||
Reference in New Issue
Block a user