-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
192 lines (170 loc) · 6.3 KB
/
Copy path.gitlab-ci.yml
File metadata and controls
192 lines (170 loc) · 6.3 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
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# DESCRIPTION: GitLab CI/CD for libRetro (NOT FOR GitLab-proper)
##############################################################################
################################# BOILERPLATE ################################
##############################################################################
# Core definitions
.core-defs:
variables:
CORENAME: pcsx2
CORE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.18
GIT_SUBMODULE_STRATEGY: recursive
# Inclusion templates, required for the build to work
include:
################################## DESKTOPS ################################
# Windows
- project: 'libretro-infrastructure/ci-templates'
file: '/windows-cmake-msvc19.yml'
# MacOS
- project: 'libretro-infrastructure/ci-templates'
file: 'osx-cmake-x86.yml'
# MacOS arm64
- project: 'libretro-infrastructure/ci-templates'
file: 'osx-cmake-arm64.yml'
# Linux
- project: 'libretro-infrastructure/ci-templates'
file: '/linux-cmake.yml'
################################## CELLULAR ################################
# Android
- project: 'libretro-infrastructure/ci-templates'
file: '/android-cmake.yml'
# iOS
- project: 'libretro-infrastructure/ci-templates'
file: '/ios-cmake.yml'
# tvOS
- project: 'libretro-infrastructure/ci-templates'
file: '/tvos-cmake.yml'
################################## CONSOLES ################################
# webOS
- project: 'libretro-infrastructure/ci-templates'
file: '/webos-cmake.yml'
# Stages for building
stages:
- build-prepare
- build-shared
##############################################################################
#################################### STAGES ##################################
##############################################################################
#
################################### DESKTOPS #################################
# Windows 64-bit
libretro-prepare-windows-x64:
stage: build-prepare
tags:
- msvc2019
variables:
GIT_SUBMODULE_STRATEGY: normal
# paraLLEl-GS, Granite and volk are vendored in the tree, so only 3rdparty
# is still a submodule. The heroics that used to live here - initialising
# parallel-gs, then Granite, then volk and Khronos headers one at a time -
# existed to avoid checking out
# Granite/third_party/fossilize/cli/SPIRV-Cross, whose
# 'reference/opt/shaders-msl/comp/overlapping-bindings.msl31.argument.argument-tier-1.decoration-binding.device-argument-buffer.texture-buffer-native.comp'
# is longer than Windows will accept. Vendoring removed that problem and
# the paths with it: 'git submodule update --init third_party/khronos/vulkan-headers'
# now fails with "pathspec did not match any file(s) known to git", which
# fails the job before anything is built.
#
# Vulkan headers still resolve. Granite's third_party/CMakeLists.txt only
# descends into khronos/vulkan-headers when Vulkan::Headers is not already
# a target, and 3rdparty/vulkan-headers defines it first.
script:
- |
cd "$Env:CI_PROJECT_DIR"
git submodule update --init --recursive 3rdparty
libretro-build-windows-x64:
extends:
- .libretro-windows-msvc19-cmake-x86_64
- .core-defs
variables:
GIT_SUBMODULE_STRATEGY: normal
EXTRA_PATH: libretro/Release
# Native runner: the smoke gate runs what it just built.
CORE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.18 -DLRPS2_SMOKE_GATE=ON
# Linux 64-bit
libretro-build-linux-x64:
extends:
- .libretro-linux-cmake-x86_64
- .core-defs
variables:
EXTRA_PATH: bin
# Native runner: the smoke gate runs what it just built.
CORE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.18 -DLRPS2_SMOKE_GATE=ON
# Linux 64-bit arm
libretro-build-linux-aarch64:
extends:
- .libretro-linux-cmake-aarch64
- .core-defs
variables:
EXTRA_PATH: bin
# MacOS 64-bit
libretro-build-osx-x64:
tags:
- mac-apple-silicon
extends:
- .libretro-osx-cmake-x86
- .core-defs
variables:
EXTRA_PATH: libretro
CORE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=x86_64 -DARCH_FLAG=-msse4.1
# MacOS arm64
libretro-build-osx-arm64:
extends:
- .libretro-osx-cmake-arm64
- .core-defs
variables:
EXTRA_PATH: libretro
################################### CELLULAR #################################
# Android ARMv8a
# EXTRA_PATH matches the Linux jobs: the top-level CMakeLists redirects the
# library output to bin/ under `UNIX AND NOT APPLE`, which Android satisfies.
android-arm64-v8a:
extends:
- .libretro-android-cmake-arm64-v8a
- .core-defs
variables:
EXTRA_PATH: bin
# Android 64-bit x86
android-x86_64:
extends:
- .libretro-android-cmake-x86_64
- .core-defs
variables:
EXTRA_PATH: bin
##################################### APPLE ##################################
# iOS and tvOS. Both are arm64-only and both take the Android path through the
# renderer: there is no desktop GL on either, so the GL entry points come from
# the frontend through get_proc_address and nothing is linked against.
#
# EXTRA_PATH matches the macOS jobs - the output redirect to bin/ in the top
# level CMakeLists is `UNIX AND NOT APPLE`.
libretro-build-ios-arm64:
extends:
- .libretro-ios-cmake-arm64
- .core-defs
variables:
EXTRA_PATH: libretro
# The template's own default is 8.0. C++17 aligned new and delete arrive in
# the iOS 11 runtime and this core uses them, so 8.0 links against a
# runtime that has no operator new(size_t, align_val_t).
IOS_MINVER: "12.0"
libretro-build-tvos-arm64:
extends:
- .libretro-tvos-cmake-arm64
- .core-defs
variables:
EXTRA_PATH: libretro
##################################### WEBOS ##################################
# aarch64 only. The other half of the platform is armv7a, and the recompilers
# this core has are x86-64 and arm64 - there is nothing for a 32-bit ARM device
# to run the EE and IOP on.
#
# Another Linux with no desktop GL: the buildroot ships EGL and GLES, so the
# renderer takes its entry points from the frontend the way it does on Android,
# and nothing is linked against libGL.
libretro-build-webos-aarch64:
extends:
- .libretro-webos-aarch64-cmake
- .core-defs
variables:
EXTRA_PATH: bin
CORE_ARGS: -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.18 -DWEBOS=ON