]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
kbuild: fix dependency of DT build
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 11 Oct 2017 14:56:10 +0000 (23:56 +0900)
committerTom Rini <trini@konsulko.com>
Mon, 16 Oct 2017 13:42:51 +0000 (09:42 -0400)
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@socionext.com>
scripts/Makefile.lib

index 861a3dc3f1d301378c8c807bf576bfcfcc437ab4..0d5c5291a1b6fda40dc826a38bf7d53dd83de251 100644 (file)
@@ -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