mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	scripts/Makefile.clang: default to LLVM_IAS=1
LLVM_IAS=1 controls enabling clang's integrated assembler via -integrated-as. This was an explicit opt in until we could enable assembler support in Clang for more architecures. Now we have support and CI coverage of LLVM_IAS=1 for all architecures except a few more bugs affecting s390 and powerpc. This commit flips the default from opt in via LLVM_IAS=1 to opt out via LLVM_IAS=0. CI systems or developers that were previously doing builds with CC=clang or LLVM=1 without explicitly setting LLVM_IAS must now explicitly opt out via LLVM_IAS=0, otherwise they will be implicitly opted-in. This finally shortens the command line invocation when cross compiling with LLVM to simply: $ make ARCH=arm64 LLVM=1 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
		
							parent
							
								
									52cc02b910
								
							
						
					
					
						commit
						f12b034afe
					
				
					 2 changed files with 11 additions and 9 deletions
				
			
		|  | @ -60,17 +60,14 @@ They can be enabled individually. The full list of the parameters: :: | |||
| 	  OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \ | ||||
| 	  HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld | ||||
| 
 | ||||
| Currently, the integrated assembler is disabled by default. You can pass | ||||
| ``LLVM_IAS=1`` to enable it. | ||||
| The integrated assembler is enabled by default. You can pass ``LLVM_IAS=0`` to | ||||
| disable it. | ||||
| 
 | ||||
| Omitting CROSS_COMPILE | ||||
| ---------------------- | ||||
| 
 | ||||
| As explained above, ``CROSS_COMPILE`` is used to set ``--target=<triple>``. | ||||
| 
 | ||||
| Unless ``LLVM_IAS=1`` is specified, ``CROSS_COMPILE`` is also used to derive | ||||
| ``--prefix=<path>`` to search for the GNU assembler and linker. | ||||
| 
 | ||||
| If ``CROSS_COMPILE`` is not specified, the ``--target=<triple>`` is inferred | ||||
| from ``ARCH``. | ||||
| 
 | ||||
|  | @ -78,7 +75,12 @@ That means if you use only LLVM tools, ``CROSS_COMPILE`` becomes unnecessary. | |||
| 
 | ||||
| For example, to cross-compile the arm64 kernel:: | ||||
| 
 | ||||
| 	make ARCH=arm64 LLVM=1 LLVM_IAS=1 | ||||
| 	make ARCH=arm64 LLVM=1 | ||||
| 
 | ||||
| If ``LLVM_IAS=0`` is specified, ``CROSS_COMPILE`` is also used to derive | ||||
| ``--prefix=<path>`` to search for the GNU assembler and linker. :: | ||||
| 
 | ||||
| 	make ARCH=arm64 LLVM=1 LLVM_IAS=0 CROSS_COMPILE=aarch64-linux-gnu- | ||||
| 
 | ||||
| Supported Architectures | ||||
| ----------------------- | ||||
|  |  | |||
|  | @ -22,12 +22,12 @@ else | |||
| CLANG_FLAGS	+= --target=$(notdir $(CROSS_COMPILE:%-=%)) | ||||
| endif # CROSS_COMPILE | ||||
| 
 | ||||
| ifeq ($(LLVM_IAS),1) | ||||
| CLANG_FLAGS	+= -integrated-as | ||||
| else | ||||
| ifeq ($(LLVM_IAS),0) | ||||
| CLANG_FLAGS	+= -no-integrated-as | ||||
| GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit)) | ||||
| CLANG_FLAGS	+= --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE)) | ||||
| else | ||||
| CLANG_FLAGS	+= -integrated-as | ||||
| endif | ||||
| CLANG_FLAGS	+= -Werror=unknown-warning-option | ||||
| KBUILD_CFLAGS	+= $(CLANG_FLAGS) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Nick Desaulniers
						Nick Desaulniers