- $(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.
Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -71,14 +71,10 @@ endef · 70 unmodified lines | ||
| 71 | 71 | |
| 72 | 72 | # cc-cross-prefix |
| 73 | 73 | # Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-) |
| 74 | −# Return first prefix where a prefix$(CC) is found in PATH. | |
| 75 | −# If no $(CC) found in PATH with listed prefixes return nothing | |
| 76 | −cc-cross-prefix = \ | |
| 77 | − $(word 1, $(foreach c,$(1), \ | |
| 78 | − $(shell set -e; \ | |
| 79 | − if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \ | |
| 80 | − echo $(c); \ | |
| 81 | − fi))) | |
| 74 | +# Return first <prefix> where a <prefix>gcc is found in PATH. | |
| 75 | +# If no gcc found in PATH with listed prefixes return nothing | |
| 76 | +cc-cross-prefix = $(firstword $(foreach c, $(filter-out -%, $(1)), \ | |
| 77 | + $(if $(shell which $(c)gcc), $(c)))) | |
| 82 | 78 | |
| 83 | 79 | # output directory for tests below |
| 84 | 80 | TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/) |