Skip to content

Commit 013a8bb

Browse files
committed
ci: Add ARM64 Linux builds
1 parent 9006da1 commit 013a8bb

4 files changed

Lines changed: 204 additions & 43 deletions

File tree

.github/workflows/build.yml

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,45 @@ on:
88
- master
99

1010
jobs:
11-
build_linux_clang:
12-
name: "🐧 Linux (Clang)"
11+
build_linux_x64_clang:
12+
name: "🐧 Linux x64 (Clang)"
1313
uses: ./.github/workflows/linux_build.yml
1414
with:
15-
jobName: "Linux Clang Build"
15+
jobName: "Linux x64 Clang Build"
1616
artifactPrefixName: "myMCpp-linux-x64-clang"
17+
platform: x64
1718
compiler: clang
1819
secrets: inherit
1920

20-
build_linux_gcc:
21-
name: "🐧 Linux (GCC)"
21+
build_linux_x64_gcc:
22+
name: "🐧 Linux x64 (GCC)"
2223
uses: ./.github/workflows/linux_build.yml
2324
with:
24-
jobName: "Linux GCC Build"
25+
jobName: "Linux x64 GCC Build"
2526
artifactPrefixName: "myMCpp-linux-x64-gcc"
27+
platform: x64
28+
compiler: gcc
29+
secrets: inherit
30+
31+
build_linux_arm64_clang:
32+
name: "🐧 Linux ARM64 (Clang)"
33+
uses: ./.github/workflows/linux_build.yml
34+
with:
35+
jobName: "Linux ARM64 Clang Build"
36+
artifactPrefixName: "myMCpp-linux-arm64-clang"
37+
os: ubuntu-24.04-arm
38+
platform: arm64
39+
compiler: clang
40+
secrets: inherit
41+
42+
build_linux_arm64_gcc:
43+
name: "🐧 Linux ARM64 (GCC)"
44+
uses: ./.github/workflows/linux_build.yml
45+
with:
46+
jobName: "Linux ARM64 GCC Build"
47+
artifactPrefixName: "myMCpp-linux-arm64-gcc"
48+
os: ubuntu-24.04-arm
49+
platform: arm64
2650
compiler: gcc
2751
secrets: inherit
2852

.github/workflows/linux_build.yml

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ on:
3131
required: false
3232
type: boolean
3333
default: false
34+
platform:
35+
required: false
36+
type: string
37+
default: x64
3438

3539
jobs:
3640
build_linux:
@@ -111,7 +115,8 @@ jobs:
111115
imagemagick \
112116
wget
113117
114-
- name: Install Qt
118+
- name: Install Qt (x64)
119+
if: inputs.platform != 'arm64'
115120
uses: jurplel/install-qt-action@v4.3.1
116121
with:
117122
version: '6.11.0'
@@ -122,13 +127,33 @@ jobs:
122127
cache: true
123128
use-official: true
124129

