Skip to content

Commit c5bf324

Browse files
committed
✨ Add support for 19.1.7
Add 19.1.7 in order to have a version of llvm-toolchain that contains a prebuilt for mac x86_64.
1 parent 2721908 commit c5bf324

6 files changed

Lines changed: 252 additions & 37 deletions

File tree

.github/workflows/19.1.7.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: 🚀 19.1.7 Deploy
2+
3+
on:
4+
workflow_dispatch:
5+
workflow_call:
6+
inputs:
7+
upload:
8+
type: boolean
9+
default: true
10+
11+
jobs:
12+
deploy:
13+
uses: ./.github/workflows/deploy.yml
14+
secrets: inherit # for upload
15+
with:
16+
version: "19.1.7"
17+
upload: ${{ inputs.upload }}
18+
os: ubuntu-24.04
19+
demo_profile: linux_x86_64
20+
21+
uses: ./.github/workflows/deploy.yml
22+
with:
23+
version: "19.1.7"
24+
upload: ${{ inputs.upload }}
25+
os: ubuntu-24.04-arm
26+
demo_profile: linux_arm
27+
28+
uses: ./.github/workflows/deploy.yml
29+
with:
30+
version: "19.1.7"
31+
upload: ${{ inputs.upload }}
32+
os: macos-14
33+
demo_profile: mac_arm
34+
35+
uses: ./.github/workflows/deploy.yml
36+
with:
37+
version: "19.1.7"
38+
upload: ${{ inputs.upload }}
39+
os: macos-15
40+
demo_profile: mac_arm
41+
42+
uses: ./.github/workflows/deploy.yml
43+
with:
44+
version: "19.1.7"
45+
upload: ${{ inputs.upload }}
46+
os: windows-latest
47+
demo_profile: windows_x86_64
48+
49+
uses: ./.github/workflows/deploy.yml
50+
with:
51+
version: "19.1.7"
52+
upload: ${{ inputs.upload }}
53+
os: windows-11-arm
54+
demo_profile: windows_arm

.github/workflows/20.1.8.yml

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,44 @@ on:
1111
jobs:
1212
deploy:
1313
uses: ./.github/workflows/deploy.yml
14+
secrets: inherit # for upload
1415
with:
1516
version: "20.1.8"
1617
upload: ${{ inputs.upload }}
17-
secrets: inherit
18+
os: ubuntu-24.04
19+
demo_profile: linux_x86_64
20+
21+
uses: ./.github/workflows/deploy.yml
22+
with:
23+
version: "20.1.8"
24+
upload: ${{ inputs.upload }}
25+
os: ubuntu-24.04-arm
26+
demo_profile: linux_arm
27+
28+
uses: ./.github/workflows/deploy.yml
29+
with:
30+
version: "20.1.8"
31+
upload: ${{ inputs.upload }}
32+
os: macos-14
33+
demo_profile: mac_arm
34+
35+
uses: ./.github/workflows/deploy.yml
36+
with:
37+
version: "20.1.8"
38+
upload: ${{ inputs.upload }}
39+
os: macos-15
40+
demo_profile: mac_arm
41+
42+
uses: ./.github/workflows/deploy.yml
43+
with:
44+
version: "20.1.8"
45+
upload: ${{ inputs.upload }}
46+
os: windows-latest
47+
demo_profile: windows_x86_64
48+
49+
uses: ./.github/workflows/deploy.yml
50+
with:
51+
version: "20.1.8"
52+
upload: ${{ inputs.upload }}
53+
os: windows-11-arm
54+
demo_profile: windows_arm

.github/workflows/ci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,8 @@ jobs:
1313
with:
1414
upload: false
1515
secrets: inherit
16+
ci_19_1_7:
17+
uses: ./.github/workflows/19.1.7.yml
18+
with:
19+
upload: false
20+
secrets: inherit

.github/workflows/deploy.yml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,19 @@ on:
99
upload:
1010
type: boolean
1111
required: true
12+
os:
13+
type: string
14+
required: true
15+
demo_profile:
16+
type: string
17+
required: true
1218

1319
jobs:
1420
deploy:
1521
strategy:
1622
fail-fast: false
17-
matrix:
18-
include:
19-
- os: macos-15
20-
demo_profile: mac_arm
21-
22-
- os: macos-14
23-
demo_profile: mac_arm
24-
25-
- os: ubuntu-24.04-arm
26-
demo_profile: linux_arm
27-
28-
- os: ubuntu-24.04
29-
demo_profile: linux_x86_64
30-
31-
- os: windows-latest
32-
demo_profile: windows_x86_64
33-
34-
- os: windows-11-arm
35-
demo_profile: windows_arm
3623

