@@ -4,8 +4,9 @@ on: [push, pull_request]
4
4
5
5
jobs :
6
6
build-mingw :
7
- name : ${{matrix.sys}}-${{matrix.env}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
8
- runs-on : windows-latest
7
+ if : false
8
+ name : mingw64-${{matrix.env}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
9
+ runs-on : ${{matrix.os}}
9
10
defaults :
10
11
run :
11
12
shell : msys2 {0}
@@ -14,24 +15,36 @@ jobs:
14
15
strategy :
15
16
fail-fast : true
16
17
matrix :
18
+ os :
19
+ - windows-11-arm
20
+ - windows-2022
17
21
build_type : [Release, Debug]
18
- sys : [mingw64]
19
22
lib : [shared, static]
23
+ arch :
24
+ - arm64
25
+ - x64
20
26
components : [minimal, lgpl, gpl]
21
27
metis : [no-metis, metis]
22
28
exclude :
23
29
# METIS is only usable if CHOLMOD is compiled
24
30
- components : minimal
25
31
metis : metis
26
32
include :
27
- - sys : mingw64
33
+ - x64 :
34
+ os : windows-2022
28
35
env : x86_64
36
+ sys : mingw64
37
+ - arm64 :
38
+ os : windows-11-arm
39
+ env : clang-aarch64
40
+ sys : clangarm64
29
41
30
42
steps :
31
43
- uses : actions/checkout@v4
32
44
33
- - name : Setup Dependencies
45
+ - name : Setup Dependencies (x86_64)
34
46
uses : msys2/setup-msys2@v2
47
+ if : ${{matrix.env == 'x86_64'}}
35
48
with :
36
49
msystem : ${{matrix.sys}}
37
50
install : >-
47
60
unzip
48
61
wget
49
62
63
+ - name : Setup Dependencies (clang-aarch64)
64
+ uses : msys2/setup-msys2@v2
65
+ if : ${{matrix.env == 'clang-aarch64'}}
66
+ with :
67
+ msystem : ${{matrix.sys}}
68
+ install : >-
69
+ mingw-w64-${{matrix.env}}-ccache
70
+ mingw-w64-${{matrix.env}}-clang
71
+ mingw-w64-${{matrix.env}}-cmake
72
+ mingw-w64-${{matrix.env}}-flang
73
+ mingw-w64-${{matrix.env}}-intel-tbb
74
+ mingw-w64-${{matrix.env}}-lapack
75
+ mingw-w64-${{matrix.env}}-ninja
76
+ mingw-w64-${{matrix.env}}-openblas
77
+ mingw-w64-${{matrix.env}}-openmp
78
+ unzip
79
+ wget
80
+
81
+
50
82
- name : Setup METIS Dependencies
51
83
if : ${{matrix.metis == 'metis'}}
52
84
run : >-
94
126
--target install
95
127
96
128
build-msvc :
97
- name : ${{matrix.msvc}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
129
+ name : ${{matrix.msvc}}-${{matrix.arch}}-${{matrix. build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
98
130
runs-on : ${{matrix.os}}
99
131
env :
100
132
CCACHE_DIR : ${{github.workspace}}/ccache
@@ -105,9 +137,14 @@ jobs:
105
137
strategy :
106
138
fail-fast : true
107
139
matrix :
140
+ os :
141
+ - windows-11-arm
142
+ - windows-2022
108
143
build_type : [Release, Debug]
109
- msvc : [VS-16-2019, VS-17-2022]
110
- sys : [mingw64]
144
+ msvc : [VS-17-2022]
145
+ arch :
146
+ - arm64
147
+ - x64
111
148
lib : [shared, static]
112
149
components : [minimal, lgpl, gpl]
113
150
metis : [no-metis, metis]
@@ -116,17 +153,21 @@ jobs:
116
153
- components : minimal
117
154
metis : metis
118
155
include :
119
- - sys : mingw64
120
- env : x86_64
156
+ - os : windows-2022
121
157
system : Win64
122
- - msvc : VS-16-2019
123
- generator : " Visual Studio 16 2019"
124
- os : windows-2019
125
- marker : vc16
158
+ - os : windows-11-arm
159
+ system : arm64
126
160
- msvc : VS-17-2022
127
161
generator : " Visual Studio 17 2022"
128
- os : windows-2022
129
162
marker : vc17
163
+ - x64 :
164
+ os : windows-2022
165
+ env : x86_64
166
+ sys : mingw64
167
+ - arm64 :
168
+ os : windows-11-arm
169
+ env : clang-aarch64
170
+ sys : clangarm64
130
171
131
172
steps :
132
173
- uses : actions/checkout@v4
@@ -137,7 +178,7 @@ jobs:
137
178
uses : actions/cache@v4
138
179
with :
139
180
path : metis/
140
- key : ${{matrix.msvc}}-metis-5.1.0-${{matrix.build_type}}-shared
181
+ key : ${{matrix.msvc}}-${{matrix.arch}}- metis-5.1.0-${{matrix.build_type}}-shared
141
182
142
183
- name : Download METIS
143
184
if : matrix.metis == 'metis' && steps.cache-metis.outputs.cache-hit != 'true'
@@ -160,7 +201,7 @@ jobs:
160
201
Pop-Location
161
202
162
203
cmake -S metis-5.1.0 -B build-metis `
163
- -A x64 `
204
+ -A ${{matrix.arch}} `
164
205
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/metis `
165
206
-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON `
166
207
-DMETIS_INSTALL:BOOL=ON `
@@ -171,8 +212,9 @@ jobs:
171
212
--target install
172
213
173
214
174
- - name : Setup MSYS2
215
+ - name : Setup MSYS2 (x86_64)
175
216
uses : msys2/setup-msys2@v2
217
+ if : ${{matrix.env == 'x86_64'}}
176
218
with :
177
219
msystem : ${{matrix.sys}}
178
220
path-type : inherit
@@ -182,14 +224,26 @@ jobs:
182
224
mingw-w64-${{matrix.env}}-gcc-fortran
183
225
mingw-w64-${{matrix.env}}-ninja
184
226
227
+ - name : Setup MSYS2 (aarch64)
228
+ uses : msys2/setup-msys2@v2
229
+ if : ${{matrix.env == 'clang-aarch64'}}
230
+ with :
231
+ msystem : ${{matrix.sys}}
232
+ path-type : inherit
233
+ install : >-
234
+ wget
235
+ mingw-w64-${{matrix.env}}-ccache
236
+ mingw-w64-${{matrix.env}}-flang
237
+ mingw-w64-${{matrix.env}}-ninja
238
+
185
239
- name : Cache LAPACK
186
240
id : cache-lapack
187
241
uses : actions/cache@v4
188
242
with :
189
243
path : |
190
244
${{env.CCACHE_DIR}}
191
245
${{github.workspace}}/install
192
- key : ${{matrix.msvc}}-lapack-3.12.0-${{matrix.build_type}}
246
+ key : ${{matrix.msvc}}-${{matrix.arch}}- lapack-3.12.0-${{matrix.build_type}}
193
247
194
248
- name : Download LAPACK
195
249
if : steps.cache-lapack.outputs.cache-hit != 'true'
@@ -198,11 +252,29 @@ jobs:
198
252
wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz
199
253
tar xvf v3.12.0.tar.gz
200
254
201
- - name : Build LAPACK
202
- if : steps.cache-lapack.outputs.cache-hit != 'true'
255
+ - name : Build LAPACK (x86_64)
256
+ if : matrix.arch == 'x64' && steps.cache-lapack.outputs.cache-hit != 'true'
257
+ shell : msys2 {0}
258
+ run : |
259
+ cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
260
+ -DBUILD_SHARED_LIBS=ON \
261
+ -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
262
+ -DCMAKE_C_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
263
+ -DCMAKE_Fortran_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
264
+ -DCMAKE_GNUtoMS=ON \
265
+ -DCMAKE_INSTALL_PREFIX=./install \
266
+ -G Ninja
267
+
268
+ cmake --build build_lapack_${{matrix.build_type}}/ \
269
+ --config ${{matrix.build_type}} \
270
+ --target install
271
+
272
+ - name : Build LAPACK (aarch64)
273
+ if : matrix.arch == 'arm64' && steps.cache-lapack.outputs.cache-hit != 'true'
203
274
shell : msys2 {0}
204
275
run : |
205
276
cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
277
+ --toolchain "${{github.workspace}}/cmake/Flang.cmake" \
206
278
-DBUILD_SHARED_LIBS=ON \
207
279
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
208
280
-DCMAKE_C_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
@@ -229,7 +301,7 @@ jobs:
229
301
- name : Configure
230
302
run : |
231
303
cmake -S . -B build_${{matrix.build_type}}/ `
232
- -A x64 `
304
+ -A ${{matrix.arch}} `
233
305
-DBLAS_blas_LIBRARY=${{github.workspace}}/install/lib/libblas.lib `
234
306
-DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
235
307
-DCMAKE_Fortran_COMPILER= `
0 commit comments