-
Notifications
You must be signed in to change notification settings - Fork 0
116 lines (93 loc) · 3.46 KB
/
llvm-c-api-linux.yml
File metadata and controls
116 lines (93 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
name: LLVM-C API (Linux)
on:
push:
tags:
- 'LLVM-C-API-LINUX-v*.*.*'
jobs:
build-llvm:
runs-on: ubuntu-latest
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Generating Unique ID
run: |
BASE_NAME=$(echo "$GITHUB_REF" | sed 's|^refs/tags/||')
BUILD_ID="${BASE_NAME}-$GITHUB_RUN_ID"
echo "BUILD_ID=$BUILD_ID" >> $GITHUB_ENV
echo "BUILD_ID=$TAG_NAME" >> $GITHUB_ENV
echo "Unique ID: $BUILD_ID"
echo "Base name: $TAG_NAME"
- name: Downloading LLVM project
run: |
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-17.0.6/llvm-project-17.0.6.src.tar.xz
- name: Unpacking LLVM project
run: |
tar -xf llvm-project-17.0.6.src.tar.xz
mv llvm-project-17.0.6.src llvm-project
- name: Installing dependencies
run: |
sudo apt-get install -y build-essential cmake ninja-build python3 libz-dev binutils xz-utils
sudo apt-get remove -y llvm-16* clang-16*
sudo rm -rf /usr/lib/llvm-16
- name: Preparing for build (LLVM-C API)
run: |
mkdir build
mkdir dist
cd build
working-directory: llvm-project/llvm
- name: Configuring CMake (LLVM C API)
run: |
cmake ../CMakeLists.txt \
-G Ninja \
-DCMAKE_C_COMPILER="gcc" \
-DCMAKE_CXX_COMPILER="g++" \
-DLLD_INCLUDE_TOOLS=ON \
-DLLVM_ENABLE_PROJECTS="llvm;lld" \
-DLLVM_ENABLE_TERMINFO=OFF
-DLLVM_ENABLE_ZLIB=OFF \
-DCMAKE_DISABLE_FIND_PACKAGE_LibXml2=TRUE \
-DLLVM_ENABLE_LIBXML2=0 \
-DCMAKE_INSTALL_PREFIX="../dist" \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DLLVM_TARGETS_TO_BUILD=all \
-DLLVM_BUILD_TESTS=OFF \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_DOCS=OFF
working-directory: llvm-project/llvm/build
- name: Building LLVM C API
run: |
ninja -j$(nproc)
working-directory: llvm-project/llvm/build
- name: Installing LLVM C API
run: |
ninja install
working-directory: llvm-project/llvm/build
- name: Cleaning LLVM Binaries
run: |
find llvm-project/llvm/build/bin -type f -executable ! -name "llvm-config" -delete
- name: Cloning LLVM C API
shell: bash
run: |
mkdir -p tempDir/{lib,bin,include}
cp -r llvm-project/llvm/build/lib/* tempDir/lib/
cp -r llvm-project/llvm/build/bin/* tempDir/bin/
cp -r llvm-project/llvm/dist/include/* tempDir/include/
- name: Packaging LLVM C API (LLVM C API Libraries, Binaries & Includes)
run: |
tar --format=pax -cJf llvm-c-api-x64-linux.tar.xz --exclude='*/*.cmake' --exclude='*/*.o' --exclude='*/*.d' lib bin include
working-directory: tempDir
- name: Releasing LLVM C API
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.BUILD_ID }}
name: "LLVM C API (Linux)"
body: |
## LLVM C API
LLVM C API (v17.0.6) libraries for Linux x64 environments.
files: |
tempDir/llvm-c-api-x64-linux.tar.xz
draft: false