From 45d8c31e00578383d31f9746611a017c2e3bb769 Mon Sep 17 00:00:00 2001 From: Cyber Knight Date: Sun, 16 Oct 2022 20:19:51 +0800 Subject: [PATCH] kernel: Use LLVM Binutils for GCC users if needed - This essentially uses the whole of LLVM Binutils from the GCC being used except for the assembler. - The assembler is guarded with its own flag hence if the flag is set to true, LLVM's Integrated Assembler would be used. Signed-off-by: Cyber Knight --- config/BoardConfigKernel.mk | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk index 392e09e..0466376 100644 --- a/config/BoardConfigKernel.mk +++ b/config/BoardConfigKernel.mk @@ -29,6 +29,7 @@ # TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to true # TARGET_KERNEL_NEW_GCC_COMPILE = Compile kernel with newer version GCC, defaults to false # TARGET_KERNEL_LLVM_BINUTILS = Use LLVM binutils, defaults to true +# TARGET_KERNEL_USE_IAS = To use LLVM's Integrated Assembler # TARGET_KERNEL_VERSION = Reported kernel version in top level kernel # makefile. Can be overriden in device trees # in the event of prebuilt kernel. @@ -177,6 +178,23 @@ endif KERNEL_MAKE_FLAGS += AR=$(CLANG_PREBUILTS)/bin/llvm-ar endif endif + # Set the full path to LLVM Binutils for GCC users if needed. + ifneq ($(TARGET_KERNEL_NEW_GCC_COMPILE), false) + ifneq ($(TARGET_KERNEL_LLVM_BINUTILS), false) + KERNEL_MAKE_FLAGS += LD=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/ld.lld + KERNEL_MAKE_FLAGS += AR=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-ar + KERNEL_MAKE_FLAGS += NM=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-nm + KERNEL_MAKE_FLAGS += OBJCOPY=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-objcopy + KERNEL_MAKE_FLAGS += OBJDUMP=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-objdump + KERNEL_MAKE_FLAGS += OBJSIZE=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-objsize + KERNEL_MAKE_FLAGS += STRIP=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-strip + ifneq ($(TARGET_KERNEL_USE_IAS), false) + KERNEL_MAKE_FLAGS += AS=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/llvm-as + else + KERNEL_MAKE_FLAGS += AS=$(GCC_PREBUILTS)/aarch64/aarch64-elf/bin/aarch64-elf-as + endif + endif + endif else KERNEL_MAKE_FLAGS += HOSTCFLAGS="--sysroot=$(BUILD_TOP)/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot -I$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/include" KERNEL_MAKE_FLAGS += HOSTLDFLAGS="--sysroot=$(BUILD_TOP)/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot -Wl,-rpath,$(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -L $(BUILD_TOP)/prebuilts/kernel-build-tools/linux-x86/lib64 -fuse-ld=lld --rtlib=compiler-rt" -- 2.38.0