130+
- name: Install Qt (ARM64)
131+
if: inputs.platform == 'arm64'
132+
uses: jurplel/install-qt-action@v4.3.1
133+
with:
134+
version: '6.11.0'
135+
host: 'linux_arm64'
136+
target: 'desktop'
137+
arch: 'linux_gcc_arm64'
138+
modules: 'qtimageformats'
139+
cache: true
140+
use-official: true
141+
125142
- name: Configure CMake (Clang)
126143
if: inputs.compiler == 'clang'
127144
run: |
128145
if [ "${{ inputs.buildType }}" = "Debug" ]; then
129-
PRESET="linux-dbg"
146+
if [ "${{ inputs.platform }}" = "arm64" ]; then
147+
PRESET="linux-arm64-dbg"
148+
else
149+
PRESET="linux-x64-dbg"
150+
fi
130151
else
131-
PRESET="linux-rel"
152+
if [ "${{ inputs.platform }}" = "arm64" ]; then
153+
PRESET="linux-arm64-rel"
154+
else
155+
PRESET="linux-x64-rel"
156+
fi
132157
fi
133158
echo "PRESET=$PRESET" >> $GITHUB_ENV
134159
cmake --preset $PRESET \
@@ -142,9 +167,17 @@ jobs:
142167
if: inputs.compiler == 'gcc'
143168
run: |
144169
if [ "${{ inputs.buildType }}" = "Debug" ]; then
145-
PRESET="linux-gcc-dbg"
170+
if [ "${{ inputs.platform }}" = "arm64" ]; then
171+
PRESET="linux-arm64-gcc-dbg"
172+
else
173+
PRESET="linux-x64-gcc-dbg"
174+
fi
146175
else
147-
PRESET="linux-gcc-rel"
176+
if [ "${{ inputs.platform }}" = "arm64" ]; then
177+
PRESET="linux-arm64-gcc-rel"
178+
else
179+
PRESET="linux-x64-gcc-rel"
180+
fi
148181
fi
149182
echo "PRESET=$PRESET" >> $GITHUB_ENV
150183
cmake --preset $PRESET \

.github/workflows/nightly_release.yml

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,26 +66,56 @@ jobs:
6666
echo "new_tag=${TAG}" >> "$GITHUB_OUTPUT"
6767
echo "release_name=${NAME}" >> "$GITHUB_OUTPUT"
6868
69-
build_linux_clang:
69+
build_linux_x64_clang:
7070
if: github.repository == 'PCSX2/myMCpp'
71-
name: '🐧 Linux (Clang, Nightly)'
71+
name: '🐧 Linux x64 (Clang, Nightly)'
7272
needs: cut_release
7373
uses: ./.github/workflows/linux_build.yml
7474
with:
75-
jobName: 'Linux Clang Nightly Build'
75+
jobName: 'Linux x64 Clang Nightly Build'
7676
artifactPrefixName: 'myMCpp-nightly-linux-x64-clang'
77+
platform: x64
7778
compiler: clang
7879
fetchTags: true
7980
secrets: inherit
8081

81-
build_linux_gcc:
82+
build_linux_x64_gcc:
8283
if: github.repository == 'PCSX2/myMCpp'
83-
name: '🐧 Linux (GCC, Nightly)'
84+
name: '🐧 Linux x64 (GCC, Nightly)'
8485
needs: cut_release
8586
uses: ./.github/workflows/linux_build.yml
8687
with:
87-
jobName: 'Linux GCC Nightly Build'
88+
jobName: 'Linux x64 GCC Nightly Build'
8889
artifactPrefixName: 'myMCpp-nightly-linux-x64-gcc'
90+
platform: x64
91+
compiler: gcc
92+
fetchTags: true
93+
secrets: inherit
94+
95+
build_linux_arm64_clang:
96+
if: github.repository == 'PCSX2/myMCpp'
97+
name: '🐧 Linux ARM64 (Clang, Nightly)'
98+
needs: cut_release
99+
uses: ./.github/workflows/linux_build.yml
100+
with:
101+
jobName: 'Linux ARM64 Clang Nightly Build'
102+
artifactPrefixName: 'myMCpp-nightly-linux-arm64-clang'
103+
os: ubuntu-24.04-arm
104+
platform: arm64
105+
compiler: clang
106+
fetchTags: true
107+
secrets: inherit
108+
109+
build_linux_arm64_gcc:
110+
if: github.repository == 'PCSX2/myMCpp'
111+
name: '🐧 Linux ARM64 (GCC, Nightly)'
112+
needs: cut_release
113+
uses: ./.github/workflows/linux_build.yml
114+
with:
115+
jobName: 'Linux ARM64 GCC Nightly Build'
116+
artifactPrefixName: 'myMCpp-nightly-linux-arm64-gcc'
117+
os: ubuntu-24.04-arm
118+
platform: arm64
89119
compiler: gcc
90120
fetchTags: true
91121
secrets: inherit
@@ -161,8 +191,10 @@ jobs:
161191
runs-on: ubuntu-latest
162192
needs:
163193
- cut_release
164-
- build_linux_clang
165-
- build_linux_gcc
194+
- build_linux_x64_clang
195+
- build_linux_x64_gcc
196+
- build_linux_arm64_clang
197+
- build_linux_arm64_gcc
166198
- build_macos
167199
- build_windows_x64_clang
168200
- build_windows_x64_msvc

