99jobs :
1010 build_linux_x64 :
1111 runs-on : ubuntu-latest
12- container :
13- image : nvidia/cuda:12.3.0-devel-ubuntu22.04
1412 steps :
1513 - name : Install dependencies
16- run : apt update && apt install -yqq python3 git ninja-build cmake zstd
14+ run : sudo apt update && sudo apt install -yqq python3 git ninja-build cmake zstd
15+ - name : Install ARM toolchain
16+ run : sudo apt install -yqq gcc-arm-linux-gnueabi g++-arm-linux-gnueabi binutils-arm-linux-gnueabi
17+ - name : Install AArch64 toolchain
18+ run : sudo apt install -yqq gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
19+ - name : Install RISC-V toolchain
20+ run : sudo apt install -yqq gcc-riscv64-linux-gnu g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
1721 - name : Checkout code
1822 uses : actions/checkout@v4
1923 with :
@@ -24,44 +28,55 @@ jobs:
2428 CXXFLAGS : -w
2529 CFLAGS : -w
2630 run : |
31+ export RT_TARGETS="x86_64-unknown-linux-gnu;aarch64-unknown-linux-gnu;riscv64-unknown-linux-gnu"
32+ export TOOLS="dsymutil;llvm-ar;llvm-cxxfilt;llvm-cov;llvm-dwarfdump;llvm-nm;llvm-objdump;llvm-objcopy;llvm-profdata;llvm-ranlib;llvm-readobj;llvm-strip;llvm-size;llvm-symbolizer"
33+ export COMPONENTS="clang;clang-format;clang-tidy;clang-resource-headers;bolt;runtimes;lld"
34+
35+ # FIXME: enable bolt once more powerful runners are available
36+ # -DCLANG_BOLT_INSTRUMENT=ON -DCMAKE_EXE_LINKER_FLAGS="-Wl,--emit-relocs,-znow"
37+
2738 mkdir build && cd build
2839 cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
29- -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_LTO=OFF -DLLVM_ENABLE_RUNTIMES=all \
30- -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;lld;openmp;pstl" \
40+ -DLLVM_ENABLE_LLD=OFF \
41+ -DLLVM_TARGETS_TO_BUILD="X86;AArch64;NVPTX;AMDGPU;RISCV" \
42+ -DLLVM_RUNTIME_TARGETS="$RT_TARGETS" \
43+ -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
44+ -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_ENABLE_ZSTD=OFF \
45+ -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_LTO=OFF \
46+ -DLLVM_ENABLE_RUNTIMES="libunwind;compiler-rt;libcxx;libcxxabi;openmp" \
47+ -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;lld;pstl" \
3148 -DLLVM_STATIC_LINK_CXX_STDLIB=ON -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \
3249 -DCMAKE_INSTALL_PREFIX=$PWD/install/${{ inputs.llvm_tag }}-linux-x86_64 \
50+ -DLIBCXX_HERMETIC_STATIC_LIBRARY=ON \
51+ -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
52+ -DRUNTIMES_x86_64-unknown-linux-gnu_OPENMP_LIBDIR_SUFFIX="/x86_64-unknown-linux-gnu" -DRUNTIMES_x86_64-unknown-linux-gnu_OPENMP_STANDALONE_BUILD=ON \
53+ -DRUNTIMES_aarch64-unknown-linux-gnu_OPENMP_LIBDIR_SUFFIX="/aarch64-unknown-linux-gnu" -DRUNTIMES_aarch64-unknown-linux-gnu_OPENMP_STANDALONE_BUILD=ON \
54+ -DRUNTIMES_riscv64-unknown-linux-gnu_OPENMP_LIBDIR_SUFFIX="/riscv64-unknown-linux-gnu" -DRUNTIMES_riscv64-unknown-linux-gnu_OPENMP_STANDALONE_BUILD=ON \
55+ -DRUNTIMES_x86_64-unknown-linux-gnu_OPENMP_LLVM_TOOLS_DIR="$PWD/bin" \
56+ -DRUNTIMES_aarch64-unknown-linux-gnu_OPENMP_LLVM_TOOLS_DIR="$PWD/bin" \
57+ -DRUNTIMES_aarch64-unknown-linux-gnu_OPENMP_ENABLE_LIBOMPTARGET=OFF \
58+ -DRUNTIMES_aarch64-unknown-linux-gnu_LIBOMP_OMPD_GDB_SUPPORT=OFF \
59+ -DRUNTIMES_riscv64-unknown-linux-gnu_OPENMP_LLVM_TOOLS_DIR="$PWD/bin" \
60+ -DRUNTIMES_riscv64-unknown-linux-gnu_LIBOMP_OMPD_GDB_SUPPORT=OFF \
61+ -DRUNTIMES_riscv64-unknown-linux-gnu_OPENMP_ENABLE_LIBOMPTARGET=OFF \
62+ -DLLVM_TOOLCHAIN_TOOLS="$TOOLS" -DLLVM_DISTRIBUTION_COMPONENTS="$COMPONENTS;$TOOLS" \
3363 ../llvm
3464
35- ninja install
65+ # FIXME: this requires too much RAM
66+ # ninja clang-bolt
67+ ninja install-distribution-stripped
68+ ninja llvm-dwp
69+ ninja install-pstl
70+ cp ./bin/llvm-dwp ./install/${{inputs.llvm_tag}}-linux-x86_64/bin
3671
3772 cd install
38- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clangd
39- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clang-query
40- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clang-refactor
41- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clang-rename
42- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clang-change-namespace
43- rm ${{ inputs.llvm_tag }}-linux-x86_64/bin/clang-check
44-
45- for file in ${{ inputs.llvm_tag }}-linux-x86_64/bin/*; do
46- if [ -f "$file" ]; then
47- echo "Strip $file"
48- strip $file || echo "Failed to strip"
49- fi
50- done
51-
52- for file in ${{ inputs.llvm_tag }}-linux-x86_64/lib/*; do
53- if [ -f "$file" ]; then
54- echo "Strip $file"
55- strip $file || echo "Failed to strip"
56- fi
57- done
5873
5974 tar --zstd -cf ${{ inputs.llvm_tag }}-linux-x86_64.tar.zst ${{ inputs.llvm_tag }}-linux-x86_64
6075 - name : Upload artifact
6176 uses : actions/upload-artifact@v3
6277 with :
6378 path : build/install/${{ inputs.llvm_tag }}-linux-x86_64.tar.zst
64- name : linux_x86_64_toolchain
79+ name : linux-x86_64-toolchain
6580
6681 publish_release :
6782 needs : ["build_linux_x64"]
7792 name : LLVM Toolchain ${{ inputs.llvm_tag }}
7893 prerelease : true
7994 files : |
80- ${{ inputs.llvm_tag }}-linux-x86_64.tar.zst
95+ linux-x86_64-toolchain/ ${{ inputs.llvm_tag }}-linux-x86_64.tar.zst
8196
8297
0 commit comments