forked from mirrors/linux
		
	kbuild: refactor cc-cross-prefix implementation
- $(word 1, <text>) is equivalent to $(firstword <text>)
 - hardcode "gcc" instead of $(CC)
 - minimize the shell script part
A little more notes in case $(filter-out -%, ...) is not clear.
arch/mips/Makefile passes prefixes depending on the configuration.
CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- \
    $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-)
In the Kconfig stage (e.g. when you run 'make defconfig'), neither
CONFIG_32BIT nor CONFIG_64BIT is defined. So, $(tool-archpref) is
empty. As a result, "-linux -linux-gnu- -unknown-linux-gnu" is passed
into cc-cross-prefix. The command 'which' assumes arguments starting
with a hyphen as command options, then emits the following messages:
  Illegal option -l
  Illegal option -l
  Illegal option -u
I think it is strange to define CROSS_COMPILE depending on the CONFIG
options since you need to feed $(CC) to Kconfig, but it is how MIPS
Makefile currently works. Anyway, it would not hurt to filter-out
invalid strings beforehand.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
			
			
This commit is contained in:
		
							parent
							
								
									88110713ca
								
							
						
					
					
						commit
						bd55f96fa9
					
				
					 1 changed files with 4 additions and 8 deletions
				
			
		|  | @ -71,14 +71,10 @@ endef | |||
| 
 | ||||
| # cc-cross-prefix | ||||
| # Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-) | ||||
| # Return first prefix where a prefix$(CC) is found in PATH. | ||||
| # If no $(CC) found in PATH with listed prefixes return nothing | ||||
| cc-cross-prefix =  \ | ||||
| 	$(word 1, $(foreach c,$(1),                                   \ | ||||
| 		$(shell set -e;                                       \ | ||||
| 		if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \ | ||||
| 			echo $(c);                                    \ | ||||
| 		fi))) | ||||
| # Return first <prefix> where a <prefix>gcc is found in PATH. | ||||
| # If no gcc found in PATH with listed prefixes return nothing | ||||
| cc-cross-prefix = $(firstword $(foreach c, $(filter-out -%, $(1)), \ | ||||
| 					$(if $(shell which $(c)gcc), $(c)))) | ||||
| 
 | ||||
| # output directory for tests below | ||||
| TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada