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
1616 steps :
1717 - name : checkout vcell-ode repo
1818 uses : actions/checkout@v4
1919
20- - name : Install Python 3.10
21- uses : actions/setup-python@v5
22- with :
23- python-version : ' 3.10'
24-
2520 - name : Install Windows Dependencies (Part 0 - Setup LLVM-style)
26- if : matrix.platform == 'windows-latest'
21+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
2722 uses : llvm/actions/setup-windows@main
2823 with :
2924 arch : amd64
3025
3126 - name : Install Windows Dependencies (Part 1 - Configure Conan ...and zip)
32- if : matrix.platform == 'windows-latest'
27+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
3328 shell : powershell
3429 run : |
3530 choco install zip -y
@@ -42,13 +37,19 @@ jobs:
4237 conan --version
4338 conan profile detect --force
4439
45- - name : Install Windows Dependencies (Part 2 - Reconfigure Conan)
40+ - name : Install Windows Dependencies (Part 2 - Reconfigure Conan) <x86_64>
4641 if : matrix.platform == 'windows-latest'
4742 shell : bash
4843 run : |
4944 cp conan-profiles/CI-CD/Windows-AMD64_profile.txt $CONAN_HOME/profiles/default
5045
51- - name : Install Intel MacOS dependencies
46+ - name : Install Windows Dependencies (Part 2 - Reconfigure Conan) <ARM>
47+ if : matrix.platform == 'windows-11-arm'
48+ shell : bash
49+ run : |
50+ cp conan-profiles/CI-CD/Windows-ARM8_profile.txt $CONAN_HOME/profiles/default
51+
52+ - name : Install MacOS dependencies <x86_64>
5253 if : matrix.platform == 'macos-13'
5354 shell : bash
5455 run : |
5859 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
5960 cp conan-profiles/CI-CD/MacOS-AMD64_profile.txt ~/.conan2/profiles/default
6061
61- - name : Install ARM MacOS dependencies
62+ - name : Install MacOS dependencies <ARM>
6263 if : matrix.platform == 'macos-14'
6364 shell : bash
6465 run : |
6869 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
6970 cp conan-profiles/CI-CD/MacOS-ARM8_profile.txt ~/.conan2/profiles/default
7071
71- - name : Install Linux Dependencies
72+ - name : Install Linux Dependencies <x86_64>
7273 if : matrix.platform == 'ubuntu-latest'
7374 run : |
7475 sudo apt update
@@ -82,20 +83,34 @@ jobs:
8283 touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
8384 cp conan-profiles/CI-CD/Linux-AMD64_profile.txt ~/.conan2/profiles/default
8485
86+ - name : Install Linux Dependencies <ARM>
87+ if : matrix.platform == 'ubuntu-24.04-arm'
88+ run : |
89+ sudo apt update
90+ sudo apt upgrade -y
91+ sudo apt install -y wget
92+ wget --version
93+ wget https://github.com/conan-io/conan/releases/download/2.17.0/conan-2.17.0-amd64.deb
94+ sudo apt install -y ./conan-*.deb
95+ conan --version
96+ mkdir -p ~/.conan2/profiles/
97+ touch ~/.conan2/profiles/default # if we don't make a file first, cp thinks its a folder that doesn't exist
98+ cp conan-profiles/CI-CD/Linux-ARM8_profile.txt ~/.conan2/profiles/default
99+
85100 - name : Install Dependencies through Conan on Windows
86- if : matrix.platform == 'windows-latest'
101+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
87102 shell : powershell
88103 run : |
89104 conan install . --output-folder build --build=missing -o include_messaging=False
90105
91106 - name : Install Dependencies through Conan on Unix
92- if : matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
107+ if : matrix.platform == 'macos-13' || matrix.platform == 'macos-latest '
93108 shell : bash
94109 run : |
95110 conan install . --output-folder build --build=missing
96111
97112 - name : Install Dependencies through Conan on Unix
98- if : matrix.platform == 'ubuntu-latest'
113+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm'
99114 shell : bash
100115 run : |
101116 sudo apt --purge remove gcc
@@ -106,7 +121,7 @@ jobs:
106121 conan install . --output-folder build --build=missing
107122
108123 - name : Build Windows
109- if : matrix.platform == 'windows-latest'
124+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
110125 shell : powershell
111126 run : |
112127 cd build
@@ -115,7 +130,7 @@ jobs:
115130 cmake --build . --config Release
116131
117132 - name : Build Unix
118- if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
133+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm' || matrix.platform == ' macos-13' || matrix.platform == 'macos-latest '
119134 run : |
120135 echo "working dir is $PWD"
121136
@@ -125,14 +140,14 @@ jobs:
125140 cmake --build . --config Release
126141
127142 - name : Test Windows
128- if : matrix.platform == 'windows-latest'
143+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
129144 run : |
130145 cd build
131146 ctest -VV
132147 ./bin/SundialsSolverStandalone_x64 || true
133148
134149 - name : Test Unix
135- if : matrix.platform == 'macos-13 ' || matrix.platform == 'macos-14 ' || matrix.platform == 'ubuntu -latest'
150+ if : matrix.platform == 'ubuntu-latest ' || matrix.platform == 'ubuntu-24.04-arm' || matrix.platform == ' macos-13 ' || matrix.platform == 'macos -latest'
136151 run : |
137152 cd build
138153
@@ -143,7 +158,7 @@ jobs:
143158
144159
145160 - name : fix Macos shared object paths
146- if : matrix.platform == 'macos-13' || matrix.platform == 'macos-14 '
161+ if : matrix.platform == 'macos-13' || matrix.platform == 'macos-latest '
147162 shell : bash
148163 run : |
149164 mkdir build/upload
@@ -158,7 +173,7 @@ jobs:
158173 tar czvf ../upload/mac64.tgz --dereference .
159174
160175 - name : handle shared object paths for Windows native build
161- if : matrix.platform == 'windows-latest'
176+ if : matrix.platform == 'windows-latest' || matrix.platform == 'windows-11-arm'
162177 shell : bash
163178 run : |
164179 mkdir build/upload
@@ -174,7 +189,7 @@ jobs:
174189 # fi
175190
176191 - name : handle shared object paths for Linux native build
177- if : matrix.platform == 'ubuntu-latest'
192+ if : matrix.platform == 'ubuntu-latest' || matrix.platform == 'ubuntu-24.04-arm'
178193 shell : bash
179194 run : |
180195 mkdir build/upload
@@ -192,28 +207,42 @@ jobs:
192207 uses : actions/upload-artifact@v4
193208 with :
194209 name : macos_x86_64.tgz
195- path : build/upload/mac64 .tgz
210+ path : build/upload/mac_x86_64 .tgz
196211
197212 - name : Upload ARM Macos binaries
198- if : matrix.platform == 'macos-14 '
213+ if : matrix.platform == 'macos-latest '
199214 uses : actions/upload-artifact@v4
200215 with :
201216 name : macos_arm64.tgz
202- path : build/upload/mac64 .tgz
217+ path : build/upload/mac_arm_64 .tgz
203218
204- - name : Upload Windows binaries
219+ - name : Upload Windows (x86_64) binaries
205220 if : matrix.platform == 'windows-latest'
206221 uses : actions/upload-artifact@v4
207222 with :
208223 name : win64.zip
209- path : build/upload/win64 .zip
224+ path : build/upload/win_x86_64 .zip
210225
211- - name : Upload Linux binaries
226+ - name : Upload Windows (ARMv8) binaries
227+ if : matrix.platform == 'windows-11-arm'
228+ uses : actions/upload-artifact@v4
229+ with :
230+ name : win64.zip
231+ path : build/upload/win_ARMv8_64.zip
232+
233+ - name : Upload Linux (x86_64) binaries
212234 if : matrix.platform == 'ubuntu-latest'
213235 uses : actions/upload-artifact@v4
214236 with :
215237 name : linux64.tgz
216- path : build/upload/linux64.tgz
238+ path : build/upload/linux_x86_64.tgz
239+
240+ - name : Upload Linux (ARMv8) binaries
241+ if : matrix.platform == 'ubuntu-24.04-arm'
242+ uses : actions/upload-artifact@v4
243+ with :
244+ name : linux64.tgz
245+ path : build/upload/linux_ARMv8_64.tgz
217246
218247 - name : Setup tmate session
219248 if : ${{ failure() }}
0 commit comments