summaryrefslogtreecommitdiff
path: root/tcwg_kernel-build.sh
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-11-07 16:55:51 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-11-14 09:42:14 +0000
commitc1566d008db7de7c8e4bde37b73174c9e999f556 (patch)
tree4e766b99a104169b64758a8ca94b7ef60f493f6c /tcwg_kernel-build.sh
parent650a1633a7325e3978b83a9b5921270e4c2b2812 (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-xtcwg_kernel-build.sh67
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 ()