37-
runs-on: ${{ matrix.os }}
24+
runs-on: ${{ input.os }}
3825
steps:
3926
- uses: actions/checkout@v2
4027
with:
@@ -67,12 +54,12 @@ jobs:
6754
- name: 📦 Build Demos Conan Package
6855
if: ${{ runner.os != 'Windows' }}
6956
working-directory: demo
70-
run: VERBOSE=1 conan build . -pr clang-${{ inputs.version }} -pr ${{ matrix.demo_profile }} --build=cmake --build=missing:cmake/* -c tools.build:skip_test=True
57+
run: VERBOSE=1 conan build . -pr clang-${{ inputs.version }} -pr ${{ input.demo_profile }} --build=cmake --build=missing:cmake/* -c tools.build:skip_test=True
7158

7259
- name: 📦 Build Demos Conan Package
7360
if: ${{ runner.os == 'Windows' }}
7461
working-directory: demo
75-
run: conan build . -pr clang-${{ inputs.version }} -pr ${{ matrix.demo_profile }} --build=cmake --build=missing:cmake/* -c tools.build:skip_test=True
62+
run: conan build . -pr clang-${{ inputs.version }} -pr ${{ input.demo_profile }} --build=cmake --build=missing:cmake/* -c tools.build:skip_test=True
7663

7764
- name: ▶️ Run Demo
7865
run: demo/build/Release/demo
@@ -85,6 +72,6 @@ jobs:
8572
run: conan remote login -p $PASSWORD libhal $JFROG_USER
8673

8774
# - name: 🆙 Upload package to Conan Package Repo
88-
# if: ${{ github.ref == 'refs/heads/main' && matrix.os == 'ubuntu-22.04' && inputs.upload == true }}
75+
# if: ${{ github.ref == 'refs/heads/main' && input.os == 'ubuntu-22.04' && inputs.upload == true }}
8976
# run: |
9077
# conan upload "llvm-toolchain/*" --only-recipe --confirm -r=libhal

README.md

Lines changed: 126 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,26 @@ the LLVM toolchain for modern C++ development.
1414
- **Integrated tooling**: Includes clang-tidy, clang-format, and other
1515
development tools
1616

17-
## 📋 Supported Versions
17+
## 📋 Supported Versions & Host Platforms
1818

19-
- **LLVM 20.1.8**
20-
21-
## 💻 Supported Host Platforms
19+
All binaries are downloaded from the official
20+
[LLVM GitHub Releases](https://github.com/llvm/llvm-project/releases).
2221

23-
This toolchain package supports the following host platforms:
22+
### LLVM 20.1.8
2423

25-
- **Linux** (x86_64, ARM64)
26-
- **macOS** (Apple Silicon / ARM64)
27-
- **Windows** (x86_64, ARM64)
24+
| Platform | x86_64 | ARM64 |
25+
| -------- | ------ | ----- |
26+
| Linux |||
27+
| macOS |||
28+
| Windows |||
2829

29-
> [!NOTE]
30-
> macOS Intel (x86_64) is not currently supported as LLVM does not provide
31-
> official pre-built binaries for this platform.
30+
### LLVM 19.1.7
3231

33-
All binaries are downloaded from the official
34-
[LLVM GitHub Releases](https://github.com/llvm/llvm-project/releases).
32+
| Platform | x86_64 | ARM64 |
33+
| -------- | ------ | ----- |
34+
| Linux |||
35+
| macOS |||
36+
| Windows |||
3537

3638
## 🚀 Quick Start
3739

@@ -206,3 +208,114 @@ support:
206208
>
207209
> - `f` indicates single precision (32-bit) hard float
208210
> - `d` indicates double precision (64-bit) hard float
211+
212+
## 🤝 Contributing
213+
214+
### Adding a New LLVM Version
215+
216+
To add support for a new LLVM version to this package, follow these steps:
217+
218+
#### 1. Download Official Binaries
219+
220+
Download the official LLVM prebuilt binaries from the [LLVM GitHub Releases](https://github.com/llvm/llvm-project/releases) page. Look for the release tagged as `llvmorg-X.X.X` and download the appropriate archives for each supported platform:
221+
222+
- **Linux x86_64**: `LLVM-X.X.X-Linux-X64.tar.xz` or `clang+llvm-X.X.X-x86_64-linux-gnu-*.tar.xz`
223+
- **Linux ARM64**: `LLVM-X.X.X-Linux-ARM64.tar.xz` or `clang+llvm-X.X.X-aarch64-linux-gnu.tar.xz`
224+
- **macOS x86_64**: `LLVM-X.X.X-macOS-X64.tar.xz` (if available)
225+
- **macOS ARM64**: `LLVM-X.X.X-macOS-ARM64.tar.xz`
226+
- **Windows x86_64**: `clang+llvm-X.X.X-x86_64-pc-windows-msvc.tar.xz`
227+
- **Windows ARM64**: `clang+llvm-X.X.X-aarch64-pc-windows-msvc.tar.xz` (if available)
228+
229+
> [!NOTE]
230+
> Not all platforms may be available for every LLVM version. Only download what's officially provided.
231+
232+
#### 2. Calculate SHA256 Checksums
233+
234+
Calculate the SHA256 checksums for all downloaded archives:
235+
236+
```bash
237+
cd /path/to/downloaded/archives
238+
shasum -a 256 *.tar.xz
239+
```
240+
241+
Save these checksums - you'll need them for the next step.
242+
243+
#### 3. Update `conandata.yml`
244+
245+
Add a new version entry to [`all/conandata.yml`](all/conandata.yml) with the URLs and SHA256 checksums:
246+
247+
```yaml
248+
sources:
249+
"X.X.X":
250+
"Linux":
251+
"x86_64":
252+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-X.X.X/LLVM-X.X.X-Linux-X64.tar.xz"
253+
sha256: "<checksum>"
254+
"armv8":
255+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-X.X.X/clang+llvm-X.X.X-aarch64-linux-gnu.tar.xz"
256+
sha256: "<checksum>"
257+
"Macos":
258+
"armv8":
259+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-X.X.X/LLVM-X.X.X-macOS-ARM64.tar.xz"
260+
sha256: "<checksum>"
261+
"Windows":
262+
"x86_64":
263+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-X.X.X/clang+llvm-X.X.X-x86_64-pc-windows-msvc.tar.xz"
264+
sha256: "<checksum>"
265+
```
266+
267+
Only include platforms that have official prebuilt binaries available.
268+
269+
#### 4. Update README.md
270+
271+
Add the new version to the [Supported Versions & Host Platforms](#-supported-versions--host-platforms) section in this README:
272+
273+
```markdown
274+
### LLVM X.X.X
275+
276+
| Platform | x86_64 | ARM64 |
277+
| -------- | ------ | ----- |
278+
| Linux | ✅ | ✅ |
279+
| macOS | ❌ | ✅ |
280+
| Windows | ✅ | ✅ |
281+
```
282+
283+
Use ✅ for supported platforms and ❌ for unsupported ones.
284+
285+
#### 5. Test the Package
286+
287+
Build and test the package locally:
288+
289+
```bash
290+
conan create all --version X.X.X
291+
```
292+
293+
This downloads the binaries, verifies checksums, and creates the package.
294+
295+
#### 6. Build and Run the Demo
296+
297+
Install the toolchain profiles and build the demo application:
298+
299+
```bash
300+
# Install toolchain profiles
301+
conan config install -tf profiles/ -sf conan/profiles/v1/ .
302+
303+
# Build the demo (use the version you're adding)
304+
conan build demo -pr clang-X.X.X -pr linux-x86_64 \
305+
--build=missing -c tools.build:skip_test=True
306+
307+
# Run the demo to verify it works
308+
./demo/build/Release/demo
309+
```
310+
311+
> [!NOTE]
312+
> Replace `linux-x86_64` with your platform's profile. Available
313+
> profiles are in the `conan/profiles/v1/` directory.
314+
315+
#### 7. Submit a Pull Request
316+
317+
Once you've verified everything works:
318+
319+
1. Commit your changes to `all/conandata.yml` and `README.md`
320+
2. Submit a pull request with a clear description of the version being added
321+
3. Include any platform-specific notes or limitations

all/conandata.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,23 @@
11
sources:
2+
"19.1.7":
3+
"Linux":
4+
"x86_64":
5+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.7/LLVM-19.1.7-Linux-X64.tar.xz"
6+
sha256: "4a5ec53951a584ed36f80240f6fbf8fdd46b4cf6c7ee87cc2d5018dc37caf679"
7+
"armv8":
8+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.7/clang+llvm-19.1.7-aarch64-linux-gnu.tar.xz"
9+
sha256: "a73d9326e5d756e3937df6a9f621664d76403b59119f741901106b387e53a6ae"
10+
"Macos":
11+
"x86_64":
12+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.7/LLVM-19.1.7-macOS-X64.tar.xz"
13+
sha256: "49405e75fbe7ad6f8139a33f59ec8c5112b75b3027405c7b92d19f4c6f02c78a"
14+
"armv8":
15+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.7/LLVM-19.1.7-macOS-ARM64.tar.xz"
16+
sha256: "d93bf12952d89fe4ec7501c40475718b722407da6a8d651f05c995863468e570"
17+
"Windows":
18+
"x86_64":
19+
url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.7/clang+llvm-19.1.7-x86_64-pc-windows-msvc.tar.xz"
20+
sha256: "b4557b4f012161f56a2f5d9e877ab9635cafd7a08f7affe14829bd60c9d357f0"
221
"20.1.8":
322
"Linux":
423
"x86_64":

0 commit comments

Comments
 (0)