arm64: Support change toolchain to clang

Signed-off-by: wangmingrong1 <wangmingrong1@xiaomi.com>
This commit is contained in:
wangmingrong1
2025-05-08 17:27:32 +08:00
committed by Xiang Xiao
parent e219066397
commit acf0256164
+26 -20
View File
@@ -198,21 +198,33 @@ CROSSDEV ?= aarch64-none-elf-
# Default toolchain
CC = $(CROSSDEV)gcc
CXX = $(CROSSDEV)g++
CPP = $(CROSSDEV)gcc -E -P -x c
STRIP = $(CROSSDEV)strip --strip-unneeded
OBJCOPY = $(CROSSDEV)objcopy
OBJDUMP = $(CROSSDEV)objdump
LD = $(CROSSDEV)ld
AR = $(CROSSDEV)ar rcs
NM = $(CROSSDEV)nm
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GCC),y)
CC = $(CROSSDEV)gcc
CXX = $(CROSSDEV)g++
CPP = $(CROSSDEV)gcc -E -P -x c
STRIP = $(CROSSDEV)strip --strip-unneeded
OBJCOPY = $(CROSSDEV)objcopy
OBJDUMP = $(CROSSDEV)objdump
LD = $(CROSSDEV)ld
AR = $(CROSSDEV)ar rcs
NM = $(CROSSDEV)nm
else ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),y)
CC = clang
CXX = clang++
CPP = clang -E -P -x c
LD = ld.lld -m aarch64elf
STRIP = llvm-strip --strip-unneeded
AR = llvm-ar rcs
NM = llvm-nm
OBJCOPY = llvm-objcopy
OBJDUMP = llvm-objdump
endif
# Link Time Optimization
ifeq ($(CONFIG_LTO_FULL),y)
ARCHOPTIMIZATION += -flto
ifeq ($(CONFIG_ARM64_TOOLCHAIN_GNU_EABI),y)
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GCC),y)
LD := $(CROSSDEV)gcc
AR := $(CROSSDEV)gcc-ar rcs
NM := $(CROSSDEV)gcc-nm
@@ -221,18 +233,12 @@ ifeq ($(CONFIG_LTO_FULL),y)
endif
endif
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GNU),y)
ifeq ($(CONFIG_ARCH_TOOLCHAIN_CLANG),)
ifeq ($(GCCVER),)
export GCCVER := $(shell $(CC) --version | grep gcc | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/" | cut -d'.' -f1)
endif
ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
LDFLAGS += --no-warn-rwx-segments
endif
ifeq ($(CONFIG_ARCH_TOOLCHAIN_GCC),y)
ifeq ($(GCCVER),)
export GCCVER := $(shell $(CC) --version | grep gcc | sed -E "s/.* ([0-9]+\.[0-9]+).*/\1/" | cut -d'.' -f1)
endif
ifeq ($(shell expr "$(GCCVER)" \>= 12), 1)
LDFLAGS += --print-memory-usage
LDFLAGS += --no-warn-rwx-segments --print-memory-usage
endif
endif