-
Notifications
You must be signed in to change notification settings - Fork 27
106 lines (85 loc) · 3.5 KB
/
Copy pathbuild.yml
File metadata and controls
106 lines (85 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
name: Build
on:
pull_request:
workflow_dispatch:
inputs:
debug:
type: boolean
description: 'Enable TMate Debug'
required: false
default: false
env:
BUILD_TYPE: Release
MAKE_THREAD_NUM: 16
CMAKE_VERSION: '4.1.2'
jobs:
build:
strategy:
# Linux runs alongside Windows/macOS, but the engine's own Linux support is
# not yet verified -- keep a failing Linux leg from cancelling the others.
fail-fast: false
matrix:
os: ['windows-2022', 'macOS-latest', 'ubuntu-latest']
runs-on: ${{ matrix.os }}
steps:
- name: Setup TMate Session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug }}
with:
detached: true
- name: Set XCode Version
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
if: runner.os == 'macOS'
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
if: runner.os == 'Windows'
# Qt's prebuilt Qt6::Gui transitively requires WrapOpenGL, so CMake's FindOpenGL needs the GL dev
# files (libOpenGL.so, libGLX.so, GL/gl.h). The runners only ship the runtime libraries by default.
- name: Setup Linux Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev
if: runner.os == 'Linux'
- name: Checkout Repo
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Setup CMake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: ${{env.CMAKE_VERSION}}
- name: Setup Conan
uses: conan-io/setup-conan@v1
- name: Config Conan Remote
run: conan remote add explosion https://conan.kindem.online/artifactory/api/conan/conan
# xorg/system (pulled in transitively by Qt on Linux) declares its X11 dev packages as system
# requirements; let Conan install them via apt instead of erroring out in the default 'check' mode.
- name: Allow Conan System Package Install
run: |
conf="$(conan config home)/global.conf"
echo "tools.system.package_manager:mode=install" >> "$conf"
echo "tools.system.package_manager:sudo=True" >> "$conf"
if: runner.os == 'Linux'
# Register the in-repo recipes in the local cache so the engine's 'conan install --build=missing'
# resolves them from this checkout: unchanged recipes hash to the revision already published on the
# remote (binaries are downloaded), changed ones get built locally, making recipe PRs self-contained.
- name: Export Conan Recipes
run: |
pip install pyyaml
python ThirdParty/ConanRecipes/build_recipes.py --export-only
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -G=Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCI=ON
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j ${{env.MAKE_THREAD_NUM}}
- name: Test
working-directory: ${{github.workspace}}/build
run: ctest -C ${{env.BUILD_TYPE}} --extra-verbose
- name: Install
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target install -j ${{env.MAKE_THREAD_NUM}}
# TODO build test project