Skip to content

Commit be94c9d

Browse files
Create llvm-x86_64-unknown-linux-gnu.yml.yml
1 parent d8ebb63 commit be94c9d

1 file changed

Lines changed: 139 additions & 0 deletions

File tree

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: llvm-x86_64-unknown-linux-gnu
2+
3+
on:
4+
push:
5+
tags:
6+
- 'llvm-x86_64-unknown-linux-gnu-v*.*.*'
7+
jobs:
8+
build-llvm:
9+
runs-on: ubuntu-latest
10+
container:
11+
image: messense/manylinux_2_28-cross:x86_64
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++ lld
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: Creating host-tools build directory
46+
run: |
47+
mkdir -p host-build
48+
49+
- name: Build host tools first
50+
run: |
51+
cmake ../llvm-project/llvm -G Ninja \
52+
-DCMAKE_BUILD_TYPE=Release \
53+
-DLLVM_ENABLE_PROJECTS="llvm" \
54+
-DLLVM_TARGETS_TO_BUILD="X86" \
55+
-DLLVM_USE_LINKER=lld \
56+
-DLLVM_BUILD_TESTS=OFF \
57+
-DLLVM_INCLUDE_TESTS=OFF \
58+
-DLLVM_INCLUDE_EXAMPLES=OFF \
59+
-DLLVM_INCLUDE_DOCS=OFF \
60+
-DCMAKE_INSTALL_PREFIX="/host-tools"
61+
62+
ninja -j$(nproc) llvm-tblgen llvm-config
63+
ninja install
64+
65+
working-directory: host-build
66+
67+
- name: Creating cross-compilation build directory
68+
run: |
69+
mkdir -p llvm-build
70+
71+
- name: Configure LLVM for cross-compilation to musl
72+
run: |
73+
cmake ../llvm-project/llvm -G Ninja \
74+
-DCMAKE_BUILD_TYPE=MinSizeRel \
75+
-DCMAKE_C_COMPILER=x86_64-unknown-linux-gnu-gcc \
76+
-DCMAKE_CXX_COMPILER=x86_64-unknown-linux-gnu-g++ \
77+
-DCMAKE_SYSROOT=/usr/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sysroot/ \
78+
-DLLVM_TABLEGEN=/host-tools/bin/llvm-tblgen \
79+
-DLLVM_CONFIG_PATH=/host-tools/bin/llvm-config \
80+
-DLLVM_ENABLE_PROJECTS="llvm;lld" \
81+
-DLLVM_ENABLE_TERMINFO=OFF \
82+
-DLLVM_ENABLE_ZLIB=ON \
83+
-DLLVM_ENABLE_LIBXML2=OFF \
84+
-DCMAKE_INSTALL_PREFIX="dist" \
85+
-DLLVM_TARGETS_TO_BUILD=all \
86+
-DLLVM_BUILD_TESTS=OFF \
87+
-DLLVM_BUILD_EXAMPLES=OFF \
88+
-DLLVM_INCLUDE_TESTS=OFF \
89+
-DLLVM_INCLUDE_EXAMPLES=OFF \
90+
-DLLVM_INCLUDE_DOCS=OFF
91+
92+
working-directory: llvm-build
93+
94+
- name: Building LLVM
95+
run: |
96+
ninja -j$(nproc)
97+
98+
working-directory: llvm-build
99+
100+
- name: Installing LLVM
101+
run: |
102+
ninja install
103+
104+
working-directory: llvm-build
105+
106+
- name: Cleaning LLVM Binaries
107+
run: |
108+
find llvm-build/dist/bin -type f -executable ! -name "llvm-config" -delete
109+
110+
- name: Preparing distribution files
111+
run: |
112+
mkdir -p tempDir/lib
113+
mkdir -p tempDir/bin
114+
mkdir -p tempDir/include
115+
116+
cp -r llvm-build/dist/lib/* tempDir/lib/
117+
cp -r llvm-build/dist/bin/* tempDir/bin/
118+
cp -r llvm-build/dist/include/* tempDir/include/
119+
120+
- name: Packaging LLVM (LLVM Libraries, Binaries & Includes)
121+
run: |
122+
tar --format=pax -cJf llvm-x86_64-unknown-linux-gnu.tar.xz --exclude='*/*.cmake' --exclude='*/*.o' --exclude='*/*.d' lib bin include
123+
124+
working-directory: tempDir
125+
126+
- name: Releasing LLVM
127+
uses: softprops/action-gh-release@v2
128+
with:
129+
tag_name: ${{ env.BUILD_ID }}
130+
name: "llvm-x86_64-unknown-linux-gnu"
131+
body: |
132+
## llvm-x86_64-unknown-linux-gnu
133+
134+
LLVM libraries for x86_64-unknown-linux-gnu for Thrush compiler compilation.
135+
136+
files: |
137+
tempDir/llvm-x86_64-unknown-linux-gnu.tar.xz
138+
139+
draft: false

0 commit comments

Comments
 (0)