diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-11-07 16:55:51 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2018-11-14 09:42:14 +0000 |
commit | c1566d008db7de7c8e4bde37b73174c9e999f556 (patch) | |
tree | 4e766b99a104169b64758a8ca94b7ef60f493f6c /tcwg_kernel-build.sh | |
parent | 650a1633a7325e3978b83a9b5921270e4c2b2812 (diff) |
tcwg_kernel-build.sh: Fill build_llvm* functions
... and add print_llvm_target helper.
Change-Id: I20b048d4acd942a6e4a06acb2308489f00391a9a
Diffstat (limited to 'tcwg_kernel-build.sh')
-rwxr-xr-x | tcwg_kernel-build.sh | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tcwg_kernel-build.sh b/tcwg_kernel-build.sh index 99565168..abfac6b3 100755 --- a/tcwg_kernel-build.sh +++ b/tcwg_kernel-build.sh @@ -305,12 +305,79 @@ build_abe () ) } +# Build LLVM build_llvm_1 () { + ( + set -euf -o pipefail + + clone_repo llvm + + # Copy only components from the monorepo that are required for kernel build + rsync -a --del --exclude /tools/clang ${git_dirs[llvm]}/llvm/ llvm-src/ + rsync -a --del ${git_dirs[llvm]}/clang/ llvm-src/tools/clang/ + + # Setup ccache and ninja wrappers. + rm -rf $(pwd)/bin + mkdir $(pwd)/bin + + cat > $(pwd)/bin/cc <<EOF +#!/bin/sh +exec ccache /usr/bin/gcc "\$@" +EOF + chmod +x $(pwd)/bin/cc + + cat > $(pwd)/bin/c++ <<EOF +#!/bin/sh +exec ccache /usr/bin/g++ "\$@" +EOF + chmod +x $(pwd)/bin/c++ + + if [ -f /usr/local/bin/ninja.bin ]; then + # Use ninja configuration from llvm buildbots to avoid running out of RAM. + cat > $(pwd)/bin/ninja <<EOF +#!/bin/sh +exec /usr/local/bin/ninja.bin -m 30 -M 50 -D 5000 "\$@" +EOF + chmod +x $(pwd)/bin/ninja + fi + + export PATH=$(pwd)/bin:$PATH + + # Remove stale build directories. We rely on ccache for fast rebuilds. + rm -rf llvm-build llvm-install + mkdir -p llvm-build + cd llvm-build + + cmake -G Ninja ../llvm-src -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=True -DCMAKE_INSTALL_PREFIX=../llvm-install -DLLVM_TARGETS_TO_BUILD=$(print_llvm_target $target) + ccache -z + ninja + ninja install + ccache -s + ) } +# Build LLVM build_llvm () { + ( + set -euf -o pipefail + + build_llvm_1 & + res=0; wait $! || res=$? + + # Update artifacts on success. + if [ $res = 0 ]; then + echo "Finished build_llvm" >> $top_artifacts/results + echo "-1" >> $top_artifacts/results + touch $run_step_artifacts/build-ok + fi + + if $tidy; then + rm -rf llvm-src llvm-build + git_clean llvm + fi + ) } build_linux () |