summaryrefslogtreecommitdiff
path: root/tcwg_kernel-build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tcwg_kernel-build.sh')
-rwxr-xr-xtcwg_kernel-build.sh28
1 files changed, 26 insertions, 2 deletions
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