If we try to build using external dtc using > make DTC=dtc
we get a confusing error like > make[2]: *** No rule to make target 'arch/x86/dts/bayleybay.dtb', > needed by 'dtbs'. Stop. Workaround is to use > make DTC=$( which dtc ) which gives make a full path, so the dependency is satisfied. This was introduced by commit d50af66 kbuild: add dtc as dependency on .dtb file This patch checks that DTC is an absolute path and fails early if not. We also replace `which` in `scripts/dtc-version.sh` with POSIXy `command -v`. Signed-off-by: Richard Marko <s...@48.io> --- Makefile | 21 +++++++++++++-------- scripts/dtc-version.sh | 2 +- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index b204a50043..9649f88722 100644 --- a/Makefile +++ b/Makefile @@ -2014,18 +2014,23 @@ scripts_dtc: scripts_basic $(Q)if test "$(DTC)" = "$(DTC_INTREE)"; then \ $(MAKE) $(build)=scripts/dtc; \ else \ - if ! $(DTC) -v >/dev/null; then \ - echo '*** Failed to check dtc version: $(DTC)'; \ + if [ ! "$(DTC)" = "$(wildcard $(DTC))" ]; then \ + echo "*** DTC is not an absolute path"; \ false; \ else \ - if test "$(call dtc-version)" -lt $(DTC_MIN_VERSION); then \ - echo '*** Your dtc is too old, please upgrade to dtc $(DTC_MIN_VERSION) or newer'; \ + if ! $(DTC) -v >/dev/null; then \ + echo '*** Failed to check dtc version: $(DTC)'; \ false; \ else \ - if [ -n "$(CONFIG_PYLIBFDT)" ]; then \ - if ! echo "import libfdt" | $(PYTHON3) 2>/dev/null; then \ - echo '*** pylibfdt does not seem to be available with $(PYTHON3)'; \ - false; \ + if test "$(call dtc-version)" -lt $(DTC_MIN_VERSION); then \ + echo '*** Your dtc is too old, please upgrade to dtc $(DTC_MIN_VERSION) or newer'; \ + false; \ + else \ + if [ -n "$(CONFIG_PYLIBFDT)" ]; then \ + if ! echo "import libfdt" | $(PYTHON3) 2>/dev/null; then \ + echo '*** pylibfdt does not seem to be available with $(PYTHON3)'; \ + false; \ + fi; \ fi; \ fi; \ fi; \ diff --git a/scripts/dtc-version.sh b/scripts/dtc-version.sh index 53ff868bcd..1e2f0c8a8b 100755 --- a/scripts/dtc-version.sh +++ b/scripts/dtc-version.sh @@ -15,7 +15,7 @@ if [ ${#dtc} -eq 0 ]; then exit 1 fi -if ! which $dtc >/dev/null ; then +if ! command -v $dtc >/dev/null ; then echo "Error: Cannot find dtc: $dtc" exit 1 fi -- 2.42.0