diff options
author | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2022-05-26 10:02:30 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> | 2022-05-26 10:05:02 +0000 |
commit | eb7a36e5535ff9128fb2077c7a901448c281baf9 (patch) | |
tree | b28e6fa46f68606483109770285aeb8248eb9610 | |
parent | cb6c92db7166e19f5587a38b59d434115f65f723 (diff) |
tcwg_kernel-build.sh: Add extra targets to LLVM
... to support using clang as HOSTCC.
Change-Id: I9d46ea6604f2c3ac48a195de8ee20f848568a3f5
-rw-r--r-- | jenkins-helpers.sh | 2 | ||||
-rw-r--r-- | round-robin.sh | 13 | ||||
-rwxr-xr-x | tcwg_kernel-build.sh | 28 |
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 |