99 strategy :
1010 fail-fast : false
1111 matrix :
12- platform : [macos-13 , windows-latest , ubuntu-latest, macos-14 ]
12+ platform : [windows-latest , windows-11-arm , ubuntu-latest, ubuntu-24.04-arm, macos-13, macos-latest ]
1313
1414 runs-on : ${{ matrix.platform }}
1515
@@ -23,13 +23,13 @@ jobs:
2323 python-version : ' 3.10'
2424
2525 - name : Install Windows Dependencies (Part 0 - Setup LLVM-style)
26- if : matrix.platform == 'windows-latest'
26+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
2727 uses : llvm/actions/setup-windows@main
2828 with :
2929 arch : amd64
3030
3131 - name : Install Windows Dependencies (Part 1 - Configure Conan ...and zip)
32- if : matrix.platform == 'windows-latest'
32+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
3333 shell : powershell
3434 run : |
3535 choco install zip -y
@@ -42,13 +42,19 @@ jobs:
4242 conan --version
4343 conan profile detect --force
4444
45- - name : Install Windows Dependencies (Part 2 - Reconfigure Conan)
45+ - name : Install Windows Dependencies (Part 2 - Reconfigure Conan) <x86_64>
4646 if : matrix.platform == 'windows-latest'
4747 shell : bash
4848 run : |
4949 cp conan-profiles/CI-CD/Windows-AMD64_profile.txt $CONAN_HOME/profiles/default
5050
51- - name : Install Intel MacOS dependencies
51+ - name : Install Windows Dependencies (Part 2 - Reconfigure Conan) <ARM>
52+ if : matrix.platform == 'windows-11-arm'
53+ shell : bash
54+ run : |
55+ cp conan-profiles/CI-CD/Windows-ARM8_profile.txt $CONAN_HOME/profiles/default
56+
57+ - name : Install MacOS dependencies <x86_64>
5258 if : matrix.platform == 'macos-13'
5359 shell : bash
5460 run : |
5864 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
5965 cp conan-profiles/CI-CD/MacOS-AMD64_profile.txt ~/.conan2/profiles/default
6066
61- - name : Install ARM MacOS dependencies
67+ - name : Install MacOS dependencies <ARM>
6268 if : matrix.platform == 'macos-14'
6369 shell : bash
6470 run : |
6874 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
6975 cp conan-profiles/CI-CD/MacOS-ARM8_profile.txt ~/.conan2/profiles/default
7076
71- - name : Install Linux Dependencies
77+ - name : Install Linux Dependencies <x86_64>
7278 if : matrix.platform == 'ubuntu-latest'
7379 run : |
7480 sudo apt update
@@ -82,20 +88,34 @@ jobs:
8288 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
8389 cp conan-profiles/CI-CD/Linux-AMD64_profile.txt ~/.conan2/profiles/default
8490
91+ - name : Install Linux Dependencies <ARM>
92+ if : matrix.platform == 'ubuntu-24.04-arm'
93+ run : |
94+ sudo apt update
95+ sudo apt upgrade -y
96+ sudo apt install -y wget
97+ wget --version
98+ wget https://github.com/conan-io/conan/releases/download/2.17.0/conan-2.17.0-amd64.deb
99+ sudo apt install -y ./conan-*.deb
100+ conan --version
101+ mkdir -p ~/.conan2/profiles/
102+ touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
103+ cp conan-profiles/CI-CD/Linux-ARM8_profile.txt ~/.conan2/profiles/default
104+
85105 - name : Install Dependencies through Conan on Windows
86- if : matrix.platform == 'windows-latest'
106+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
87107 shell : powershell
88108 run : |
89109 conan install . --output-folder build --build=missing -o include_messaging=False
90110
91111 - name : Install Dependencies through Conan on Unix
92- if : matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
112+ if : matrix.platform == 'macos-13' || matrix.platform == 'macos-latest '
93113 shell : bash
94114 run : |
95115 conan install . --output-folder build --build=missing
96116
97117 - name : Install Dependencies through Conan on Unix
98- if : matrix.platform == 'ubuntu-latest'
118+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm'
99119 shell : bash
100120 run : |
101121 sudo apt --purge remove gcc
@@ -106,7 +126,7 @@ jobs:
106126 conan install . --output-folder build --build=missing
107127
108128 - name : Build Windows
109- if : matrix.platform == 'windows-latest'
129+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
110130 shell : powershell
111131 run : |
112132 cd build
@@ -115,7 +135,7 @@ jobs:
115135 cmake --build . --config Release
116136
117137 - name : Build Unix
118- if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
138+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm' || matrix.platform == ' macos-13' || matrix.platform == 'macos-latest '
119139 run : |
120140 echo "working dir is $PWD"
121141
@@ -125,14 +145,14 @@ jobs:
125145 cmake --build . --config Release
126146
127147 - name : Test Windows
128- if : matrix.platform == 'windows-latest'
148+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
129149 run : |
130150 cd build
131151 ctest -VV
132152 ./bin/SundialsSolverStandalone_x64 || true
133153
134154 - name : Test Unix
135- if : matrix.platform == 'macos-13 ' || matrix.platform == 'macos-14 ' || matrix.platform == 'ubuntu -latest'
155+ if : matrix.platform == 'ubuntu-latest ' || matrix.platform == 'ubuntu-24.04-arm' || matrix.platform == ' macos-13 ' || matrix.platform == 'macos -latest'
136156 run : |
137157 cd build
138158
@@ -143,7 +163,7 @@ jobs:
143163
144164
145165 - name : fix Macos shared object paths
146- if : matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
166+ if : matrix.platform == 'macos-13' || matrix.platform == 'macos-latest '
147167 shell : bash
148168 run : |
149169 mkdir build/upload
@@ -158,7 +178,7 @@ jobs:
158178 tar czvf ../upload/mac64.tgz --dereference .
159179
160180 - name : handle shared object paths for Windows native build
161- if : matrix.platform == 'windows-latest'
181+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
162182 shell : bash
163183 run : |
164184 mkdir build/upload
@@ -174,7 +194,7 @@ jobs:
174194 # fi
175195
176196 - name : handle shared object paths for Linux native build
177- if : matrix.platform == 'ubuntu-latest'
197+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm'
178198 shell : bash
179199 run : |
180200 mkdir build/upload
@@ -192,28 +212,42 @@ jobs:
192212 uses : actions/upload-artifact@v4
193213 with :
194214 name : macos_x86_64.tgz
195- path : build/upload/mac64 .tgz
215+ path : build/upload/mac_x86_64 .tgz
196216
197217 - name : Upload ARM Macos binaries
198- if : matrix.platform == 'macos-14 '
218+ if : matrix.platform == 'macos-latest '
199219 uses : actions/upload-artifact@v4
200220 with :
201221 name : macos_arm64.tgz
202- path : build/upload/mac64 .tgz
222+ path : build/upload/mac_arm_64 .tgz
203223
204- - name : Upload Windows binaries
224+ - name : Upload Windows (x86_64) binaries
205225 if : matrix.platform == 'windows-latest'
206226 uses : actions/upload-artifact@v4
207227 with :
208228 name : win64.zip
209- path : build/upload/win64 .zip
229+ path : build/upload/win_x86_64 .zip
210230
211- - name : Upload Linux binaries
231+ - name : Upload Windows (ARMv8) binaries
232+ if : matrix.platform == 'windows-11-arm'
233+ uses : actions/upload-artifact@v4
234+ with :
235+ name : win64.zip
236+ path : build/upload/win_ARMv8_64.zip
237+
238+ - name : Upload Linux (x86_64) binaries
212239 if : matrix.platform == 'ubuntu-latest'
213240 uses : actions/upload-artifact@v4
214241 with :
215242 name : linux64.tgz
216- path : build/upload/linux64.tgz
243+ path : build/upload/linux_x86_64.tgz
244+
245+ - name : Upload Linux (ARMv8) binaries
246+ if : matrix.platform == 'ubuntu-24.04-arm'
247+ uses : actions/upload-artifact@v4
248+ with :
249+ name : linux64.tgz
250+ path : build/upload/linux_ARMv8_64.tgz
217251
218252 - name : Setup tmate session
219253 if : ${{ failure() }}
0 commit comments