diff --git a/tools/scripts/Makefile.arch b/tools/scripts/Makefile.arch index eabfe9f411d9..ed5f008d400e 100644 --- a/tools/scripts/Makefile.arch +++ b/tools/scripts/Makefile.arch @@ -38,7 +38,13 @@ ifeq ($(ARCH),loongarch64) SRCARCH := loongarch endif -LP64 := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1) +# Probe for __LP64__ only when the compiler is installed: this runs at +# parse time for every target, including ones that never compile, e.g. +# install-build-deps, and would otherwise spew "gcc: not found" when the +# compiler is not yet installed. Only the first word of CC is consulted, +# as CC may carry arguments, e.g. 'ccache gcc'. When the guard fails it +# prints nothing, leaving LP64 unset, as if the probe had failed. +LP64 := $(shell if command -v $(firstword ${CC}) >/dev/null 2>&1; then echo __LP64__ | ${CC} ${CFLAGS} -E -x c -; fi | tail -n 1) ifeq ($(LP64), 1) IS_64_BIT := 1 else diff --git a/tools/scripts/Makefile.include b/tools/scripts/Makefile.include index 46a3872b8762..378387f62960 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -98,7 +98,13 @@ else $(call allow-override,LLVM_STRIP,llvm-strip) endif -CC_NO_CLANG := $(shell $(CC) -dM -E -x c /dev/null | grep -Fq "__clang__"; echo $$?) +# The CC_NO_CLANG probe also runs at parse time for targets that never +# compile, so guard it with 'command -v': when the compiler is not yet +# installed, e.g. the first install-build-deps run, it would otherwise +# spew "gcc: not found". Only the first word of CC is consulted, as CC +# may carry arguments, e.g. 'ccache gcc'. A missing compiler leaves +# CC_NO_CLANG at 1, as if the probe had failed. +CC_NO_CLANG := $(shell if command -v $(firstword $(CC)) >/dev/null 2>&1; then $(CC) -dM -E -x c /dev/null; fi | grep -Fq "__clang__"; echo $$?) # Some tools require bpftool SYSTEM_BPFTOOL ?= bpftool