Skip to content

CMake refactoring

CMake refactoring #197

Workflow file for this run

name: Build
on:
push:
branches-ignore:
- "dependabot/*"
pull_request:
workflow_dispatch:
jobs:
build-windows:
name: Windows ${{ matrix.Configuration }} ${{ matrix.Platform }} (msvc)
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
Configuration: [Debug, Mixed, Release, Release Master Gold]
Platform: [x64, x86]
steps:
- uses: actions/checkout@main
with:
submodules: recursive
- uses: microsoft/setup-msbuild@main
- uses: nuget/setup-nuget@main
- name: Restore NuGet packages
run: nuget restore src\engine.sln
- name: Build
working-directory: src
run: msbuild /m /p:Configuration="${{ matrix.Configuration }}" /p:Platform="${{ matrix.Platform }}" engine.sln
- name: Prepare artifacts
shell: cmd
run: misc/windows/xr_pack_build.cmd "${{ matrix.Configuration }}" "${{ matrix.Platform }}"
- name: Upload OpenXRay artifact
uses: actions/upload-artifact@main
with:
name: OpenXRay.${{ matrix.Configuration }} ${{ matrix.Platform }} (github-${{ github.run_number }}).7z
path: res/OpenXRay.*.7z
- name: Upload Symbols
uses: actions/upload-artifact@main
with:
name: Symbols.${{ matrix.Configuration }} ${{ matrix.Platform }} (github-${{ github.run_number }}).7z
path: res/Symbols.*.7z
- name: Upload Utils
uses: actions/upload-artifact@main
with:
name: Utils.${{ matrix.Configuration }} ${{ matrix.Platform }} (github-${{ github.run_number }}).7z
path: res/Utils.*.7z
- name: Update latest-nightly tag
uses: EndBug/latest-tag@latest
if: github.ref_name == 'dev'
id: update-latest-nightly-tag
with:
ref: latest-nightly
- name: Publish latest nightly build
if: ${{ steps.update-latest-nightly-tag.outcome == 'success' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release upload --clobber latest-nightly (get-item res/*.*.7z)
build-ubuntu:
name: Ubuntu ${{ matrix.Configuration }} ${{ matrix.Platform }} (${{ matrix.CC }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
Configuration: [Debug, Release]
Platform: [x64]
CC: [gcc, clang]
include:
- CC: gcc
CXX: g++
- CC: clang
CXX: clang++
steps:
- uses: actions/checkout@main
with:
submodules: recursive
- name: Deinit Crypto++
run: git submodule deinit Externals/cryptopp
- name: Install packages
run: |
sudo apt-get update -qq
sudo apt-get install -qq -y libsdl2-dev libglew-dev liblzo2-dev libjpeg-dev &&
sudo apt-get install -qq -y libopenal-dev libogg-dev libtheora-dev libvorbis-dev
- name: Install Clang
if: ${{ matrix.CC == 'clang' }}
uses: egor-tensin/setup-clang@master
- name: Run CMake
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: CFLAGS="-w" CXXFLAGS="-w" cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.Configuration }} -DCMAKE_UNITY_BUILD=ON
- name: Run CMake Build
id: cmake-build
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: cmake --build build --config ${{ matrix.Configuration }} --parallel $(nproc || echo 4)
- name: Make package
if: ${{ steps.cmake-build.outcome == 'success' }}
id: make-package
working-directory: build
#continue-on-error: true
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
run: |
make -j $(nproc || echo 4) package
file openxray_1.6.02_*.deb
- name: Upload OpenXRay artifact
if: ${{ steps.make-package.outcome == 'success' }}
uses: actions/upload-artifact@main
with:
name: openxray_1.6.02_${{ matrix.Configuration }}_${{ matrix.Platform }}_(github-${{ matrix.CC }}-${{ github.run_number }}).deb
path: build/openxray_1.6.02_*.deb
build-alpine:
name: Alpine ${{ matrix.Configuration }} ${{ matrix.Platform }} (gcc)
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
Configuration: [Debug, Release]
Platform: [x86_64, x86]
steps:
- uses: actions/checkout@main
with:
submodules: recursive
- name: Deinit Crypto++
run: |
git submodule deinit Externals/cryptopp
- name: Install latest stable Alpine Linux
uses: jirutka/setup-alpine@master
with:
arch: ${{ matrix.Platform }}
branch: 'latest-stable'
packages: build-base cmake mold sdl2-dev glew-dev lzo-dev libjpeg-turbo-dev openal-soft-dev libogg-dev libtheora-dev libvorbis-dev
- name: Run CMake x64
if: ${{ matrix.Platform == 'x86_64' }}
shell: alpine.sh {0}
run: CFLAGS="-w" CXXFLAGS="-w" cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.Configuration }} -DCMAKE_UNITY_BUILD=ON -DXRAY_LINKER=mold
- name: Run CMake x86
if: ${{ matrix.Platform == 'x86' }}
shell: alpine.sh {0}
run: CFLAGS="-m32 -w" CXXFLAGS="-m32 -w" cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.Configuration }} -DCMAKE_ASM_FLAGS=-m32 -DCMAKE_UNITY_BUILD=ON -DXRAY_LINKER=mold
- name: Run CMake Build
shell: alpine.sh {0}
run: cmake --build build --config ${{ matrix.Configuration }} --parallel $(nproc || echo 4)
build-macos:
name: macOS ${{ matrix.Configuration }} ${{ matrix.Platform }}
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
Configuration: [Debug, Release]
steps:
- uses: actions/checkout@main
with:
submodules: recursive
- name: Deinit Crypto++
run: git submodule deinit Externals/cryptopp
- name: Install packages
run: |
brew update
brew install sdl2 glew lzo libogg libvorbis theora
- name: Run CMake
run: CFLAGS="-w" CXXFLAGS="-w" cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.Configuration }} -DCMAKE_UNITY_BUILD=ON
- name: Run CMake Build
run: cmake --build build --config ${{ matrix.Configuration }} --parallel $(sysctl -n hw.ncpu || echo 4)