mirror of
https://github.com/Q3Rally-Team/rallyunlimited-engine.git
synced 2024-11-28 23:12:01 +00:00
372 lines
13 KiB
YAML
372 lines
13 KiB
YAML
|
name: build
|
||
|
|
||
|
on:
|
||
|
pull_request:
|
||
|
paths-ignore:
|
||
|
- '**.md'
|
||
|
- '*.txt'
|
||
|
- '.gitignore'
|
||
|
- 'docs/*'
|
||
|
push:
|
||
|
branches:
|
||
|
- master
|
||
|
paths-ignore:
|
||
|
- '**.md'
|
||
|
- '*.txt'
|
||
|
- '.gitignore'
|
||
|
- 'docs/*'
|
||
|
release:
|
||
|
types: [published]
|
||
|
|
||
|
workflow_dispatch:
|
||
|
|
||
|
jobs:
|
||
|
windows-msys:
|
||
|
name: ${{ matrix.btype }} Windows-GCC ${{ matrix.arch }}
|
||
|
runs-on: windows-2019
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
arch: [x86, x86_64]
|
||
|
cc: [gcc]
|
||
|
btype: [Release, Debug]
|
||
|
include:
|
||
|
- arch: x86
|
||
|
msystem: MINGW32
|
||
|
prefix: mingw-w64-i686
|
||
|
|
||
|
- arch: x86_64
|
||
|
msystem: MINGW64
|
||
|
prefix: mingw-w64-x86_64
|
||
|
|
||
|
- btype: Release
|
||
|
rule: install
|
||
|
|
||
|
- btype: Debug
|
||
|
rule: debug install
|
||
|
|
||
|
defaults:
|
||
|
run:
|
||
|
shell: msys2 {0}
|
||
|
|
||
|
steps:
|
||
|
|
||
|
- uses: msys2/setup-msys2@v2
|
||
|
with:
|
||
|
install: ${{ matrix.prefix }}-binutils ${{ matrix.prefix }}-make ${{ matrix.prefix }}-${{ matrix.cc }}
|
||
|
msystem: ${{ matrix.msystem }}
|
||
|
path-type: minimal
|
||
|
release: false
|
||
|
update: false
|
||
|
|
||
|
- uses: actions/checkout@v3.1.0
|
||
|
with:
|
||
|
submodules: recursive
|
||
|
|
||
|
- name: Build
|
||
|
if: ${{ github.event_name != 'release' || matrix.btype != 'Debug' }} # skip Debug configuration in Release build
|
||
|
run: |
|
||
|
make clean ARCH=${{ matrix.arch }}
|
||
|
make ${{ matrix.rule }} -j 8 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin USE_SDL=0 USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=vulkan CNAME=quake3e-vulkan BUILD_SERVER=0
|
||
|
make clean ARCH=${{ matrix.arch }}
|
||
|
make ${{ matrix.rule }} -j 8 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin USE_SDL=0 USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=opengl
|
||
|
|
||
|
- uses: actions/upload-artifact@v3.1.1
|
||
|
if: matrix.cc == 'gcc' && matrix.btype == 'release'
|
||
|
with:
|
||
|
name: windows-mingw-${{ matrix.arch }}
|
||
|
path: bin
|
||
|
if-no-files-found: error
|
||
|
retention-days: 5
|
||
|
|
||
|
windows-msvc:
|
||
|
name: ${{ matrix.btype }} Windows-MSVC ${{ matrix.arch }}
|
||
|
runs-on: windows-2019
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
arch: [arm64, x86, x64]
|
||
|
btype: [Release, Debug]
|
||
|
include:
|
||
|
- arch: arm64
|
||
|
platform: ARM64
|
||
|
suffix: .arm64
|
||
|
pkg_suffix: arm64
|
||
|
|
||
|
- arch: x86
|
||
|
platform: Win32
|
||
|
pkg_suffix: x86
|
||
|
|
||
|
- arch: x64
|
||
|
platform: x64
|
||
|
suffix: .x64
|
||
|
pkg_suffix: x86_64
|
||
|
|
||
|
steps:
|
||
|
|
||
|
- uses: microsoft/setup-msbuild@v1.1.3
|
||
|
|
||
|
- uses: actions/checkout@v3.1.0
|
||
|
with:
|
||
|
submodules: recursive
|
||
|
|
||
|
- name: Build
|
||
|
if: ${{ github.event_name != 'release' || matrix.btype != 'Debug' }} # skip Debug configuration in Release build
|
||
|
run: |
|
||
|
mkdir bin
|
||
|
|
||
|
msbuild code\win32\msvc2017\quake3e-ded.vcxproj -p:TargetName=quake3e.ded,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }}
|
||
|
copy code\win32\msvc2017\output\quake3e.ded.exe bin\quake3e.ded${{ matrix.suffix }}.exe
|
||
|
msbuild code\win32\msvc2017\quake3e-ded.vcxproj -p:TargetName=quake3e.ded,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }} -t:Clean
|
||
|
|
||
|
msbuild code\win32\msvc2017\renderer.vcxproj -p:Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }}
|
||
|
msbuild code\win32\msvc2017\quake3e.vcxproj -p:TargetName=quake3e,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }},UseWasapi=USE_WASAPI=0
|
||
|
copy code\win32\msvc2017\output\quake3e.exe bin\quake3e${{ matrix.suffix }}.exe
|
||
|
msbuild code\win32\msvc2017\renderer.vcxproj -p:Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }} -t:Clean
|
||
|
msbuild code\win32\msvc2017\quake3e.vcxproj -p:TargetName=quake3e,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }},UseWasapi=USE_WASAPI=0 -t:Clean
|
||
|
|
||
|
msbuild code\win32\msvc2017\renderervk.vcxproj -p:Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }}
|
||
|
msbuild code\win32\msvc2017\quake3e.vcxproj -p:TargetName=quake3e,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }},UseWasapi=USE_WASAPI=0
|
||
|
copy code\win32\msvc2017\output\quake3e.exe bin\quake3e-vulkan${{ matrix.suffix }}.exe
|
||
|
msbuild code\win32\msvc2017\renderervk.vcxproj -p:Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }} -t:Clean
|
||
|
msbuild code\win32\msvc2017\quake3e.vcxproj -p:TargetName=quake3e,Configuration=${{ matrix.btype }},Platform=${{ matrix.platform }},UseWasapi=USE_WASAPI=0 -t:Clean
|
||
|
|
||
|
- uses: actions/upload-artifact@v3.1.1
|
||
|
if: ${{ matrix.btype == 'release' }}
|
||
|
with:
|
||
|
name: windows-msvc-${{ matrix.pkg_suffix }}
|
||
|
path: bin
|
||
|
if-no-files-found: error
|
||
|
retention-days: 5
|
||
|
|
||
|
ubuntu-x86:
|
||
|
name: ${{ matrix.btype }} Ubuntu ${{ matrix.arch }}
|
||
|
runs-on: ubuntu-22.04
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
arch: [x86, x86_64]
|
||
|
cc: [gcc]
|
||
|
btype: [Release, Debug]
|
||
|
include:
|
||
|
- btype: Release
|
||
|
rule: install
|
||
|
|
||
|
- btype: Debug
|
||
|
if: ${{ github.event_name != 'release' }}
|
||
|
rule: debug install
|
||
|
|
||
|
- arch: x86
|
||
|
use_sdl: USE_SDL=0
|
||
|
|
||
|
- arch: x86_64
|
||
|
use_sdl: USE_SDL=1
|
||
|
|
||
|
steps:
|
||
|
|
||
|
- name: Install tools
|
||
|
run: |
|
||
|
if [ ${{ matrix.arch }} == "x86" ]; then
|
||
|
sudo dpkg --add-architecture i386
|
||
|
sudo apt-get -qq update
|
||
|
sudo apt-get -y install gcc-multilib libcurl4-openssl-dev:i386 mesa-common-dev:i386 libxxf86dga-dev:i386 libxrandr-dev:i386 libxxf86vm-dev:i386 libasound-dev:i386
|
||
|
else
|
||
|
sudo apt-get -qq update
|
||
|
sudo apt-get -y install libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev libsdl2-dev
|
||
|
fi
|
||
|
|
||
|
- uses: actions/checkout@v3.1.0
|
||
|
with:
|
||
|
submodules: recursive
|
||
|
|
||
|
- name: Build
|
||
|
if: ${{ github.event_name != 'release' || matrix.btype != 'Debug' }} # skip in Release builds
|
||
|
run: |
|
||
|
make ${{ matrix.rule }} -j 8 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin ${{ matrix.use_sdl }} USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=vulkan CNAME=quake3e-vulkan BUILD_SERVER=0
|
||
|
make clean ARCH=${{ matrix.arch }}
|
||
|
make ${{ matrix.rule }} -j 8 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin ${{ matrix.use_sdl }} USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=opengl
|
||
|
|
||
|
- uses: actions/upload-artifact@v3.1.1
|
||
|
if: matrix.cc == 'gcc' && matrix.btype == 'release'
|
||
|
with:
|
||
|
name: linux-${{ matrix.arch }}
|
||
|
path: bin
|
||
|
if-no-files-found: error
|
||
|
retention-days: 5
|
||
|
|
||
|
ubuntu-arm:
|
||
|
name: ${{ matrix.btype }} Ubuntu [ARM] ${{ matrix.arch }}
|
||
|
runs-on: ubuntu-latest
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
arch: [aarch64, armv7]
|
||
|
cc: [gcc]
|
||
|
btype: [Release, Debug]
|
||
|
include:
|
||
|
- btype: Release
|
||
|
rule: install
|
||
|
|
||
|
- btype: Debug
|
||
|
rule: debug install
|
||
|
|
||
|
steps:
|
||
|
|
||
|
- uses: actions/checkout@v3.1.0
|
||
|
if: false
|
||
|
with:
|
||
|
submodules: recursive
|
||
|
|
||
|
- name: Build ${{ matrix.arch }}
|
||
|
#if: ${{ github.event_name != 'release' || matrix.btype != 'Debug' }} # skip Debug configuration in Release build
|
||
|
if: false
|
||
|
uses: uraimo/run-on-arch-action@v2.0.5
|
||
|
with:
|
||
|
arch: ${{ matrix.arch }}
|
||
|
distro: ubuntu20.04
|
||
|
githubToken: ${{ github.token }}
|
||
|
shell: /bin/sh
|
||
|
run: |
|
||
|
apt-get -qq update
|
||
|
apt-get install -y make gcc g++
|
||
|
apt-get -y install libcurl4-openssl-dev mesa-common-dev libxxf86dga-dev libxrandr-dev libxxf86vm-dev libasound-dev
|
||
|
make ${{ matrix.rule }} -j 4 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin USE_SDL=0 USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=vulkan CNAME=quake3e-vulkan BUILD_SERVER=0
|
||
|
make clean ARCH=${{ matrix.arch }}
|
||
|
make ${{ matrix.rule }} -j 4 ARCH=${{ matrix.arch }} CC=${{ matrix.cc }} DESTDIR=bin USE_SDL=0 USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=opengl
|
||
|
|
||
|
- uses: actions/upload-artifact@v3.1.1
|
||
|
if: false
|
||
|
#if: matrix.cc == 'gcc' && matrix.btype == 'Release'
|
||
|
with:
|
||
|
name: linux-${{ matrix.arch }}
|
||
|
path: bin
|
||
|
if-no-files-found: error
|
||
|
retention-days: 5
|
||
|
|
||
|
macos-x86:
|
||
|
name: ${{ matrix.btype }} macOS x86_64
|
||
|
runs-on: macos-latest
|
||
|
strategy:
|
||
|
fail-fast: false
|
||
|
matrix:
|
||
|
arch: [x86_64]
|
||
|
cc: [clang]
|
||
|
btype: [Release, Debug]
|
||
|
include:
|
||
|
- btype: Release
|
||
|
rule: install
|
||
|
|
||
|
- btype: Debug
|
||
|
rule: debug install
|
||
|
|
||
|
steps:
|
||
|
|
||
|
- name: Install tools
|
||
|
run: brew install coreutils sdl2
|
||
|
|
||
|
- uses: actions/checkout@v3.1.0
|
||
|
with:
|
||
|
submodules: recursive
|
||
|
|
||
|
- name: Build
|
||
|
if: ${{ github.event_name != 'release' || matrix.btype != 'Debug' }} # skip Debug configuration in Release build
|
||
|
run: |
|
||
|
make ${{ matrix.rule }} -j 4 CC=${{ matrix.cc }} DESTDIR=bin INSTALL=ginstall USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=vulkan CNAME=quake3e-vulkan BUILD_SERVER=0
|
||
|
make clean ARCH=${{ matrix.arch }}
|
||
|
make ${{ matrix.rule }} -j 4 CC=${{ matrix.cc }} DESTDIR=bin INSTALL=ginstall USE_RENDERER_DLOPEN=0 RENDERER_DEFAULT=opengl
|
||
|
|
||
|
- uses: actions/upload-artifact@v3.1.1
|
||
|
if: matrix.cc == 'clang' && matrix.btype == 'release'
|
||
|
with:
|
||
|
name: macos-${{ matrix.arch }}
|
||
|
path: bin
|
||
|
if-no-files-found: error
|
||
|
retention-days: 5
|
||
|
|
||
|
create-testing:
|
||
|
if: github.ref == 'refs/heads/master' && github.event_name == 'push' || github.event_name == 'workflow_dispatch'
|
||
|
needs: [windows-msys, windows-msvc, ubuntu-x86, ubuntu-arm, macos-x86]
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Download Artifacts
|
||
|
uses: actions/download-artifact@v3.0.1
|
||
|
|
||
|
- name: Create binary archives
|
||
|
run: |
|
||
|
7z a -r quake3e-linux-x86.zip ./linux-x86/*
|
||
|
7z a -r quake3e-linux-x86_64.zip ./linux-x86_64/*
|
||
|
7z a -r quake3e-windows-mingw-x86.zip ./windows-mingw-x86/*
|
||
|
7z a -r quake3e-windows-mingw-x86_64.zip ./windows-mingw-x86_64/*
|
||
|
7z a -r quake3e-windows-msvc-x86.zip ./windows-msvc-x86/*
|
||
|
7z a -r quake3e-windows-msvc-x86_64.zip ./windows-msvc-x86_64/*
|
||
|
7z a -r quake3e-windows-msvc-arm64.zip ./windows-msvc-arm64/*
|
||
|
7z a -r quake3e-macos-x86_64.zip ./macos-x86_64/*
|
||
|
# 7z a -r quake3e-linux-aarch64.zip ./linux-aarch64/*
|
||
|
# 7z a -r quake3e-linux-armv7.zip ./linux-armv7/*
|
||
|
|
||
|
- name: Create latest build
|
||
|
uses: marvinpinto/action-automatic-releases@latest
|
||
|
with:
|
||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
automatic_release_tag: "latest"
|
||
|
prerelease: false
|
||
|
title: Latest Build
|
||
|
files: |
|
||
|
*.zip
|
||
|
|
||
|
update-release:
|
||
|
if: ${{ github.event_name == 'release' }}
|
||
|
needs: [windows-msys, windows-msvc, ubuntu-x86, ubuntu-arm, macos-x86]
|
||
|
runs-on: ubuntu-latest
|
||
|
|
||
|
strategy:
|
||
|
matrix:
|
||
|
include:
|
||
|
# - artifact_dir: linux-aarch64
|
||
|
# artifact_name: quake3e-linux-aarch64.zip
|
||
|
|
||
|
# - artifact_dir: linux-armv7
|
||
|
# artifact_name: quake3e-linux-armv7.zip
|
||
|
|
||
|
- artifact_dir: linux-x86
|
||
|
artifact_name: quake3e-linux-x86.zip
|
||
|
|
||
|
- artifact_dir: linux-x86_64
|
||
|
artifact_name: quake3e-linux-x86_64.zip
|
||
|
|
||
|
- artifact_dir: windows-mingw-x86
|
||
|
# artifact_name: quake3e-windows-mingw-x86.zip
|
||
|
artifact_name: quake3e-windows-x86.zip
|
||
|
|
||
|
- artifact_dir: windows-mingw-x86_64
|
||
|
# artifact_name: quake3e-windows-mingw-x86_64.zip
|
||
|
artifact_name: quake3e-windows-x86_64.zip
|
||
|
|
||
|
# - artifact_dir: windows-msvc-x86
|
||
|
# artifact_name: quake3e-windows-msvc-x86.zip
|
||
|
|
||
|
# - artifact_dir: windows-msvc-x86_64
|
||
|
# artifact_name: quake3e-windows-msvc-x86_64.zip
|
||
|
|
||
|
- artifact_dir: windows-msvc-arm64
|
||
|
# artifact_name: quake3e-windows-msvc-arm64.zip
|
||
|
artifact_name: quake3e-windows-arm64.zip
|
||
|
|
||
|
- artifact_dir: macos-x86_64
|
||
|
artifact_name: quake3e-macos-x86_64.zip
|
||
|
|
||
|
steps:
|
||
|
- name: Download Artifacts
|
||
|
uses: actions/download-artifact@v3.0.1
|
||
|
|
||
|
- name: Create archive
|
||
|
run: 7z a -r ${{ matrix.artifact_name }} ./${{ matrix.artifact_dir }}/*
|
||
|
|
||
|
- name: Upload archive
|
||
|
uses: "svenstaro/upload-release-action@latest"
|
||
|
with:
|
||
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
tag: ${{ github.ref }}
|
||
|
overwrite: true
|
||
|
file: ${{ matrix.artifact_name }}
|