--- a/Makefile +++ b/Makefile @@ -413,13 +413,7 @@ PERL = perl PYTHON ?= python PYTHON2 = python2 PYTHON3 ?= python3 - -# 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 - +DTC ?= $(objtree)/scripts/dtc/dtc CHECK = sparse CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ @@ -2070,29 +2064,9 @@ endif endif -# Check dtc and pylibfdt, if DTC is provided, else build them PHONY += scripts_dtc 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)'; \ - 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 + $(Q)$(MAKE) $(build)=scripts/dtc # --------------------------------------------------------------------------- quiet_cmd_cpp_lds = LDS $@ --- a/doc/build/gcc.rst +++ b/doc/build/gcc.rst @@ -131,27 +131,6 @@ Further important build parameters are * O= - generate all output files in directory , including .config * V=1 - verbose build -Devicetree compiler -~~~~~~~~~~~~~~~~~~~ - -Boards that use `CONFIG_OF_CONTROL` (i.e. almost all of them) need the -devicetree compiler (dtc). Those with `CONFIG_PYLIBFDT` need pylibfdt, a Python -library for accessing devicetree data. Suitable versions of these are included -in the U-Boot tree in `scripts/dtc` and built automatically as needed. - -To use the system versions of these, use the DTC parameter, for example - -.. code-block:: bash - - DTC=/usr/bin/dtc make - -In this case, dtc and pylibfdt are not built. The build checks that the version -of dtc is new enough. It also makes sure that pylibfdt is present, if needed -(see `scripts_dtc` in the Makefile). - -Note that the :doc:`tools` are always built with the included version of libfdt -so it is not possible to build U-Boot tools with a system libfdt, at present. - Other build targets ~~~~~~~~~~~~~~~~~~~ --- a/dts/Kconfig +++ b/dts/Kconfig @@ -5,6 +5,9 @@ config SUPPORT_OF_CONTROL bool +config DTC + bool + config PYLIBFDT bool @@ -21,6 +24,7 @@ menu "Device Tree Control" config OF_CONTROL bool "Run-time configuration via Device Tree" + select DTC select OF_LIBFDT if !OF_PLATDATA select OF_REAL if !OF_PLATDATA help --- a/scripts/Makefile +++ b/scripts/Makefile @@ -10,3 +10,4 @@ always := $(hostprogs-y) # Let clean descend into subdirs subdir- += basic kconfig dtc +subdir-$(CONFIG_DTC) += dtc --- a/scripts/dtc-version.sh +++ b/scripts/dtc-version.sh @@ -10,16 +10,11 @@ dtc="$*" if [ ${#dtc} -eq 0 ]; then - echo "Error: No dtc command specified" + echo "Error: No dtc command specified." printf "Usage:\n\t$0 \n" exit 1 fi -if ! which $dtc >/dev/null ; then - echo "Error: Cannot find dtc: $dtc" - exit 1 -fi - MAJOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 1) MINOR=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 2) PATCH=$($dtc -v | head -1 | awk '{print $NF}' | cut -d . -f 3 | cut -d - -f 1)