-
Notifications
You must be signed in to change notification settings - Fork 635
70 lines (63 loc) · 2.55 KB
/
github-ci-clang.yml
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
name: LK CI (Clang)
# Brute force build a bunch of variants of LK in parallel jobs.
on: [ push, pull_request ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain-ver: [13, 14, 15]
debug: [2]
project:
# Note: Clang toolchains do not ship with a compiler-rt (libgcc) for
# all targets, so we have to restrict this build matrix to targets
# that build without requiring these functions (i.e. 64-bit targets,
# since 32-bit ones require functions such as __divdi3).
- pc-x86-64-test
- qemu-virt-arm64-test
- qemu-virt-riscv64-test
- qemu-virt-riscv64-supervisor-test
env:
PROJECT: ${{ matrix.project }}
TOOLCHAIN_VER: ${{ matrix.toolchain-ver }}
DEBUG: ${{ matrix.debug }}
UBSAN: 0 # UBSan runtimes for baremetal are not part of the toolchain
steps:
- name: banner
shell: bash
run: |
printf "Building with %d processors\n" "$(nproc)"
grep -oP '(?<=model name\t: ).*' /proc/cpuinfo|head -n1
echo PROJECT = $PROJECT
echo TOOLCHAIN_VER = $TOOLCHAIN_VER
echo DEBUG = $DEBUG
echo UBSAN = $UBSAN
- name: checkout
uses: actions/checkout@v3
# Install LLVM and set up the required environment variables
- name: compute toolchain
shell: bash
run: |
sudo apt install clang-${{ matrix.toolchain-ver }} lld-${{ matrix.toolchain-ver }}
GCC_TOOLCHAIN_PREFIX=$(make list-toolchain | grep TOOLCHAIN_PREFIX | tail -1 | cut -d ' ' -f 3)
# Map the GCC toolchain prefix to a clang --target argument:
CLANG_TRIPLE=$(echo "${GCC_TOOLCHAIN_PREFIX}" | sed 's/-elf-/-unknown-elf/g')
LLVM_BINDIR=/usr/lib/llvm-${{ matrix.toolchain-ver }}/bin
echo "CC=${LLVM_BINDIR}/clang --target=${CLANG_TRIPLE}" >> $GITHUB_ENV
echo "LD=${LLVM_BINDIR}/ld.lld" >> $GITHUB_ENV
echo "OBJDUMP=${LLVM_BINDIR}/llvm-objdump" >> $GITHUB_ENV
echo "OBJCOPY=${LLVM_BINDIR}/llvm-objcopy" >> $GITHUB_ENV
echo "CPPFILT=${LLVM_BINDIR}/llvm-cxxfilt" >> $GITHUB_ENV
echo "SIZE=${LLVM_BINDIR}/llvm-size" >> $GITHUB_ENV
echo "NM=${LLVM_BINDIR}/llvm-nm" >> $GITHUB_ENV
echo "STRIP=${LLVM_BINDIR}/llvm-strip" >> $GITHUB_ENV
echo "TOOLCHAIN_PREFIX=/invalid/prefix/should/not/be/used" >> $GITHUB_ENV
echo "LIBGCC=" >> $GITHUB_ENV
cat "$GITHUB_ENV"
# build it
- name: build
shell: bash
run: |
make -j $(nproc)
# vim: ts=2 sw=2 expandtab