mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	 a3aac126ca
			
		
	
	
		a3aac126ca
		
	
	
	
	
		
			
			The UM builds distinguish i386 from x86_64 via SUBARCH, but we don't
support building i386 directly with Clang. To make SUBARCH work for
i386 UM, we need to explicitly test for it.
This lets me run i386 KUnit tests with Clang:
$ ./tools/testing/kunit/kunit.py run \
	--make_options LLVM=1 \
	--make_options SUBARCH=i386
...
Fixes: c7500c1b53 ("um: Allow builds with Clang")
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20250304162124.it.785-kees@kernel.org
Tested-by: David Gow <davidgow@google.com>
Signed-off-by: Kees Cook <kees@kernel.org>
		
	
			
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # 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_sparc	:= sparc64-linux-gnu
 | |
| CLANG_TARGET_FLAGS_x86		:= x86_64-linux-gnu
 | |
| # This is only for i386 UM builds, which need the 32-bit target not -m32
 | |
| CLANG_TARGET_FLAGS_i386		:= i386-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
 |