summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2017-10-17 13:42:44 +0900
committerTom Rini <trini@konsulko.com>2017-11-17 07:43:32 -0500
commitd6a0c78a4efb1353f4ec6f6c59c0771298510f58 (patch)
treef182d9931b330fa498c6f42da989e0593aa134ff
parent15b97f5c5e6d88e0560c6928f3acd01c999a494d (diff)
downloadu-boot-d6a0c78a4efb1353f4ec6f6c59c0771298510f58.tar.gz
u-boot-d6a0c78a4efb1353f4ec6f6c59c0771298510f58.tar.xz
u-boot-d6a0c78a4efb1353f4ec6f6c59c0771298510f58.zip
pylibfdt: compile pylibfdt only when dtoc/binman is necessary
Currently, pylibfdt is always compiled if swig is installed on your machine. It is really annoying because most of targets (excepts x86, sunxi, rockchip) do not use dtoc or binman. "checkbinman" and "checkdtoc" are wrong. It is odd that the final build stage checks if we have built necessary tools. If your platform depends on dtoc/binman, you must be able to build pylibfdt. If swig is not installed, it should fail immediately. I added PYLIBFDT, DTOC, BINMAN entries to Kconfig. They should be property select:ed by platforms that need them. Kbuild will descend into scripts/dtc/pylibfdt/ only when CONFIG_PYLIBFDT is enabled. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--Makefile17
-rw-r--r--arch/arm/Kconfig1
-rw-r--r--arch/x86/Kconfig1
-rw-r--r--dts/Kconfig13
-rw-r--r--scripts/Makefile.spl15
-rw-r--r--scripts/dtc/Makefile2
6 files changed, 20 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index f94813d86b..b5f81e3627 100644
--- a/Makefile
+++ b/Makefile
@@ -1135,7 +1135,7 @@ cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \
$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
- $(if $(CONFIG_HAVE_REFCODE),refcode.bin) checkbinman FORCE
+ $(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE
$(call if_changed,binman)
OBJCOPYFLAGS_u-boot-x86-16bit.bin := -O binary -j .start16 -j .resetvec
@@ -1144,8 +1144,7 @@ u-boot-x86-16bit.bin: u-boot FORCE
endif
ifneq ($(CONFIG_ARCH_SUNXI),)
-u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb \
- checkbinman FORCE
+u-boot-sunxi-with-spl.bin: spl/sunxi-spl.bin u-boot.img u-boot.dtb FORCE
$(call if_changed,binman)
endif
@@ -1379,18 +1378,6 @@ $(version_h): include/config/uboot.release FORCE
$(timestamp_h): $(srctree)/Makefile FORCE
$(call filechk,timestamp.h)
-checkbinman: tools
- @if ! ( echo 'import libfdt' | ( PYTHONPATH=scripts/dtc/pylibfdt $(PYTHON) )); then \
- echo >&2; \
- echo >&2 '*** binman needs the Python libfdt library.'; \
- echo >&2 '*** Either install it on your system, or try:'; \
- echo >&2 '***'; \
- echo >&2 '*** sudo apt-get install swig libpython-dev'; \
- echo >&2 '***'; \
- echo >&2 '*** to have U-Boot build its own version.'; \
- false; \
- fi
-
# ---------------------------------------------------------------------------
quiet_cmd_cpp_lds = LDS $@
cmd_cpp_lds = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1304417bbf..2607fedaed 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -675,6 +675,7 @@ config ARCH_SOCFPGA
config ARCH_SUNXI
bool "Support sunxi (Allwinner) SoCs"
+ select BINMAN
select CMD_GPIO
select CMD_MMC if MMC
select CMD_USB if DISTRO_DEFAULTS
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 98c56ad7dc..5c23b2cb57 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -152,6 +152,7 @@ config SMM_TSEG_SIZE
config X86_RESET_VECTOR
bool
default n
+ select BINMAN
# The following options control where the 16-bit and 32-bit init lies
# If SPL is enabled then it normally holds this init code, and U-Boot proper
diff --git a/dts/Kconfig b/dts/Kconfig
index daa757dd56..0cef225ba9 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -8,6 +8,17 @@ config SUPPORT_OF_CONTROL
config DTC
bool
+config PYLIBFDT
+ bool
+
+config DTOC
+ bool
+ select PYLIBFDT
+
+config BINMAN
+ bool
+ select DTOC
+
menu "Device Tree Control"
depends on SUPPORT_OF_CONTROL
@@ -231,6 +242,7 @@ config OF_SPL_REMOVE_PROPS
config SPL_OF_PLATDATA
bool "Generate platform data for use in SPL"
depends on SPL_OF_CONTROL
+ select DTOC
help
For very constrained SPL environments the overhead of decoding
device tree nodes and converting their contents into platform data
@@ -252,6 +264,7 @@ config SPL_OF_PLATDATA
config TPL_OF_PLATDATA
bool "Generate platform data for use in TPL"
depends on TPL_OF_CONTROL
+ select DTOC
help
For very constrained SPL environments the overhead of decoding
device tree nodes and converting their contents into platform data
diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
index 065bb259d5..ca044767a0 100644
--- a/scripts/Makefile.spl
+++ b/scripts/Makefile.spl
@@ -276,10 +276,10 @@ PHONY += dts_dir
dts_dir:
$(shell [ -d $(obj)/dts ] || mkdir -p $(obj)/dts)
-include/generated/dt-structs-gen.h: $(obj)/$(SPL_BIN).dtb dts_dir checkdtoc
+include/generated/dt-structs-gen.h: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
$(call if_changed,dtoch)
-$(obj)/dts/dt-platdata.c: $(obj)/$(SPL_BIN).dtb dts_dir checkdtoc
+$(obj)/dts/dt-platdata.c: $(obj)/$(SPL_BIN).dtb dts_dir FORCE
$(call if_changed,dtocc)
ifdef CONFIG_SAMSUNG
@@ -380,17 +380,6 @@ ifneq ($(cmd_files),)
include $(cmd_files)
endif
-checkdtoc: tools
- @if ! ( echo 'import libfdt' | ( PYTHONPATH=scripts/dtc/pylibfdt $(PYTHON) )); then \
- echo '*** dtoc needs the Python libfdt library. Either '; \
- echo '*** install it on your system, or try:'; \
- echo '***'; \
- echo '*** sudo apt-get install swig libpython-dev'; \
- echo '***'; \
- echo '*** to have U-Boot build its own version.'; \
- false; \
- fi
-
PHONY += FORCE
FORCE:
diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile
index f4a16ed2a5..90ef2db85c 100644
--- a/scripts/dtc/Makefile
+++ b/scripts/dtc/Makefile
@@ -31,4 +31,4 @@ $(obj)/dtc-lexer.lex.o: $(obj)/dtc-parser.tab.h
clean-files := dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h
# Added for U-Boot
-subdir-y += pylibfdt
+subdir-$(CONFIG_PYLIBFDT) += pylibfdt