@@ -4,8 +4,9 @@ on: [push, pull_request]
44
55jobs :
66 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}}
910 defaults :
1011 run :
1112 shell : msys2 {0}
@@ -15,23 +16,32 @@ jobs:
1516 fail-fast : true
1617 matrix :
1718 build_type : [Release, Debug]
18- sys : [mingw64]
1919 lib : [shared, static]
20+ arch :
21+ - arm64
22+ - x64
2023 components : [minimal, lgpl, gpl]
2124 metis : [no-metis, metis]
2225 exclude :
2326 # METIS is only usable if CHOLMOD is compiled
2427 - components : minimal
2528 metis : metis
2629 include :
27- - sys : mingw64
30+ - arch : x64
31+ os : windows-2022
2832 env : x86_64
33+ sys : mingw64
34+ - arch : arm64
35+ os : windows-11-arm
36+ env : clang-aarch64
37+ sys : clangarm64
2938
3039 steps :
3140 - uses : actions/checkout@v4
3241
33- - name : Setup Dependencies
42+ - name : Setup Dependencies (x86_64)
3443 uses : msys2/setup-msys2@v2
44+ if : ${{matrix.sys == 'mingw64'}}
3545 with :
3646 msystem : ${{matrix.sys}}
3747 install : >-
4757 unzip
4858 wget
4959
60+ - name : Setup Dependencies (clang-aarch64)
61+ uses : msys2/setup-msys2@v2
62+ if : ${{matrix.sys == 'clangarm64'}}
63+ with :
64+ msystem : ${{matrix.sys}}
65+ install : >-
66+ mingw-w64-${{matrix.env}}-ccache
67+ mingw-w64-${{matrix.env}}-clang
68+ mingw-w64-${{matrix.env}}-cmake
69+ mingw-w64-${{matrix.env}}-flang
70+ mingw-w64-${{matrix.env}}-intel-tbb
71+ mingw-w64-${{matrix.env}}-lapack
72+ mingw-w64-${{matrix.env}}-ninja
73+ mingw-w64-${{matrix.env}}-openblas
74+ mingw-w64-${{matrix.env}}-openmp
75+ unzip
76+ wget
77+
78+
5079 - name : Setup METIS Dependencies
5180 if : ${{matrix.metis == 'metis'}}
5281 run : >-
94123 --target install
95124
96125 build-msvc :
97- name : ${{matrix.msvc}}-${{matrix.build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
126+ name : ${{matrix.msvc}}-${{matrix.arch}}-${{matrix. build_type}}-${{matrix.lib}}-${{matrix.components}}-${{matrix.metis}}
98127 runs-on : ${{matrix.os}}
99128 env :
100129 CCACHE_DIR : ${{github.workspace}}/ccache
@@ -106,8 +135,10 @@ jobs:
106135 fail-fast : true
107136 matrix :
108137 build_type : [Release, Debug]
109- msvc : [VS-16-2019, VS-17-2022]
110- sys : [mingw64]
138+ msvc : [VS-17-2022]
139+ arch :
140+ - arm64
141+ - x64
111142 lib : [shared, static]
112143 components : [minimal, lgpl, gpl]
113144 metis : [no-metis, metis]
@@ -116,17 +147,19 @@ jobs:
116147 - components : minimal
117148 metis : metis
118149 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
126150 - msvc : VS-17-2022
127151 generator : " Visual Studio 17 2022"
128- os : windows-2022
129152 marker : vc17
153+ - arch : x64
154+ env : x86_64
155+ os : windows-2022
156+ sys : mingw64
157+ system : Win64
158+ - arch : arm64
159+ env : clang-aarch64
160+ os : windows-11-arm
161+ sys : clangarm64
162+ system : arm64
130163
131164 steps :
132165 - uses : actions/checkout@v4
@@ -137,7 +170,7 @@ jobs:
137170 uses : actions/cache@v4
138171 with :
139172 path : metis/
140- key : ${{matrix.msvc}}-metis-5.1.0-${{matrix.build_type}}-shared
173+ key : ${{matrix.msvc}}-${{matrix.arch}}- metis-5.1.0-${{matrix.build_type}}-shared
141174
142175 - name : Download METIS
143176 if : matrix.metis == 'metis' && steps.cache-metis.outputs.cache-hit != 'true'
@@ -160,7 +193,7 @@ jobs:
160193 Pop-Location
161194
162195 cmake -S metis-5.1.0 -B build-metis `
163- -A x64 `
196+ -A ${{matrix.arch}} `
164197 -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/metis `
165198 -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON `
166199 -DMETIS_INSTALL:BOOL=ON `
@@ -170,26 +203,40 @@ jobs:
170203 --config ${{matrix.build_type}} `
171204 --target install
172205
173-
174- - name : Setup MSYS2
206+ - name : Setup MSYS2 (x86_64)
175207 uses : msys2/setup-msys2@v2
208+ if : ${{matrix.sys == 'mingw64'}}
176209 with :
177210 msystem : ${{matrix.sys}}
178211 path-type : inherit
179212 install : >-
180213 wget
181214 mingw-w64-${{matrix.env}}-ccache
215+ mingw-w64-${{matrix.env}}-cmake
182216 mingw-w64-${{matrix.env}}-gcc-fortran
183217 mingw-w64-${{matrix.env}}-ninja
184218
219+ - name : Setup MSYS2 (aarch64)
220+ uses : msys2/setup-msys2@v2
221+ if : ${{matrix.sys == 'clangarm64'}}
222+ with :
223+ msystem : ${{matrix.sys}}
224+ path-type : inherit
225+ install : >-
226+ wget
227+ mingw-w64-${{matrix.env}}-ccache
228+ mingw-w64-${{matrix.env}}-cmake
229+ mingw-w64-${{matrix.env}}-flang
230+ mingw-w64-${{matrix.env}}-ninja
231+
185232 - name : Cache LAPACK
186233 id : cache-lapack
187234 uses : actions/cache@v4
188235 with :
189236 path : |
190237 ${{env.CCACHE_DIR}}
191238 ${{github.workspace}}/install
192- key : ${{matrix.msvc}}-lapack-3.12.0-${{matrix.build_type}}
239+ key : ${{matrix.msvc}}-${{matrix.arch}}- lapack-3.12.0-${{matrix.build_type}}
193240
194241 - name : Download LAPACK
195242 if : steps.cache-lapack.outputs.cache-hit != 'true'
@@ -198,10 +245,28 @@ jobs:
198245 wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.0.tar.gz
199246 tar xvf v3.12.0.tar.gz
200247
201- - name : Build LAPACK
202- if : steps.cache-lapack.outputs.cache-hit != 'true'
248+ - name : Build LAPACK (x86_64)
249+ if : matrix.arch == 'x64' && steps.cache-lapack.outputs.cache-hit != 'true'
250+ shell : msys2 {0}
251+ run : |
252+ cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
253+ -DBUILD_SHARED_LIBS=ON \
254+ -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
255+ -DCMAKE_C_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
256+ -DCMAKE_Fortran_COMPILER_LAUNCHER:FILEPATH=$(which ccache) \
257+ -DCMAKE_GNUtoMS=ON \
258+ -DCMAKE_INSTALL_PREFIX=./install \
259+ -G Ninja
260+
261+ cmake --build build_lapack_${{matrix.build_type}}/ \
262+ --config ${{matrix.build_type}} \
263+ --target install
264+
265+ - name : Build LAPACK (aarch64)
266+ if : matrix.arch == 'arm64' && steps.cache-lapack.outputs.cache-hit != 'true'
203267 shell : msys2 {0}
204268 run : |
269+ cat ./cmake/Flang.cmake >> lapack-3.12.0/CMakeLists.txt
205270 cmake -S lapack-3.12.0 -B build_lapack_${{matrix.build_type}}/ \
206271 -DBUILD_SHARED_LIBS=ON \
207272 -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
@@ -229,7 +294,7 @@ jobs:
229294 - name : Configure
230295 run : |
231296 cmake -S . -B build_${{matrix.build_type}}/ `
232- -A x64 `
297+ -A ${{matrix.arch}} `
233298 -DBLAS_blas_LIBRARY=${{github.workspace}}/install/lib/libblas.lib `
234299 -DBUILD_SHARED_LIBS=${{matrix.lib == 'shared'}} `
235300 -DCMAKE_Fortran_COMPILER= `
0 commit comments