[ALPS05556626] kernel: introduce LLVM=1 and gas toolchain to kenv.mk

Linux can now be built with LLVM=1, all necessary llvm params
such as CC, LD, OBJCOPY, and NM will be set correctly.

Introduce LLVM=1 to kenv.mk and drop legacy approach.
To make it work, we have to also change build.config.mtk* files.

With commit commit 2c71673913c12528c77bd0f75ce2c6adc9ac5059
("Revert "ANDROID: Kbuild, LLVMLinux: allow overriding clang target triple""),
we must not use "CLANG_TRIPLE" in build commands, otherwise well
have boot failures.

MTK-Commit-Id: 52ced0a041efb0231efb134de7f821b3f678ced8

Change-Id: I76f2ec556e14d8ed28a89bc13e3b551fda625037
CR-Id: ALPS05556626
Feature: [Module]Kernel Maintenance
Signed-off-by: Miles Chen <miles.chen@mediatek.com>
This commit is contained in:
Miles Chen
2021-03-05 11:57:15 +08:00
parent e9bb9b1526
commit 890057d646
5 changed files with 84 additions and 57 deletions

View File

@@ -1,12 +1,18 @@
ARCH=arm64
CLANG_TRIPLE=aarch64-linux-gnu-
CROSS_COMPILE=aarch64-linux-androidkernel-
CC=clang
LD=ld.lld
CROSS_COMPILE=aarch64-linux-gnu-
LLVM=1
LLVM_IAS=1
LD_LIBRARY_PATH=prebuilts/clang/host/linux-x86/clang-r383902/lib64:$$LD_LIBRARY_PATH
NM=llvm-nm
OBJCOPY=llvm-objcopy
# DEFCONFIG=defconfig
KERNEL_DIR=kernel-4.19
CLANG_PREBUILT_BIN=prebuilts/clang/host/linux-x86/clang-r383902/bin
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
# for check scripts
CC=clang
LD=ld.lld
AR=llvm-ar
NM=llvm-nm
OBJCOPY=llvm-objcopy
OBJDUMP=llvm-objdump
READELF=llvm-readelf
OBJSIZE=llvm-size
STRIP=llvm-strip

View File

@@ -1,12 +1,18 @@
ARCH=arm64
CLANG_TRIPLE=aarch64-linux-gnu-
CROSS_COMPILE=aarch64-linux-androidkernel-
CC=clang
LD=ld.lld
CROSS_COMPILE=aarch64-linux-gnu-
LLVM=1
LLVM_IAS=1
LD_LIBRARY_PATH=prebuilts/clang/host/linux-x86/clang-r383902/lib64:$$LD_LIBRARY_PATH
NM=llvm-nm
OBJCOPY=llvm-objcopy
# DEFCONFIG=defconfig
KERNEL_DIR=kernel-4.19
CLANG_PREBUILT_BIN=prebuilts/clang/host/linux-x86/clang-r383902/bin
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
# for check scripts
CC=clang
LD=ld.lld
AR=llvm-ar
NM=llvm-nm
OBJCOPY=llvm-objcopy
OBJDUMP=llvm-objdump
READELF=llvm-readelf
OBJSIZE=llvm-size
STRIP=llvm-strip

View File

@@ -1,12 +1,18 @@
ARCH=arm64
CLANG_TRIPLE=aarch64-linux-gnu-
CROSS_COMPILE=aarch64-linux-androidkernel-
CC=clang
LD=ld.lld
CROSS_COMPILE=aarch64-linux-gnu-
LLVM=1
LLVM_IAS=1
LD_LIBRARY_PATH=prebuilts/clang/host/linux-x86/clang-r383902/lib64:$$LD_LIBRARY_PATH
NM=llvm-nm
OBJCOPY=llvm-objcopy
# DEFCONFIG=defconfig
KERNEL_DIR=kernel-4.19
CLANG_PREBUILT_BIN=prebuilts/clang/host/linux-x86/clang-r383902/bin
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
# for check scripts
CC=clang
LD=ld.lld
AR=llvm-ar
NM=llvm-nm
OBJCOPY=llvm-objcopy
OBJDUMP=llvm-objdump
READELF=llvm-readelf
OBJSIZE=llvm-size
STRIP=llvm-strip

