Skip to content

Commit db5aa21

Browse files
Create llvm-x86_64-unknown-linux-musl.yml
1 parent 268ab90 commit db5aa21

1 file changed

Lines changed: 134 additions & 0 deletions

File tree

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
name: llvm-x86_64-unknown-linux-musl
2+
3+
on:
4+
push:
5+
tags:
6+
- 'llvm-x86_64-unknown-linux-musl-v*.*.*'
7+
jobs:
8+
build-llvm:
9+
runs-on: ubuntu-latest
10+
container:
11+
image: messense/rust-musl-cross:x86_64-musl
12+
permissions:
13+
contents: write
14+
env:
15+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16+
steps:
17+
- name: Generating Unique ID
18+
run: |
19+
BASE_NAME=$(echo "$GITHUB_REF" | sed 's|^refs/tags/||')
20+
BUILD_ID="${BASE_NAME}-$GITHUB_RUN_ID"
21+
22+
echo "BUILD_ID=$BUILD_ID" >> $GITHUB_ENV
23+
echo "BASE_NAME=$BASE_NAME" >> $GITHUB_ENV
24+
25+
echo "Unique ID: $BUILD_ID"
26+
echo "Base name: $BASE_NAME"
27+
28+
- name: Installing dependencies
29+
run: |
30+
sudo apt-get update
31+
sudo apt-get install -y build-essential cmake ninja-build python3 wget libz-dev binutils xz-utils gcc g++
32+
33+
sudo apt-get remove -y llvm-16* clang-16* || true
34+
sudo rm -rf /usr/lib/llvm-16
35+
36+
- name: Downloading LLVM project
37+
run: |
38+
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/llvm-project-17.0.6.src.tar.xz
39+
40+
- name: Unpacking LLVM project
41+
run: |
42+
tar -xf llvm-project-17.0.6.src.tar.xz
43+
mv llvm-project-17.0.6.src llvm-project
44+
45+
- name: Build host tools first
46+
run: |
47+
mkdir -p host-build
48+
49+
cmake ../llvm-project/llvm -G Ninja \
50+
-DCMAKE_BUILD_TYPE=Release \
51+
-DLLVM_ENABLE_PROJECTS="llvm" \
52+
-DLLVM_TARGETS_TO_BUILD="X86" \
53+
-DLLVM_BUILD_TESTS=OFF \
54+
-DLLVM_INCLUDE_TESTS=OFF \
55+
-DLLVM_INCLUDE_EXAMPLES=OFF \
56+
-DLLVM_INCLUDE_DOCS=OFF \
57+
-DCMAKE_INSTALL_PREFIX="/host-tools"
58+
59+
ninja -j$(nproc) llvm-tblgen llvm-config
60+
ninja install
61+
62+
working-directory: host-build
63+
64+
- name: Creating cross-compilation build directory
65+
run: |
66+
mkdir -p llvm-build
67+
68+
- name: Configure LLVM for cross-compilation to musl
69+
run: |
70+
cmake ../llvm-project/llvm -G Ninja \
71+
-DCMAKE_BUILD_TYPE=MinSizeRel \
72+
-DCMAKE_C_COMPILER=x86_64-unknown-linux-musl-gcc \
73+
-DCMAKE_CXX_COMPILER=x86_64-unknown-linux-musl-g++ \
74+
-DCMAKE_SYSROOT=/usr/local/musl/x86_64-unknown-linux-musl \
75+
-DLLVM_TABLEGEN=/host-tools/bin/llvm-tblgen \
76+
-DLLVM_CONFIG_PATH=/host-tools/bin/llvm-config \
77+
-DLLVM_ENABLE_PROJECTS="llvm;lld" \
78+
-DLLVM_ENABLE_TERMINFO=OFF \
79+
-DLLVM_ENABLE_ZLIB=ON \
80+
-DLLVM_ENABLE_LIBXML2=OFF \
81+
-DCMAKE_INSTALL_PREFIX="dist" \
82+
-DLLVM_TARGETS_TO_BUILD=all \
83+
-DLLVM_BUILD_TESTS=OFF \
84+
-DLLVM_BUILD_EXAMPLES=OFF \
85+
-DLLVM_INCLUDE_TESTS=OFF \
86+
-DLLVM_INCLUDE_EXAMPLES=OFF \
87+
-DLLVM_INCLUDE_DOCS=OFF
88+
89+
working-directory: llvm-build
90+
91+
- name: Building LLVM for musl
92+
run: |
93+
ninja -j$(nproc)
94+
95+
working-directory: llvm-build
96+
97+
- name: Installing LLVM for musl
98+
run: |
99+
ninja install
100+
101+
working-directory: llvm-build
102+
103+
- name: Cleaning LLVM Binaries
104+
run: |
105+
find llvm-build/dist/bin -type f -executable ! -name "llvm-config" -delete
106+
107+
- name: Preparing distribution files
108+
run: |
109+
mkdir -p tempDir/{lib,bin,include}
110+
111+
cp -r llvm-build/dist/lib/* tempDir/lib/
112+
cp -r llvm-build/dist/bin/* tempDir/bin/
113+
cp -r llvm-build/dist/include/* tempDir/include/
114+
115+
- name: Packaging LLVM (LLVM Libraries, Binaries & Includes)
116+
run: |
117+
tar --format=pax -cJf llvm-x86_64-unknown-linux-musl.tar.xz --exclude='*/*.cmake' --exclude='*/*.o' --exclude='*/*.d' lib bin include
118+
119+
working-directory: tempDir
120+
121+
- name: Releasing LLVM
122+
uses: softprops/action-gh-release@v2
123+
with:
124+
tag_name: ${{ env.BUILD_ID }}
125+
name: "llvm-x86_64-unknown-linux-musl"
126+
body: |
127+
## llvm-x86_64-unknown-linux-musl
128+
129+
LLVM libraries for llvm-x86_64-unknown-linux-musl for Thrush compiler compilation.
130+
131+
files: |
132+
tempDir/llvm-x86_64-unknown-linux-musl.tar.xz
133+
134+
draft: false

0 commit comments

Comments
 (0)