# Individual arch/{arch}/Makefiles should use -EL/-EB to set intended
# endianness and -m32/-m64 to set word size based on Kconfigs instead of
# relying on the target triple.
CLANG_TARGET_FLAGS_arm		:= arm-linux-gnueabi
CLANG_TARGET_FLAGS_arm64	:= aarch64-linux-gnu
CLANG_TARGET_FLAGS_hexagon	:= hexagon-linux-musl
CLANG_TARGET_FLAGS_m68k		:= m68k-linux-gnu
CLANG_TARGET_FLAGS_mips		:= mipsel-linux-gnu
CLANG_TARGET_FLAGS_powerpc	:= powerpc64le-linux-gnu
CLANG_TARGET_FLAGS_riscv	:= riscv64-linux-gnu
CLANG_TARGET_FLAGS_s390		:= s390x-linux-gnu
CLANG_TARGET_FLAGS_x86		:= x86_64-linux-gnu
CLANG_TARGET_FLAGS_um		:= $(CLANG_TARGET_FLAGS_$(SUBARCH))
CLANG_TARGET_FLAGS		:= $(CLANG_TARGET_FLAGS_$(SRCARCH))

ifeq ($(CROSS_COMPILE),)
ifeq ($(CLANG_TARGET_FLAGS),)
$(error Specify CROSS_COMPILE or add '--target=' option to scripts/Makefile.clang)
else
CLANG_FLAGS	+= --target=$(CLANG_TARGET_FLAGS)
endif # CLANG_TARGET_FLAGS
else
CLANG_FLAGS	+= --target=$(notdir $(CROSS_COMPILE:%-=%))
endif # CROSS_COMPILE

ifeq ($(LLVM_IAS),0)
CLANG_FLAGS	+= -fno-integrated-as
GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
CLANG_FLAGS	+= --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
else
CLANG_FLAGS	+= -fintegrated-as
endif
# By default, clang only warns when it encounters an unknown warning flag or
# certain optimization flags it knows it has not implemented.
# Make it behave more like gcc by erroring when these flags are encountered
# so they can be implemented or wrapped in cc-option.
CLANG_FLAGS	+= -Werror=unknown-warning-option
CLANG_FLAGS	+= -Werror=ignored-optimization-argument
KBUILD_CFLAGS	+= $(CLANG_FLAGS)
KBUILD_AFLAGS	+= $(CLANG_FLAGS)
export CLANG_FLAGS
