summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2022-05-26 10:02:30 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2022-05-26 10:05:02 +0000
commiteb7a36e5535ff9128fb2077c7a901448c281baf9 (patch)
treeb28e6fa46f68606483109770285aeb8248eb9610
parentcb6c92db7166e19f5587a38b59d434115f65f723 (diff)
tcwg_kernel-build.sh: Add extra targets to LLVM
... to support using clang as HOSTCC. Change-Id: I9d46ea6604f2c3ac48a195de8ee20f848568a3f5
-rw-r--r--jenkins-helpers.sh2
-rw-r--r--round-robin.sh13
-rwxr-xr-xtcwg_kernel-build.sh28
3 files changed, 38 insertions, 5 deletions
diff --git a/jenkins-helpers.sh b/jenkins-helpers.sh
index 8cf1a213..1c09424d 100644
--- a/jenkins-helpers.sh
+++ b/jenkins-helpers.sh
@@ -1117,7 +1117,7 @@ print_llvm_target ()
target=$(uname -m)
fi
case "$target" in
- "aarch64") target="AArch64;ARM" ;;
+ "aarch64") target="AArch64" ;;
"arm"*) target="ARM" ;;
"x86_64") target="X86" ;;
*) echo "ERROR: Unknown target $target" >&2; exit 1 ;;
diff --git a/round-robin.sh b/round-robin.sh
index bc97ce5e..68ceaef7 100644
--- a/round-robin.sh
+++ b/round-robin.sh
@@ -473,7 +473,8 @@ build_llvm ()
(
set -euf -o pipefail
- local use_abe=${1-false}
+ local use_abe="${1-false}"
+ local extra_targets="${2-}"
clone_repo llvm
@@ -522,11 +523,19 @@ EOF
rm -rf llvm-install
binutils_incdir=/usr/include
fi
+
+ local llvm_targets
+ llvm_targets="$(print_llvm_target ${rr[target]})${extra_targets}"
+
rm -rf llvm-build
mkdir -p llvm-build
cd llvm-build
- cmake -G Ninja ../llvm/llvm "-DLLVM_ENABLE_PROJECTS=clang;lld" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=True -DCMAKE_INSTALL_PREFIX=../llvm-install "-DLLVM_TARGETS_TO_BUILD=$(print_llvm_target ${rr[target]})" -DLLVM_BINUTILS_INCDIR=$binutils_incdir
+ cmake -G Ninja ../llvm/llvm "-DLLVM_ENABLE_PROJECTS=clang;lld" \
+ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=True \
+ -DCMAKE_INSTALL_PREFIX=../llvm-install \
+ "-DLLVM_TARGETS_TO_BUILD=$llvm_targets" \
+ -DLLVM_BINUTILS_INCDIR=$binutils_incdir
ccache -z
ninja
ninja install
diff --git a/tcwg_kernel-build.sh b/tcwg_kernel-build.sh
index 94ff42a1..c8c7ac47 100755
--- a/tcwg_kernel-build.sh
+++ b/tcwg_kernel-build.sh
@@ -65,7 +65,7 @@ case "${rr[mode]}" in
case "$(print_single_updated_component)" in
binutils) default_start_at="build_abe-binutils" ;;
gcc) default_start_at="build_abe-stage1" ;;
- llvm) default_start_at="build_llvm" ;;
+ llvm) default_start_at="build_kernel_llvm" ;;
linux) default_start_at="build_linux" ;;
qemu) default_start_at="build_abe-qemu" ;;
*) assert false ;;
@@ -83,6 +83,30 @@ fi
run_step_init "$start_at" "$finish_at" "${rr[top_artifacts]}" "$verbose"
+# Build LLVM for building Linux kernel
+build_kernel_llvm ()
+{
+ (
+ set -euf -o pipefail
+
+ local host target extra_targets=""
+
+ host=$(print_llvm_target native)
+ target=$(print_llvm_target ${rr[target]})
+
+ if [ x"$target" != x"$host" ]; then
+ # We need $host target for HOSTCC
+ extra_targets="$extra_targets;$host"
+ fi
+ if [ x"$target" = x"AArch64" ]; then
+ # We need 32-bit ARM target to compile vdso32
+ extra_targets="$extra_targets;ARM"
+ fi
+
+ build_llvm false "$extra_targets"
+ )
+}
+
# Build Linux kernel
build_linux_1 ()
{
@@ -296,7 +320,7 @@ case "${rr[toolchain]}" in
run_step skip_on_fail -5 build_abe stage1
;;
llvm)
- run_step skip_on_fail -5 build_llvm
+ run_step skip_on_fail -5 build_kernel_llvm
;;
esac
run_step skip_on_fail -2 build_abe qemu