@@ -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,16 +153,19 @@ jobs:
116
153
- components : minimal
117
154
metis : metis
118
155
include :
119
- - sys : mingw64
156
+ - x64 :
157
+ os : windows-2022
120
158
env : x86_64
159
+ sys : mingw64
121
160
system : Win64
122
- - msvc : VS-16-2019
123
- generator : " Visual Studio 16 2019"
124
- os : windows-2019
125
- marker : vc16
126
- - msvc : VS-17-2022
127
161
generator : " Visual Studio 17 2022"
128
- os : windows-2022
162
+ marker : vc17
163
+ - arm64 :
164
+ os : windows-11-arm
165
+ env : clang-aarch64
166
+ sys : clangarm64
167
+ system : arm64
168
+ generator : " Visual Studio 17 2022"
129
169
marker : vc17
130
170
131
171
steps :
@@ -137,7 +177,7 @@ jobs:
137
177
uses : actions/cache@v4
138
178
with :
139
179
path : metis/
140
- key : ${{matrix.msvc}}-metis-5.1.0-${{matrix.build_type}}-shared
180
+ key : ${{matrix.msvc}}-${{matrix.arch}}- metis-5.1.0-${{matrix.build_type}}-shared
141
181
142
182
- name : Download METIS
143
183
if : matrix.metis == 'metis' && steps.cache-metis.outputs.cache-hit != 'true'
@@ -160,7 +200,7 @@ jobs:
160
200
Pop-Location
161
201
162
202
cmake -S metis-5.1.0 -B build-metis `
163
- -A x64 `
203
+ -A ${{matrix.arch}} `
164
204
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/metis `
165
205
-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON `
166
206
-DMETIS_INSTALL:BOOL=ON `
@@ -170,9 +210,9 @@ jobs:
170
210
--config ${{matrix.build_type}} `
171
211
--target install
172
212
173
-
174
- - name : Setup MSYS2
213
+ - name : Setup MSYS2 (x86_64)
175
214
uses : msys2/setup-msys2@v2
215
+ if : ${{matrix.env == 'x86_64'}}
176
216
with :
177
217
msystem : ${{matrix.sys}}
178
218
path-type : inherit
@@ -182,14 +222,26 @@ jobs:
182
222
mingw-w64-${{matrix.env}}-gcc-fortran
183
223
mingw-w64-${{matrix.env}}-ninja
184
224
225
+ - name : Setup MSYS2 (aarch64)
226
+ uses : msys2/setup-msys2@v2
227
+ if : ${{matrix.env == 'clang-aarch64'}}
228
+ with :
229
+ msystem : ${{matrix.sys}}
230
+ path-type : inherit
231
+ install : >-
232
+ wget
233
+ mingw-w64-${{matrix.env}}-ccache
234
+ mingw-w64-${{matrix.env}}-flang
235
+ mingw-w64-${{matrix.env}}-ninja
236
+
185
237
- name : Cache LAPACK
186
238
id : cache-lapack
187
239
uses : actions/cache@v4
188
240
with :
189
241
path : |
190
242
${{env.CCACHE_DIR}}
191
243
${{github.workspace}}/install
192
- key : ${{matrix.msvc}}-lapack-3.12.0-${{matrix.build_type}}
244
+ key : ${{matrix.msvc}}-${{matrix.arch}}- lapack-3.12.0-${{matrix.build_type}}
193
245
194
246
- name : Download LAPACK
195
247
if : steps.cache-lapack.outputs.cache-hit != 'true'
@@ -198,10 +250,28 @@ jobs:
198
250
wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz
199
251
tar xvf v3.12.0.tar.gz
200
252
201
- - name : Build LAPACK
202
- if : steps.cache-lapack.outputs.cache-hit != 'true'
253
+ - name : Build LAPACK (x86_64)
254
+ if : matrix.arch == 'x64' && steps.cache-lapack.outputs.cache-hit != 'true'
255
+ shell : msys2 {0}
256
+ run : |
257
+ cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
258
+ -DBUILD_SHARED_LIBS=ON \
259
+ -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
260
+ -DCMAKE_C_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
261
+ -DCMAKE_Fortran_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
262
+ -DCMAKE_GNUtoMS=ON \
263
+ -DCMAKE_INSTALL_PREFIX=./install \
264
+ -G Ninja
265
+
266
+ cmake --build build_lapack_${{matrix.build_type}}/ \
267
+ --config ${{matrix.build_type}} \
268
+ --target install
269
+
270
+ - name : Build LAPACK (aarch64)
271
+ if : matrix.arch == 'arm64' && steps.cache-lapack.outputs.cache-hit != 'true'
203
272
shell : msys2 {0}
204
273
run : |
274
+ cat ./cmake/Flang.cmake >> lapack-3.12.0/CMakeLists.txt
205
275
cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
206
276
-DBUILD_SHARED_LIBS=ON \
207
277
-DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
@@ -229,7 +299,7 @@ jobs:
229
299
- name : Configure
230
300
run : |
231
301
cmake -S . -B build_${{matrix.build_type}}/ `
232
- -A x64 `
302
+ -A ${{matrix.arch}} `
233
303
-DBLAS_blas_LIBRARY=${{github.workspace}}/install/lib/libblas.lib `
234
304
-DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
235
305
-DCMAKE_Fortran_COMPILER= `
0 commit comments