[U-Boot] [PATCH] kbuild: fix dependency of DT build
Masahiro Yamada
yamada.masahiro at socionext.com
Wed Oct 11 14:56:10 UTC 2017
I saw a DT build issue report some time before [1]. I was able to
reproduce the bug, and figure out the root cause.
Since commit 6d427c6b1fa0 ("binman: Automatically include a U-Boot
.dtsi file"), invalid .*.cmd files are generated.
Since that commit, DTS files are put into sed and piped to CPP.
Because CPP reads the stream from stdin, -Wp,-MD,$(depfile).pre.tmp
option generates a depfile with the target name "-". This is not
the format expected by fixdep.
Use one more temporary file instead of using pipe. With this, deps_
in the .*.cmd will be fixed. Having a temp file name in source_ is
odd, but it is unsed in the build system. Not a big deal.
[1] https://lists.denx.de/pipermail/u-boot/2017-June/294451.html
Fiexes: 6d427c6b1fa0 ("binman: Automatically include a U-Boot .dtsi file")
Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
---
Probably, I can fix this issue in an even cleaner way.
But, U-Boot build system is a mirror of Linux.
I generally improve Linux first, then import the outcome back to U-Boot.
I will give it a try when I find some time.
scripts/Makefile.lib | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 861a3dc..0d5c529 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -175,7 +175,7 @@ u_boot_dtsi_options = $(wildcard $(dir $<)$(basename $(notdir $<))-u-boot.dtsi)
# $(warning u_boot_dtsi_options: $(u_boot_dtsi_options))
# We use the first match
-u_boot_dtsi = $(firstword $(u_boot_dtsi_options))
+u_boot_dtsi = $(notdir $(firstword $(u_boot_dtsi_options)))
# Modified for U-Boot
dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
@@ -308,9 +308,8 @@ quiet_cmd_dtc = DTC $@
# Modified for U-Boot
# Bring in any U-Boot-specific include at the end of the file
cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
- cat $< $(if $(u_boot_dtsi),\
- | sed "$$ a\#include \"$(u_boot_dtsi)\"") | \
- $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) - ; \
+ (cat $<; $(if $(u_boot_dtsi),echo '\#include "$(u_boot_dtsi)"')) > $(pre-tmp); \
+ $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $(pre-tmp) ; \
$(DTC) -O dtb -o $@ -b 0 \
-i $(dir $<) $(DTC_FLAGS) \
-d $(depfile).dtc.tmp $(dtc-tmp) ; \
@@ -319,6 +318,7 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
$(obj)/%.dtb: $(src)/%.dts FORCE
$(call if_changed_dep,dtc)
+pre-tmp = $(subst $(comma),_,$(dot-target).pre.tmp)
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
# DTCO
--
2.7.4
More information about the U-Boot
mailing list