Skip to content

Commit

Permalink
kbuild: wrap setup_llvm_ias function
Browse files Browse the repository at this point in the history
Signed-off-by: Yujie Liu <yujie.liu@intel.com>
Signed-off-by: Philip Li <philip.li@intel.com>
  • Loading branch information
Yujie-Liu authored and rli9 committed Dec 20, 2023
1 parent 262bb3b commit 11e8d94
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
19 changes: 19 additions & 0 deletions kbuild/kbuild.sh
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,25 @@ is_llvm_equal_one_supported()
return 0
}

setup_llvm_ias()
{
local opt_cc=$1

if [[ $ARCH =~ "powerpc" ]]; then
# f12b034afeb3 ("scripts/Makefile.clang: default to LLVM_IAS=1")
# above commit is merged by v5.15-rc1, and will enable clang integrated assembler by default
# it will raise below errors:
# clang-14: error: unsupported argument '-mpower4' to option 'Wa,'
# clang-14: error: unsupported argument '-many' to option 'Wa,'
# explicitly set LLVM_IAS=0 to disable integrated assembler and switch back to gcc assembler
[[ $kernel_version_major -eq 5 && $kernel_version_minor -gt 14 && $kernel_version_minor -lt 18 ]] && echo "LLVM_IAS=0"
elif [[ $ARCH =~ "hexagon" ]]; then
[[ $kernel_version_major -lt 5 || ($kernel_version_major -eq 5 && $kernel_version_minor -lt 15) ]] && echo "LLVM_IAS=1"
elif [[ $ARCH =~ arm ]]; then
[[ $kernel_version_major -lt 5 || ($kernel_version_major -eq 5 && $kernel_version_minor -lt 15) ]] && [[ $opt_cc = "LLVM=1" ]] && echo "LLVM_IAS=1"
fi
}

get_config_value()
{
local config=$1
Expand Down
6 changes: 2 additions & 4 deletions kbuild/make.cross
Original file line number Diff line number Diff line change
Expand Up @@ -326,10 +326,8 @@ setup_crosstool_clang()
local opt_default_cross="HOSTCC=$cross_clang CC=$cross_clang $opt_ldd $opt_objcopy \
AR=llvm-ar NM=llvm-nm STRIP=llvm-strip OBJDUMP=llvm-objdump OBJSIZE=llvm-size READELF=llvm-readelf HOSTCXX=clang++ HOSTAR=llvm-ar"

local opt_llvm_ias=
if is_llvm_equal_one_supported; then
opt_cross="LLVM=1"
[[ $kernel_version_major -lt 5 || ($kernel_version_major -eq 5 && $kernel_version_minor -lt 15) ]] && opt_llvm_ias="LLVM_IAS=1"
else
opt_cross=$opt_default_cross
fi
Expand All @@ -343,7 +341,6 @@ setup_crosstool_clang()
opt_cross="$opt_default_cross CROSS_COMPILE=s390x-linux-gnu-"
elif [[ $ARCH = "hexagon" ]]; then
opt_cross="$opt_cross CROSS_COMPILE=hexagon-linux-"
opt_llvm_ias="LLVM_IAS=1"
elif [[ $ARCH = "powerpc" ]]; then
local cross_compile='powerpc-linux-gnu-'
is_config_enabled 'CONFIG_PPC64' && {
Expand All @@ -354,7 +351,6 @@ setup_crosstool_clang()
fi
}
opt_cross="$opt_cross CROSS_COMPILE=$cross_compile"
[[ $kernel_version_major -eq 5 && $kernel_version_minor -gt 14 && $kernel_version_minor -lt 18 ]] && opt_llvm_ias="LLVM_IAS=0"
elif [[ $ARCH = "riscv" ]]; then
if is_config_enabled 'CONFIG_32BIT'; then
opt_cross="$opt_cross $(COMPILER=gcc && setup_crosstool_gcc && echo $opt_cross)"
Expand All @@ -364,6 +360,8 @@ setup_crosstool_clang()
else
opt_cross="$opt_cross CROSS_COMPILE=$ARCH-linux-gnu-"
fi

local opt_llvm_ias=$(setup_llvm_ias "$opt_cross")
[[ $opt_llvm_ias ]] && opt_cross="$opt_cross $opt_llvm_ias"

setup_kcflags "$cross_clang"
Expand Down

0 comments on commit 11e8d94

Please sign in to comment.