forked from open-simh/simh
-
Notifications
You must be signed in to change notification settings - Fork 0
248 lines (224 loc) · 9.13 KB
/
cmake-builds.yml
File metadata and controls
248 lines (224 loc) · 9.13 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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
name: CMake build workflows
on:
workflow_call:
jobs:
cmake-unix:
name: Ubuntu
runs-on: ${{ matrix.os }}
strategy:
#-
# The CMake builds produce artifacts (*) and the runner image's name is
# used in the artifact's name, simh-4.1.0-x86_64-ubuntu-20.04.deb.
# Consequently, each runner image is enumerated for each artifact (*)
# that the build produces.
#
# (*) "artefact" for the rest of the Anglosphere
#-
matrix:
os: [ubuntu-22.04, ubuntu-latest]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sh -ex .travis/deps.sh linux
sudo apt install -ym ninja-build
- name: cmake-builder.sh
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --notest --parallel --verbose --cpack_suffix x86_64-${{matrix.os}}
- name: SIMH simulator suite test
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --testonly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
run: |
cmake/cmake-builder.sh --config Release --flavor ninja --installonly
- name: SIMH packaging
run: |
cd cmake/build-ninja
cpack -G DEB -C Release
- name: Upload DEB
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-x86_64-${{matrix.os}}.deb
path: cmake/build-ninja/simh-4.1.0-x86_64-${{matrix.os}}.deb
cmake-macOS:
name: macOS
runs-on: ${{ matrix.os }}
strategy:
#-
# The CMake builds produce artifacts (*) and the runner image's name is
# used in the artifact's name, e.g., simh-4.1.0-m1.macos-14.dmg.
# Consequently, each runner image is enumerated for each artifact (*)
# that the build produces.
#
# (*) "artefact" for the rest of the Anglosphere -
#
# As of 18 NOV 2024, Github deprecated macos-12.
matrix:
os: [macos-13, macos-14, macos-latest]
env:
CPACK_SUFFIX: ${{matrix.os != 'macos-14' && 'x86_64' || 'm1'}}.${{matrix.os}}
steps:
- uses: actions/checkout@v4
## Nuke homebrew and start with a clean instance.
- name: Reinstall HomeBrew (macOS)
run: |
/usr/bin/sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
[ -d /opt/homebrew ] && ( sudo rm -rf /opt/homebrew/* || true )
[ -d /usr/local ] && ( sudo rm -rf /usr/local/* || true )
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- name: Install dependencies
run: |
sh -ex .travis/deps.sh osx
- name: cmake-builder.sh
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --notest --cpack_suffix ${{env.CPACK_SUFFIX}}
- name: SIMH simulator suite test
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --testonly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
run: |
cmake/cmake-builder.sh --config Release --flavor xcode --installonly
- name: SIMH packaging
run: |
cd cmake/build-xcode
cpack -G "ZIP;TGZ" -C Release
cpack -G DragNDrop -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.zip
- name: Upload DMG
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{env.CPACK_SUFFIX}}.dmg
path: cmake/build-xcode/simh-4.1.0-${{env.CPACK_SUFFIX}}.dmg
cmake-vs2022xp:
name: VS 2022 XP-compatible LEGACY
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install v141_xp (XP toolkit) and build SIMH
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$WarningPreference = "Continue"
$DebugPreference = "Continue"
# Fix PATH so that "C:\Strawberry" (Strawberry Perl) doesn't mess with the build
# CMake WILL find incompatible libraries within Strawberry.
$fixPATH = (${env:PATH}.Split(';') | `
Where-Object { $_ -notlike "*\Strawberry\*" -and $_ -notlike "*/Strawberry/*" }) -join ';'
$env:Path = $fixPATH
## Install the XP toolkit, aka v141_xp. This script is specific to the Github environment.
./cmake/github_v141_xp.ps1
#+
# The GH Windows runner image documentation says that the VSSetup module is installed, from
# whence Get-VSSetupInstance and Select-VSSetupInstance are imported. This step is pure
# paranoia, ensuring that we really, truly and honestly have WinXP support.
#-
Write-Debug "Get-VSSetupInstance/Select-VSSetupInstance"
$instances=$(Get-VSSetupInstance -All | Select-VSSetupInstance -Require 'Microsoft.VisualStudio.Component.WinXP' -Latest)
if ($null -eq $instances)
{
throw "v141_xp didn't install correctly or incomplete install."
}
else
{
$instances | Write-Output
}
## Don't use LTO for XP. XP compatibility comes from VS2017 -- MS is
## at VS2022. There are likely legacy bugs that have been fixed.
./cmake/cmake-builder.ps1 -flavor vs2022-xp -config Release -clean -verbose -notest -cpack_suffix win32-xp
- name: SIMH simulator suite test
shell: pwsh
run: |
./cmake/cmake-builder.ps1 -flavor vs2022-xp -config Release -testOnly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
shell: pwsh
run: |
cmake/cmake-builder.ps1 -config Release -flavor vs2022-xp -installOnly
- name: SIMH packaging
shell: pwsh
run: |
cd cmake\build-vs2022-xp
cpack -G "ZIP;WIX" -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022xp.zip
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.zip
- name: Upload MSI
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-win32-vs2022xp.msi
path: cmake/build-vs2022-xp/simh-4.1.0-win32-xp.msi
cmake-vs2022:
name: VS 2022 Win10 native VCPKG
runs-on: windows-latest
strategy:
#-
# The CMake builds produce artifacts (*) and the runner image's name is
# used in the artifact's name, simh-4.1.0-x86_64-ubuntu-20.04.deb.
# Consequently, each runner image is enumerated for each artifact (*)
# that the build produces.
#
# (*) "artefact" for the rest of the Anglosphere
#-
matrix:
build: [vs2022]
steps:
- uses: actions/checkout@v4
- name: vs2022 build
shell: pwsh
run: |
$ErrorActionPreference="Stop"
$WarningPreference="Continue"
# Fix PATH so that "C:\Strawberry" (Strawberry Perl) doesn't mess with the build
# CMake WILL find incompatible libraries within Strawberry.
$fixPATH = (${env:PATH}.Split(';') | `
Where-Object { $_ -notlike "*\Strawberry\*" -and $_ -notlike "*/Strawberry/*" }) -join ';'
$env:PATH = $fixPATH
# Make this a vcpkg build:
$env:VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT
Push-Location $env:VCPKG_ROOT
git pull
Pop-Location
./cmake/cmake-builder.ps1 -flavor ${{matrix.build}} -config Release -clean -lto -verbose `
-notest `
-cpack_suffix ${{matrix.build}}
- name: SIMH simulator suite test
shell: pwsh
run: |
./cmake/cmake-builder.ps1 -flavor ${{matrix.build}} -config Release -testOnly
## Install isn't strictly necessary, but it's a good way to see what dependencies
## (IMPORTED_RUNTIME_ARTIFACTS) get installed.
- name: Install
shell: pwsh
run: |
cmake/cmake-builder.ps1 -config Release -flavor ${{matrix.build}} -installOnly
- name: SIMH packaging
shell: pwsh
run: |
cd cmake\build-${{matrix.build}}
cpack -G "NSIS;WIX;ZIP" -C Release
- name: Upload ZIP
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{matrix.build}}.zip
path: cmake/build-${{matrix.build}}/simh-4.1.0-${{matrix.build}}.zip
- name: Upload EXE installer
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{matrix.build}}.exe
path: cmake/build-${{matrix.build}}/simh-4.1.0-${{matrix.build}}.exe
- name: Upload MSI installer
uses: actions/upload-artifact@v4
with:
name: simh-4.1.0-${{matrix.build}}.msi
path: cmake/build-${{matrix.build}}/simh-4.1.0-${{matrix.build}}.msi