-
-
Notifications
You must be signed in to change notification settings - Fork 260
154 lines (134 loc) · 5.86 KB
/
windows.yml
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
name: 🚪 Windows Builds
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# Global Cache Settings
# SCONS_CACHE for windows must be set in the build environment
env:
GODOT_BASE_BRANCH: "4.4-stable"
SCONS_CACHE_MSVC_CONFIG: true
SCONS_CACHE_LIMIT_GB: 4
jobs:
windows:
# Windows 10 with latest image
runs-on: "windows-latest"
name: ${{matrix.name}}
strategy:
matrix:
include:
- name: 4.4 Editor
target: editor
precision: single
executable_name: godot.windows.editor.x86_64.exe
tracy: no
- name: 4.4 Profiling Editor
target: editor
precision: single
# This is not a built-in feature of Godot so we have to do some changes manually
executable_name: godot.windows.tracy.editor.x86_64.exe
original_executable_name: godot.windows.editor.x86_64.exe
tracy: yes
- name: 4.4 Editor Float64
target: editor
precision: double
executable_name: godot.windows.editor.double.x86_64.exe
tracy: no
- name: 4.4 Template
target: template_release
precision: single
executable_name: godot.windows.template_release.x86_64.exe
tracy: no
steps:
# Clone Godot
- uses: actions/checkout@v4
with:
repository: godotengine/godot
ref: ${{ env.GODOT_BASE_BRANCH }}
# Clone our module under the correct directory
- uses: actions/checkout@v4
with:
path: modules/voxel
# The version of ThorVG in 4.3-stable hits an error in latest MSVC (see godot#95861).
# We should no longer need this in 4.3.1 and later.
# - name: Patch ThorVG
# run: |
# curl -LO https://github.com/godotengine/godot/commit/4abc358952a69427617b0683fd76427a14d6faa8.patch
# git apply 4abc358952a69427617b0683fd76427a14d6faa8.patch
# Upload cache on completion and check it out now
# Editing this is pretty dangerous for Windows since it can break and needs to be properly tested with a fresh cache.
- name: Load .scons_cache directory
id: windows-cache-2
#uses: ${{matrix.cache_action}}
uses: actions/cache@v4
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.executable_name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{matrix.executable_name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{matrix.executable_name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{matrix.executable_name}}-${{env.GODOT_BASE_BRANCH}}
# Use python 3.x release (works cross platform; best to keep self contained in it's own step)
- name: Set up Python 3.x
uses: actions/setup-python@v5
with:
# Semantic version range syntax or exact version of a Python version
python-version: '3.x'
# Optional - x64 or x86 architecture, defaults to x64
architecture: 'x64'
# Setup scons, print python version and scons version info, so if anything is broken it won't run the build.
- name: Configuring Python packages
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons pywin32
python --version
scons --version
- name: Install Tracy
if: ${{ matrix.tracy == 'yes' }}
uses: actions/checkout@v4
with:
repository: wolfpld/tracy
ref: v0.10
path: thirdparty/tracy
# This is to instrument specific parts of Godot. Our module already has built-in instrumentation.
- name: Instrument code
if: ${{ matrix.tracy == 'yes' }}
run:
python modules/voxel/misc/instrument.py -d . -c modules/voxel/misc/instruments.json
# Add ANGLE support.
# This is not provided by default.
# See https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_windows.html#compiling-with-angle-support
- name: Add ANGLE
run: |
curl -LO "https://github.com/godotengine/godot-angle-static/releases/download/chromium%2F6601.2/godot-angle-static-x86_64-msvc-release.zip"
7z x godot-angle-static-x86_64-msvc-release.zip -oangle
dir
cd angle
dir
# Compile with explicit flags.
#
# TODO `PYTHONIOENCODING` is not working!
# It would be needed due to certain characters the Godot build system might print (such as '∞',
# when `cache_limit` is not specified), otherwise it makes the job fail with an encoding error.
# Currently we specify it, but the issue remain unsolved if it shows up again.
# See https://github.com/godotengine/godot/issues/103520
#
# TODO Enhancement: we'd like to use `warnings=extra` with MSVC but Godot doesn't compile yet with that level of warnings.
# See https://github.com/godotengine/godot/issues/66537
- name: Compilation
run: |
set PYTHONIOENCODING=utf-8
scons verbose=yes warnings=all werror=yes platform=windows tests=no target=${{matrix.target}} dev_build=no precision=${{matrix.precision}} tracy=${{matrix.tracy}} production=yes "cache_path=${{github.workspace}}/.scons_cache/" cache_limit=${{env.SCONS_CACHE_LIMIT_GB}} "angle_libs=${{github.workspace}}/angle"
- name: "Rename executable"
if: ${{ matrix.tracy == 'yes' }}
run:
mv bin/${{matrix.original_executable_name}} bin/${{matrix.executable_name}}
# Make build available
- uses: actions/upload-artifact@v4
with:
name: ${{matrix.executable_name}}
path: bin/${{matrix.executable_name}}