Skip to content

Commit 0490ca2

Browse files
Attempting more ARM builds
1 parent 2df8c99 commit 0490ca2

File tree

4 files changed

+94
-45
lines changed

4 files changed

+94
-45
lines changed

.github/workflows/cd.yml

Lines changed: 58 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ 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

@@ -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: |
@@ -58,7 +64,7 @@ jobs:
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: |
@@ -68,7 +74,7 @@ jobs:
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() }}

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)