From 69e7a49d956553bcc730a9568cccb12fa998de51 Mon Sep 17 00:00:00 2001 From: Michael Bestas Date: Tue, 1 Nov 2022 14:41:42 +0200 Subject: [PATCH] kernel: Fix clang version override Change-Id: I18fceeeeab5426f55a73d0cb8d72abd5f40c67ec --- build/tasks/kernel.mk | 11 ----------- config/BoardConfigKernel.mk | 21 +++++++++++++++------ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk index 8b82b97c..b766aa61 100644 --- a/build/tasks/kernel.mk +++ b/build/tasks/kernel.mk @@ -31,10 +31,6 @@ # # TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to true # -# TARGET_KERNEL_CLANG_VERSION = Clang prebuilts version, optional, defaults to clang-stable -# -# TARGET_KERNEL_CLANG_PATH = Clang prebuilts path, optional -# # BOARD_KERNEL_IMAGE_NAME = Built image name # for ARM use: zImage # for ARM64 use: Image.gz @@ -231,13 +227,6 @@ ifeq ($(or $(FULL_RECOVERY_KERNEL_BUILD), $(FULL_KERNEL_BUILD)),true) # Add host bin out dir to path PATH_OVERRIDE := PATH=$(KERNEL_BUILD_OUT_PREFIX)$(HOST_OUT_EXECUTABLES):$$PATH ifneq ($(TARGET_KERNEL_CLANG_COMPILE),false) - ifneq ($(TARGET_KERNEL_CLANG_VERSION),) - KERNEL_CLANG_VERSION := clang-$(TARGET_KERNEL_CLANG_VERSION) - else - # Use the default version of clang if TARGET_KERNEL_CLANG_VERSION hasn't been set by the device config - KERNEL_CLANG_VERSION := $(LLVM_PREBUILTS_VERSION) - endif - TARGET_KERNEL_CLANG_PATH ?= $(BUILD_TOP)/prebuilts/clang/host/$(HOST_PREBUILT_TAG)/$(KERNEL_CLANG_VERSION) ifeq (,$(filter 5.10, $(TARGET_KERNEL_VERSION))) ifeq ($(KERNEL_ARCH),arm64) KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=aarch64-linux-gnu- diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk index a00e0722..77dfa9a6 100644 --- a/config/BoardConfigKernel.mk +++ b/config/BoardConfigKernel.mk @@ -27,6 +27,9 @@ # x86_64-linux-android- for x86 # # TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to true +# TARGET_KERNEL_CLANG_VERSION = Clang prebuilts version, optional, defaults to clang-stable +# TARGET_KERNEL_CLANG_PATH = Clang prebuilts path, optional +# # TARGET_KERNEL_LLVM_BINUTILS = Use LLVM binutils, defaults to true # TARGET_KERNEL_VERSION = Reported kernel version in top level kernel # makefile. Can be overriden in device trees @@ -68,7 +71,13 @@ KERNEL_VERSION := $(shell grep -s "^VERSION = " $(TARGET_KERNEL_SOURCE)/Makefile KERNEL_PATCHLEVEL := $(shell grep -s "^PATCHLEVEL = " $(TARGET_KERNEL_SOURCE)/Makefile | awk '{ print $$3 }') TARGET_KERNEL_VERSION ?= $(shell echo $(KERNEL_VERSION)"."$(KERNEL_PATCHLEVEL)) -CLANG_PREBUILTS := $(BUILD_TOP)/prebuilts/clang/host/$(HOST_PREBUILT_TAG)/clang-r450784d +ifneq ($(TARGET_KERNEL_CLANG_VERSION),) + KERNEL_CLANG_VERSION := clang-$(TARGET_KERNEL_CLANG_VERSION) +else + # Use the default version of clang if TARGET_KERNEL_CLANG_VERSION hasn't been set by the device config + KERNEL_CLANG_VERSION := clang-r450784d +endif +TARGET_KERNEL_CLANG_PATH ?= $(BUILD_TOP)/prebuilts/clang/host/$(HOST_PREBUILT_TAG)/$(KERNEL_CLANG_VERSION) ifneq ($(USE_CCACHE),) ifneq ($(CCACHE_EXEC),) @@ -156,19 +165,19 @@ ifeq (,$(filter 5.10, $(TARGET_KERNEL_VERSION))) endif # Set the full path to the clang command and LLVM binutils - KERNEL_MAKE_FLAGS += HOSTCC=$(CLANG_PREBUILTS)/bin/clang - KERNEL_MAKE_FLAGS += HOSTCXX=$(CLANG_PREBUILTS)/bin/clang++ + KERNEL_MAKE_FLAGS += HOSTCC=$(TARGET_KERNEL_CLANG_PATH)/bin/clang + KERNEL_MAKE_FLAGS += HOSTCXX=$(TARGET_KERNEL_CLANG_PATH)/bin/clang++ ifneq ($(TARGET_KERNEL_CLANG_COMPILE), false) ifneq ($(TARGET_KERNEL_LLVM_BINUTILS), false) - KERNEL_MAKE_FLAGS += LD=$(CLANG_PREBUILTS)/bin/ld.lld - KERNEL_MAKE_FLAGS += AR=$(CLANG_PREBUILTS)/bin/llvm-ar + KERNEL_MAKE_FLAGS += LD=$(TARGET_KERNEL_CLANG_PATH)/bin/ld.lld + KERNEL_MAKE_FLAGS += AR=$(TARGET_KERNEL_CLANG_PATH)/bin/llvm-ar 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" - TOOLS_PATH_OVERRIDE += PATH=$(BUILD_TOP)/prebuilts/tools-lineage/$(HOST_PREBUILT_TAG)/bin:$(CLANG_PREBUILTS)/bin:$$PATH + TOOLS_PATH_OVERRIDE += PATH=$(BUILD_TOP)/prebuilts/tools-lineage/$(HOST_PREBUILT_TAG)/bin:$(TARGET_KERNEL_CLANG_PATH)/bin:$$PATH endif # Set DTBO image locations so the build system knows to build them