CMakePresets.json

Lines changed: 96 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@
7272
}
7373
},
7474
{
75-
"name": "linux-rel",
76-
"displayName": "Linux Release",
77-
"description": "Release build for Linux with Clang and Ninja",
75+
"name": "linux-x64-rel",
76+
"displayName": "Linux x64 Release",
77+
"description": "Release build for Linux x64 with Clang and Ninja",
7878
"generator": "Ninja",
79-
"binaryDir": "${sourceDir}/build/linux-rel",
79+
"binaryDir": "${sourceDir}/build/linux-x64-rel",
8080
"cacheVariables": {
8181
"CMAKE_BUILD_TYPE": "MinSizeRel",
8282
"CMAKE_C_COMPILER": "clang",
@@ -85,11 +85,11 @@
8585
}
8686
},
8787
{
88-
"name": "linux-dbg",
89-
"displayName": "Linux Debug",
90-
"description": "Debug build for Linux with Clang and Ninja",
88+
"name": "linux-x64-dbg",
89+
"displayName": "Linux x64 Debug",
90+
"description": "Debug build for Linux x64 with Clang and Ninja",
9191
"generator": "Ninja",
92-
"binaryDir": "${sourceDir}/build/linux-dbg",
92+
"binaryDir": "${sourceDir}/build/linux-x64-dbg",
9393
"cacheVariables": {
9494
"CMAKE_BUILD_TYPE": "Debug",
9595
"CMAKE_C_COMPILER": "clang",
@@ -98,11 +98,11 @@
9898
}
9999
},
100100
{
101-
"name": "linux-gcc-rel",
102-
"displayName": "Linux GCC Release",
103-
"description": "Release build for Linux with GCC and Ninja",
101+
"name": "linux-x64-gcc-rel",
102+
"displayName": "Linux x64 GCC Release",
103+
"description": "Release build for Linux x64 with GCC and Ninja",
104104
"generator": "Ninja",
105-
"binaryDir": "${sourceDir}/build/linux-gcc-rel",
105+
"binaryDir": "${sourceDir}/build/linux-x64-gcc-rel",
106106
"cacheVariables": {
107107
"CMAKE_BUILD_TYPE": "MinSizeRel",
108108
"CMAKE_C_COMPILER": "gcc",
@@ -111,11 +111,63 @@
111111
}
112112
},
113113
{
114-
"name": "linux-gcc-dbg",
115-
"displayName": "Linux GCC Debug",
116-
"description": "Debug build for Linux with GCC and Ninja",
114+
"name": "linux-x64-gcc-dbg",
115+
"displayName": "Linux x64 GCC Debug",
116+
"description": "Debug build for Linux x64 with GCC and Ninja",
117117
"generator": "Ninja",
118-
"binaryDir": "${sourceDir}/build/linux-gcc-dbg",
118+
"binaryDir": "${sourceDir}/build/linux-x64-gcc-dbg",
119+
"cacheVariables": {
120+
"CMAKE_BUILD_TYPE": "Debug",
121+
"CMAKE_C_COMPILER": "gcc",
122+
"CMAKE_CXX_COMPILER": "g++",
123+
"ENABLE_VULKAN": "ON"
124+
}
125+
},
126+
{
127+
"name": "linux-arm64-rel",
128+
"displayName": "Linux ARM64 Release",
129+
"description": "Release build for Linux ARM64 with Clang and Ninja",
130+
"generator": "Ninja",
131+
"binaryDir": "${sourceDir}/build/linux-arm64-rel",
132+
"cacheVariables": {
133+
"CMAKE_BUILD_TYPE": "MinSizeRel",
134+
"CMAKE_C_COMPILER": "clang",
135+
"CMAKE_CXX_COMPILER": "clang++",
136+
"ENABLE_VULKAN": "ON"
137+
}
138+
},
139+
{
140+
"name": "linux-arm64-dbg",
141+
"displayName": "Linux ARM64 Debug",
142+
"description": "Debug build for Linux ARM64 with Clang and Ninja",
143+
"generator": "Ninja",
144+
"binaryDir": "${sourceDir}/build/linux-arm64-dbg",
145+
"cacheVariables": {
146+
"CMAKE_BUILD_TYPE": "Debug",
147+
"CMAKE_C_COMPILER": "clang",
148+
"CMAKE_CXX_COMPILER": "clang++",
149+
"ENABLE_VULKAN": "ON"
150+
}
151+
},
152+
{
153+
"name": "linux-arm64-gcc-rel",
154+
"displayName": "Linux ARM64 GCC Release",
155+
"description": "Release build for Linux ARM64 with GCC and Ninja",
156+
"generator": "Ninja",
157+
"binaryDir": "${sourceDir}/build/linux-arm64-gcc-rel",
158+
"cacheVariables": {
159+
"CMAKE_BUILD_TYPE": "MinSizeRel",
160+
"CMAKE_C_COMPILER": "gcc",
161+
"CMAKE_CXX_COMPILER": "g++",
162+
"ENABLE_VULKAN": "ON"
163+
}
164+
},
165+
{
166+
"name": "linux-arm64-gcc-dbg",
167+
"displayName": "Linux ARM64 GCC Debug",
168+
"description": "Debug build for Linux ARM64 with GCC and Ninja",
169+
"generator": "Ninja",
170+
"binaryDir": "${sourceDir}/build/linux-arm64-gcc-dbg",
119171
"cacheVariables": {
120172
"CMAKE_BUILD_TYPE": "Debug",
121173
"CMAKE_C_COMPILER": "gcc",
@@ -182,23 +234,43 @@
182234
"jobs": 0
183235
},
184236
{
185-
"name": "linux-rel",
186-
"configurePreset": "linux-rel",
237+
"name": "linux-x64-rel",
238+
"configurePreset": "linux-x64-rel",
239+
"jobs": 0
240+
},
241+
{
242+
"name": "linux-x64-dbg",
243+
"configurePreset": "linux-x64-dbg",
244+
"jobs": 0
245+
},
246+
{
247+
"name": "linux-x64-gcc-rel",
248+
"configurePreset": "linux-x64-gcc-rel",
249+
"jobs": 0
250+
},
251+
{
252+
"name": "linux-x64-gcc-dbg",
253+
"configurePreset": "linux-x64-gcc-dbg",
254+
"jobs": 0
255+
},
256+
{
257+
"name": "linux-arm64-rel",
258+
"configurePreset": "linux-arm64-rel",
187259
"jobs": 0
188260
},
189261
{
190-
"name": "linux-dbg",
191-
"configurePreset": "linux-dbg",
262+
"name": "linux-arm64-dbg",
263+
"configurePreset": "linux-arm64-dbg",
192264
"jobs": 0
193265
},
194266
{
195-
"name": "linux-gcc-rel",
196-
"configurePreset": "linux-gcc-rel",
267+
"name": "linux-arm64-gcc-rel",
268+
"configurePreset": "linux-arm64-gcc-rel",
197269
"jobs": 0
198270
},
199271
{
200-
"name": "linux-gcc-dbg",
201-
"configurePreset": "linux-gcc-dbg",
272+
"name": "linux-arm64-gcc-dbg",
273+
"configurePreset": "linux-arm64-gcc-dbg",
202274
"jobs": 0
203275
},
204276
{

0 commit comments

Comments
 (0)