Merge branch 'master' into pr_lightmap_modding_vkdoom #18
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Integration | |
on: [push, pull_request] | |
jobs: | |
build: | |
name: ${{ matrix.config.name }} | ${{ matrix.config.build_type }} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- name: Visual Studio 2022 | |
os: windows-2022 | |
extra_options: -DCMAKE_TOOLCHAIN_FILE=build/vcpkg/scripts/buildsystems/vcpkg.cmake | |
build_type: RelWithDebInfo | |
- name: Visual Studio 2022 | |
os: windows-2022 | |
extra_options: -DCMAKE_TOOLCHAIN_FILE=build/vcpkg/scripts/buildsystems/vcpkg.cmake | |
build_type: Debug | |
- name: macOS | |
os: macos-14 | |
deps_cmdline: brew install libvpx | |
build_type: Release | |
- name: macOS | |
os: macos-14 | |
extra_options: -G Xcode -DDYN_OPENAL=OFF | |
deps_cmdline: brew install libvpx | |
build_type: Debug | |
- name: Linux GCC 9 | |
os: ubuntu-22.04 | |
extra_options: -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=g++-9 | |
deps_cmdline: sudo apt update && sudo apt install libsdl2-dev libvpx-dev libgtk2.0-dev libwebp-dev | |
build_type: MinSizeRel | |
- name: Linux GCC 12 | |
os: ubuntu-22.04 | |
extra_options: -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 | |
deps_cmdline: sudo apt update && sudo apt install libsdl2-dev libvpx-dev libgtk-3-dev libwebp-dev | |
build_type: RelWithDebInfo | |
- name: Linux Clang 11 | |
os: ubuntu-22.04 | |
extra_options: -DCMAKE_C_COMPILER=clang-11 -DCMAKE_CXX_COMPILER=clang++-11 -DDYN_OPENAL=OFF | |
deps_cmdline: sudo apt update && sudo apt install clang-11 libsdl2-dev libvpx-dev libopenal-dev libwebp-dev | |
build_type: Debug | |
- name: Linux Clang 15 | |
os: ubuntu-22.04 | |
extra_options: -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 | |
deps_cmdline: sudo apt update && sudo apt install clang-15 libsdl2-dev libvpx-dev libwebp-dev | |
build_type: Release | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
if [[ -n "${{ matrix.config.deps_cmdline }}" ]]; then | |
eval ${{ matrix.config.deps_cmdline }} | |
fi | |
mkdir build | |
if [[ "${{ runner.os }}" == 'macOS' ]]; then | |
export ZMUSIC_PACKAGE=zmusic-1.1.14-macos-arm.tar.xz | |
elif [[ "${{ runner.os }}" == 'Linux' ]]; then | |
export ZMUSIC_PACKAGE=zmusic-1.1.14-linux.tar.xz | |
fi | |
if [[ -n "${ZMUSIC_PACKAGE}" ]]; then | |
cd build | |
wget -q "https://github.com/coelckers/gzdoom/releases/download/ci_deps/${ZMUSIC_PACKAGE}" | |
tar -xf "${ZMUSIC_PACKAGE}" | |
fi | |
- name: Setup vcpkg | |
uses: lukka/run-vcpkg@v11 | |
if: runner.os == 'Windows' | |
with: | |
vcpkgDirectory: '${{ github.workspace }}/build/vcpkg' | |
vcpkgGitCommitId: '2c401863dd54a640aeb26ed736c55489c079323b' | |
- name: Configure | |
shell: bash | |
run: | | |
cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} -DCMAKE_PREFIX_PATH=`pwd`/build/zmusic -DPK3_QUIET_ZIPDIR=ON ${{ matrix.config.extra_options }} . | |
- name: Build | |
shell: bash | |
run: | | |
export MAKEFLAGS=--keep-going | |
cmake --build build --config ${{ matrix.config.build_type }} --parallel 3 | |
- name: Create Package | |
if: (runner.os == 'Windows' || matrix.config.name == 'Linux GCC 12') && matrix.config.build_type == 'RelWithDebInfo' | |
shell: bash | |
run: | | |
cd build | |
mkdir package | |
if [[ "${{ runner.os }}" == 'Windows' ]]; then | |
cp -r ${{ matrix.config.build_type }}/vkdoom.exe ${{ matrix.config.build_type }}/*.pk3 ${{ matrix.config.build_type }}/fm_banks ${{ matrix.config.build_type }}/soundfonts package | |
cp ../bin/licenses.zip ../bin/windows/libsndfile/64bit/libsndfile-1.dll ../bin/windows/openal/64bit/openal32.dll ../bin/windows/zmusic/64bit/zmusic.dll package | |
cp ${{ matrix.config.build_type }}/vkdoom-stripped.pdb package/vkdoom.pdb | |
elif [[ "${{ runner.os }}" == 'macOS' ]]; then | |
cp -r vkdoom.app package | |
elif [[ "${{ runner.os }}" == 'Linux' ]]; then | |
cp vkdoom *.pk3 package | |
strip package/vkdoom | |
fi | |
- name: Upload Package | |
if: runner.os == 'Windows' || matrix.config.name == 'Linux GCC 12' | |
uses: actions/upload-artifact@v4 | |
with: | |
path: build/package | |
name: ${{ matrix.config.name }} ${{ matrix.config.build_type }} | |
- name: List Build Directory | |
if: always() | |
shell: bash | |
run: | | |
git status | |
ls -lR build | |
deploy: | |
name: Update Latest successful build | |
runs-on: ubuntu-latest | |
needs: build | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
steps: | |
- name: Download Windows artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: Visual Studio 2022 RelWithDebInfo | |
path: build/vkdoom-windows-prerelease | |
- name: Download Linux artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: Linux GCC 12 RelWithDebInfo | |
path: build/vkdoom-linux-prerelease | |
- name: Zip artifacts | |
shell: bash | |
run: | | |
cd build | |
zip -r vkdoom-windows-prerelease.zip vkdoom-windows-prerelease | |
zip -r vkdoom-linux-prerelease.zip vkdoom-linux-prerelease | |
- name: Update nightly release | |
uses: pyTooling/Actions/releaser@r0 | |
with: | |
tag: nightly | |
rm: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
files: build/vkdoom-windows-prerelease.zip build/vkdoom-linux-prerelease.zip | |