4e5b14c071
Change the Ccache config so that it has a much higher hit rate during compilation, see https://ccache.dev/manual/latest.html#_precompiled_headers for details. For Clang, always setting -fno-pch-timestamp seems to be ok, so no need to special case this depending on whether or not Ccache is used.
172 lines
4.8 KiB
YAML
172 lines
4.8 KiB
YAML
name: Build
|
|
|
|
on:
|
|
push:
|
|
branches: [ master ]
|
|
|
|
env:
|
|
CCACHE_VERSION: 4.11.3
|
|
CCACHE_MAXSIZE: 500Mi
|
|
# needed because wiRenderer uses conditional include via __hasinclude
|
|
CCACHE_NODIRECT: 1
|
|
# see https://ccache.dev/manual/latest.html#_precompiled_headers
|
|
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
|
|
|
|
jobs:
|
|
|
|
windows:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Restore Ccache database
|
|
id: restore-ccache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: C:\Users\runneradmin\AppData\Local\ccache
|
|
key: ccache-win-${{ github.run_id }}
|
|
restore-keys: ccache-win-
|
|
|
|
- name: Install Ccache
|
|
run: |
|
|
curl -sOSL https://github.com/ccache/ccache/releases/download/v$Env:CCACHE_VERSION/ccache-$Env:CCACHE_VERSION-windows-x86_64.zip
|
|
unzip -qj ccache-$Env:CCACHE_VERSION-windows-x86_64.zip ccache-$Env:CCACHE_VERSION-windows-x86_64/ccache.exe
|
|
mv ccache.exe cl.exe
|
|
mv .github/workflows/Directory.Build.props.ghbuild Directory.Build.props
|
|
|
|
- name: Initial compile
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
|
|
MSBuild WickedEngine.sln /t:OfflineShaderCompiler /m /p:Configuration=Release /p:Platform=x64
|
|
|
|
- name: Generate shader dump
|
|
shell: cmd
|
|
run: |
|
|
cd "WickedEngine"
|
|
"../BUILD/x64/Release/OfflineShaderCompiler/OfflineShaderCompiler.exe" hlsl6 spirv shaderdump strip_reflection
|
|
|
|
- name: Recompile with shader dump
|
|
shell: cmd
|
|
run: |
|
|
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
|
|
MSBuild WickedEngine.sln /t:clean /m /p:Configuration=Release /p:Platform=x64
|
|
MSBuild WickedEngine.sln /t:Editor_Windows /m /p:Configuration=Release /p:Platform=x64
|
|
|
|
- name: Save Ccache database
|
|
id: save-ccache
|
|
if: always() && steps.restore-ccache.cache-hit != 'true'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: C:\Users\runneradmin\AppData\Local\ccache
|
|
key: ${{ steps.restore-ccache.outputs.cache-primary-key }}
|
|
|
|
- name: Move files
|
|
shell: cmd
|
|
run: |
|
|
move BUILD\x64\Release\Editor_Windows\Editor_Windows.exe .\
|
|
move Editor\config.ini .\
|
|
move Editor\startup.lua .\
|
|
move Editor\languages .\
|
|
move Editor\fonts .\
|
|
|
|
- name: Package Editor
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Editor (Windows)
|
|
path: |
|
|
languages/
|
|
fonts/
|
|
config.ini
|
|
startup.lua
|
|
Editor_Windows.exe
|
|
|
|
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
name: linux (${{ matrix.cc }})
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- cc: gcc
|
|
cxx: g++
|
|
package_bins: true
|
|
- cc: clang
|
|
cxx: clang++
|
|
package_bins: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Restore Ccache database
|
|
id: restore-ccache
|
|
uses: actions/cache/restore@v4
|
|
with:
|
|
path: ~/.cache/ccache
|
|
key: ccache-${{ matrix.cc }}-${{ github.run_id }}
|
|
restore-keys: ccache-${{ matrix.cc }}-
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install libsdl2-dev ccache
|
|
|
|
- name: Initial compile
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
|
make -j$(nproc)
|
|
- name: Generate shader dump
|
|
run: |
|
|
cd build/WickedEngine
|
|
./offlineshadercompiler spirv rebuild shaderdump
|
|
mv wiShaderDump.h ../../WickedEngine/
|
|
|
|
- name: Recompile with shader dump
|
|
run: |
|
|
cd build
|
|
make -B -j $(nproc)
|
|
|
|
- name: Save Ccache database
|
|
id: save-ccache
|
|
if: always() && steps.restore-ccache.cache-hit != 'true'
|
|
uses: actions/cache/save@v4
|
|
with:
|
|
path: ~/.cache/ccache
|
|
key: ${{ steps.restore-ccache.outputs.cache-primary-key }}
|
|
|
|
- name: Move files
|
|
if: matrix.package_bins
|
|
run: |
|
|
mv build/Editor/Editor ./Editor_Linux
|
|
mv Editor/config.ini ./
|
|
mv Editor/startup.lua ./
|
|
mv Editor/fonts ./
|
|
|
|
- name: Package Editor
|
|
if: matrix.package_bins
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Editor (Linux)
|
|
path: |
|
|
fonts/
|
|
config.ini
|
|
startup.lua
|
|
Editor_Linux
|
|
|
|
content:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Package Content
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: Content
|
|
path: |
|
|
Content/Documentation
|
|
Content/models
|
|
Content/scripts
|
|
Content/terrain
|