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