Skip to content

Commit 2bf91c8

Browse files
Attempting more ARM builds
1 parent 2df8c99 commit 2bf91c8

File tree

4 files changed

+94
-50
lines changed

4 files changed

+94
-50
lines changed

.github/workflows/cd.yml

Lines changed: 58 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,22 @@ jobs:
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: |
@@ -58,7 +59,7 @@ jobs:
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: |
@@ -68,7 +69,7 @@ jobs:
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() }}

conan-profiles/CI-CD/COPY-Linux-AMD64_profile.txt

Lines changed: 0 additions & 21 deletions
This file was deleted.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[settings]
2+
arch=armv8
3+
build_type=Release
4+
compiler=clang
5+
compiler.version=19
6+
compiler.libcxx=libc++
7+
compiler.cppstd=20
8+
compiler.runtime=dynamic
9+
os=Linux
10+
11+
[conf]
12+
tools.build:exelinkflags=['-fuse-ld=mold']
13+
tools.build:sharedlinkflags=['-fuse-ld=mold']
14+
15+
[options]
16+
fPIC=True
17+
shared=False
18+
19+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[settings]
2+
os=Windows
3+
arch=armv8
4+
compiler=clang
5+
compiler.version=16
6+
compiler.libcxx=libc++
7+
compiler.cppstd=20
8+
build_type=Release
9+
10+
[conf]
11+
tools.cmake.cmaketoolchain:generator=Ninja
12+
tools.build:compiler_executables={'c': 'clang', 'cpp': 'clang++'}
13+
tools.env.virtualenv:powershell=pwsh
14+
15+
[buildenv]
16+
CC=clang
17+
CXX=clang++

0 commit comments

Comments
 (0)