1# Copyright (C) 2022 Huawei Technologies Co., Ltd. 2# Licensed under the Mulan PSL v2. 3# You can use this software according to the terms and conditions of the Mulan PSL v2. 4# You may obtain a copy of Mulan PSL v2 at: 5# http://license.coscl.org.cn/MulanPSL2 6# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 7# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 8# PURPOSE. 9# See the Mulan PSL v2 for more details. 10# 11#toolchain.mk 12# 13export TOOLCHAIN_ROOT=$(TEE_CLANG_DIR) 14 15export CLANG_TOOLCHAIN := $(TOOLCHAIN_ROOT) 16export PATH := $(CLANG_TOOLCHAIN):$(PATH) 17CROSS_COMPILE := $(CLANG_TOOLCHAIN) 18 19override CC := $(SOURCEANALYZER) $(CCACHE) $(CROSS_COMPILE)/clang 20override CXX := $(SOURCEANALYZER) $(CCACHE) $(CROSS_COMPILE)/clang++ 21override AS := $(CROSS_COMPILE)/llvm-as 22override LD := $(CROSS_COMPILE)/ld.lld 23override CPP := $(srctree)/kernel/clang-cpp 24# disable ar creating debug 25override AR := $(CROSS_COMPILE)/llvm-ar 2>/dev/null 26override NM := $(CROSS_COMPILE)/llvm-nm 27override OBJCOPY := $(CROSS_COMPILE)/llvm-objcopy 28override READELF := $(CROSS_COMPILE)/llvm-readelf 29override STRIP := $(CROSS_COMPILE)/llvm-strip 30override RANLIB := $(CROSS_COMPILE)/llvm-ranlib 31 32export CC CXX AS LD CPP AR NM OBJCOPY READELF STRIP 33 34# clang need `--target=$(TARGET_ARCH)` option 35export TARGET_ARCH_32 := arm-linux-gnueabi 36export TARGET_ARCH_64 := aarch64-linux-gnu 37 38ifeq ($(ARCH), arm) 39 TARGET_ARCH := $(TARGET_ARCH_32) 40 LIBCOMPILER_RT_BUILTINS := $(TEE_COMPILER_DIR)/lib/clang/$(LLVM_BASEVER)/lib/arm-linux-ohos/libclang_rt.builtins.a 41ifeq (${CONFIG_THUMB_SUPPORT},y) 42 flags += -mthumb 43endif 44ifeq ($(CONFIG_ARM_CORTEX_A15),y) 45 flags += -march=armv7ve 46endif 47ifeq ($(CONFIG_ARM_CORTEX_A53),y) 48 flags += -march=armv8-a 49endif 50else 51 TARGET_ARCH := $(TARGET_ARCH_64) 52 LIBCOMPILER_RT_BUILTINS := $(TEE_COMPILER_DIR)/lib/clang/$(LLVM_BASEVER)/lib/aarch64-linux-ohos/libclang_rt.builtins.a 53 flags += -march=armv8-a 54ifeq ($(CONFIG_ARM_CORTEX_A53),y) 55 ASFLAGS += -march=armv8-a 56 ASFLAGS += -mcpu=cortex-a53 57endif 58endif 59 60flags += --target=$(TARGET_ARCH) 61cxx-flags += --target=$(TARGET_ARCH) 62asflags += --target=$(TARGET_ARCH) 63