Skip to content

Commit c755c52

Browse files
committed
Add experimental CI for release builds
1 parent 6d15cd0 commit c755c52

3 files changed

Lines changed: 108 additions & 0 deletions

File tree

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Build Release
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
build-linux:
8+
runs-on: ${{ matrix.runner }}
9+
container:
10+
image: rockylinux:8
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
arch: [x64, arm64]
15+
include:
16+
- arch: x64
17+
runner: ubuntu-24.04
18+
- arch: arm64
19+
runner: ubuntu-24.04-arm
20+
21+
steps:
22+
- name: Checkout
23+
uses: action/checkout@v6
24+
25+
- name: Install build tools
26+
run: |
27+
dnf install -y epel-release
28+
dnf install -y --enablerepo powertools \
29+
gcc-toolset-14 cmake ninja-build python3
30+
31+
- name: Download LLVM
32+
run: |
33+
ci/download_llvm.sh 22.1.8
34+
35+
- name: Build libclang
36+
run: |
37+
source /opt/rh/gcc-toolset-14/enable
38+
ci/build_llvm.sh
39+
40+
- name: Build
41+
run: |
42+
source /opt/rh/gcc-toolset-14/enable
43+
cmake -B build -G Ninja \
44+
-D Clang_DIR=llvm-out/lib/cmake/clang \
45+
-D CMAKE_BUILD_TYPE=Release
46+
cmake --build build --parallel $(nproc)
47+
48+
- name: Verify build
49+
run: |
50+
ldd build/mrbind*
51+
build/mrbind --help

ci/build_llvm.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/bash
2+
set -e
3+
4+
SRC_DIR=${1:-llvm-src/llvm}
5+
BUILD_DIR=llvm-build
6+
OUT_DIR=llvm-out
7+
8+
cmake -G Ninja -S "$SRC_DIR" -B "$BUILD_DIR" \
9+
-DCMAKE_BUILD_TYPE=Release \
10+
-DCMAKE_INSTALL_PREFIX="$OUT_DIR" \
11+
-DCMAKE_INSTALL_LIBDIR=lib \
12+
-DLLVM_ENABLE_PROJECTS=clang \
13+
-DLLVM_TARGETS_TO_BUILD="" \
14+
-DBUILD_SHARED_LIBS=OFF \
15+
-DLLVM_BUILD_LLVM_DYLIB=OFF \
16+
-DLLVM_LINK_LLVM_DYLIB=OFF \
17+
-DLLVM_ENABLE_PIC=ON \
18+
-DLLVM_ENABLE_RTTI=OFF \
19+
-DLLVM_ENABLE_EH=OFF \
20+
-DLLVM_ENABLE_ASSERTIONS=OFF \
21+
-DLLVM_ENABLE_ZLIB=OFF \
22+
-DLLVM_ENABLE_ZSTD=OFF \
23+
-DLLVM_ENABLE_TERMINFO=OFF \
24+
-DLLVM_ENABLE_LIBXML2=OFF \
25+
-DLLVM_ENABLE_LIBEDIT=OFF \
26+
-DLLVM_ENABLE_LIBPFM=OFF \
27+
-DLLVM_ENABLE_CURL=OFF \
28+
-DLLVM_ENABLE_HTTPLIB=OFF \
29+
-DLLVM_INCLUDE_TESTS=OFF \
30+
-DLLVM_INCLUDE_EXAMPLES=OFF \
31+
-DLLVM_INCLUDE_BENCHMARKS=OFF \
32+
-DLLVM_INCLUDE_DOCS=OFF \
33+
-DCLANG_INCLUDE_TESTS=OFF \
34+
-DCLANG_INCLUDE_DOCS=OFF \
35+
-DCLANG_ENABLE_ARCMT=OFF \
36+
-DCLANG_ENABLE_STATIC_ANALYZER=OFF \
37+
"-DCMAKE_C_FLAGS=-ffunction-sections -fdata-sections" \
38+
"-DCMAKE_CXX_FLAGS=-ffunction-sections -fdata-sections"
39+
ninja -C "$BUILD_DIR" -j$(nproc) clangTooling
40+
41+
COMPONENTS="llvm-headers;clang-headers;clang-resource-headers;cmake-exports;clang-cmake-exports"
42+
for LIB in "$BUILD_DIR"/lib/lib*.a ; do
43+
LIBNAME="$(basename "$LIB" .a)"
44+
COMPONENTS="$COMPONENTS;${LIBNAME#lib}"
45+
done
46+
cmake -S "$SRC_DIR" -B "$BUILD_DIR" -DLLVM_DISTRIBUTION_COMPONENTS="$COMPONENTS"
47+
ninja -C "$BUILD_DIR" -j$(nproc) install-distribution

ci/download_llvm.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
set -eo pipefail
3+
4+
LLVM_VERSION="${1:-22.1.0}"
5+
LLVM_URL="https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-project-${LLVM_VERSION}.src.tar.xz"
6+
7+
OUT_DIR="${2:-llvm-src}"
8+
9+
mkdir -p "$OUT_DIR"
10+
curl -fL "$LLVM_URL" | tar -xJ --strip-components=1 -C "$OUT_DIR"

0 commit comments

Comments
 (0)