View File

@@ -1,9 +1,19 @@
ARCH=arm
CLANG_TRIPLE=arm-linux-gnueabi-
CROSS_COMPILE=arm-linux-androidkernel-
CC=clang
LD=ld.lld
CROSS_COMPILE=arm-linux-gnueabi-
LLVM=1
# DEFCONFIG=defconfig
KERNEL_DIR=kernel-4.19
CLANG_PREBUILT_BIN=prebuilts/clang/host/linux-x86/clang-r383902/bin
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
LINUX_GCC_CROSS_COMPILE_PREBUILTS_BIN=prebuilts/gas/linux-x86
# for check scripts
CC=clang
LD=ld.lld
AR=llvm-ar
NM=llvm-nm
OBJCOPY=llvm-objcopy
OBJDUMP=llvm-objdump
READELF=llvm-readelf
OBJSIZE=llvm-size
STRIP=llvm-strip

61
kenv.mk
View File

@@ -38,38 +38,37 @@ ifneq ($(strip $(TARGET_NO_KERNEL)),true)
endif
ARGS := CROSS_COMPILE=$(CROSS_COMPILE)
ifneq ($(CLANG_TRIPLE),)
ARGS += CLANG_TRIPLE=$(CLANG_TRIPLE)
endif
ifneq ($(LD),)
ARGS += LD=$(LD)
endif
ifneq ($(LD_LIBRARY_PATH),)
ARGS += LD_LIBRARY_PATH=$(KERNEL_ROOT_DIR)/$(LD_LIBRARY_PATH)
endif
ifneq ($(NM),)
ARGS += NM=$(NM)
endif
ifneq ($(OBJCOPY),)
ARGS += OBJCOPY=$(OBJCOPY)
endif
ifeq ("$(CC)", "gcc")
CC :=
endif
ifneq ($(filter-out false,$(USE_CCACHE)),)
CCACHE_EXEC ?= /usr/bin/ccache
CCACHE_EXEC := $(abspath $(wildcard $(CCACHE_EXEC)))
else
CCACHE_EXEC :=
endif
ifneq ($(CCACHE_EXEC),)
ifneq ($(CC),)
ARGS += CCACHE_CPP2=yes CC='$(CCACHE_EXEC) $(CC)'
ifneq ($(LLVM),)
ARGS += LLVM=1
ifneq ($(filter-out false,$(USE_CCACHE)),)
CCACHE_EXEC ?= /usr/bin/ccache
CCACHE_EXEC := $(abspath $(wildcard $(CCACHE_EXEC)))
else
CCACHE_EXEC :=
endif
else
ifneq ($(CC),)
ARGS += CC=$(CC)
ifneq ($(CCACHE_EXEC),)
ARGS += CCACHE_CPP2=yes CC='$(CCACHE_EXEC) clang'
else
ARGS += CC=clang
endif
ifneq ($(LLVM_IAS),)
ARGS += LLVM_IAS=$(LLVM_IAS)
endif
ifeq ($(HOSTCC),)
ifneq ($(CC),)
ARGS += HOSTCC=$(CC)
endif
else
ARGS += HOSTCC=$(HOSTCC)
endif
ifneq ($(LD),)
ARGS += LD=$(LD) HOSTLD=$(LD)
ifneq ($(suffix $(LD)),)
ARGS += HOSTLDFLAGS=-fuse-ld=$(subst .,,$(suffix $(LD)))
endif
endif
ifneq ($(LD_LIBRARY_PATH),)
ARGS += LD_LIBRARY_PATH=$(KERNEL_ROOT_DIR)/$(LD_LIBRARY_PATH)
endif
endif