summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile30
1 files changed, 28 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index f911f70344..32d29b87db 100644
--- a/Makefile
+++ b/Makefile
@@ -415,7 +415,13 @@ PERL = perl
PYTHON ?= python
PYTHON2 = python2
PYTHON3 ?= python3
-DTC ?= $(objtree)/scripts/dtc/dtc
+
+# The devicetree compiler and pylibfdt are automatically built unless DTC is
+# provided. If DTC is provided, it is assumed the pylibfdt is available too.
+DTC_INTREE := $(objtree)/scripts/dtc/dtc
+DTC ?= $(DTC_INTREE)
+DTC_MIN_VERSION := 010406
+
CHECK = sparse
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
@@ -1954,9 +1960,29 @@ endif
endif
+# Check dtc and pylibfdt, if DTC is provided, else build them
PHONY += scripts_dtc
scripts_dtc: scripts_basic
- $(Q)$(MAKE) $(build)=scripts/dtc
+ $(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)'; \
+ 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'; \
+ 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; \
+ fi
# ---------------------------------------------------------------------------
quiet_cmd_cpp_lds = LDS $@