# 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_loongarch	:= loongarch64-linux-gnusf
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 ($(CLANG_TARGET_FLAGS),)
$(error add '--target=' option to scripts/Makefile.clang)
else
CLANG_FLAGS	+= --target=$(CLANG_TARGET_FLAGS)
endif

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
CLANG_FLAGS	+= -Werror=option-ignored
CLANG_FLAGS	+= -Werror=unused-command-line-argument
KBUILD_CPPFLAGS	+= $(CLANG_FLAGS)
export CLANG_FLAGS
