From 18dd1748df758a294e329eed8ec0024158c96561 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Sun, 28 Aug 2022 16:44:19 +0300 Subject: [PATCH] kernel: Changes for LLVM binutils * Remove KERNEL_LD from kernel.mk, we simply set LD in BoardConfigKernel * Add llvm-ar in path allowlist (used by LTO) Change-Id: I76addb6f9d8d413edb1832dba23082ffb6d5ebc3 --- build/tasks/kernel.mk | 9 ++------- config/BoardConfigKernel.mk | 2 ++ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index 68775c33..8bd82905 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -50,8 +50,6 @@ # # KERNEL_CC = The C Compiler used. This is automatically set based # on whether the clang version is set, optional. -# KERNEL_LD = The Linker used. This is automatically set based -# on whether the clang/gcc version is set, optional. # # KERNEL_CLANG_TRIPLE = Target triple for clang (e.g. aarch64-linux-gnu-) # defaults to arm-linux-gnu- for arm @@ -246,9 +244,6 @@ ifneq ($(TARGET_KERNEL_CLANG_COMPILE),false) ifeq ($(KERNEL_CC),) KERNEL_CC := CC="$(CCACHE_BIN) clang" endif - ifeq ($(KERNEL_LD),) - KERNEL_LD := - endif endif ifneq ($(TARGET_KERNEL_MODULES),) @@ -272,7 +267,7 @@ endif # $(1): output path (The value passed to O=) # $(2): target to build (eg. defconfig, modules, dtbo.img) define internal-make-kernel-target -$(PATH_OVERRIDE) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_BUILD_OUT_PREFIX)$(1) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_LD) $(2) +$(PATH_OVERRIDE) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_BUILD_OUT_PREFIX)$(1) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(2) endef # Make an external module target @@ -280,7 +275,7 @@ endef # $(2): module root path # $(3): target to build (eg. modules_install) define make-external-module-target -$(PATH_OVERRIDE) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_EXT_MODULE_ROOT)/$(1) M=$(2)/$(1) KERNEL_SRC=$(BUILD_TOP)/$(KERNEL_SRC) OUT_DIR=$(KERNEL_BUILD_OUT_PREFIX)$(KERNEL_OUT) O=$(KERNEL_BUILD_OUT_PREFIX)$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(KERNEL_LD) $(3) +$(PATH_OVERRIDE) $(KERNEL_MAKE_CMD) $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_EXT_MODULE_ROOT)/$(1) M=$(2)/$(1) KERNEL_SRC=$(BUILD_TOP)/$(KERNEL_SRC) OUT_DIR=$(KERNEL_BUILD_OUT_PREFIX)$(KERNEL_OUT) O=$(KERNEL_BUILD_OUT_PREFIX)$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(3) endef # Generate kernel .config from a given defconfig diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk index ac9b05a4..5bd295fd 100644 --- a/config/BoardConfigKernel.mk +++ b/config/BoardConfigKernel.mk @@ -176,6 +176,8 @@ KERNEL_MAKE_FLAGS += HOSTCXX=$(CLANG_PREBUILTS)/bin/clang++ ifneq ($(TARGET_KERNEL_CLANG_COMPILE), false) ifneq (,$(filter 5.4 5.10, $(TARGET_KERNEL_VERSION))) KERNEL_MAKE_FLAGS += LLVM=1 LLVM_IAS=1 + KERNEL_MAKE_FLAGS += LD=$(CLANG_PREBUILTS)/bin/ld.lld + KERNEL_MAKE_FLAGS += AR=$(CLANG_PREBUILTS)/bin/llvm-ar endif endif