Re: [PATCH RFC] scripts: pass dtc cpp flags via a GCC response file
Michal Simek <[email protected]>
| Newsgroups | org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
On 8/24/26 18:51, Tom Rini wrote:
> On Mon, Aug 24, 2026 at 05:29:37PM +0200, Michal Simek wrote:
>>
>>
>> On 8/24/26 17:09, Tom Rini wrote:
>>> On Mon, Aug 24, 2026 at 10:17:18AM +0530, Suraj Kakade wrote:
>>>
>>>> cmd_dtc inlines dtc_cpp_flags (including every upstream dtsi -I
>>>> path) in the HOSTCC command. With a long $(srctree) that command is
>>>> too large for /bin/sh -c and Make fails with "Argument list too
>>>> long" while building a .dtb.
>>>>
>>>> Write the flags to a per-target .dtc.flags.tmp file and pass @file to
>>>> HOSTCC/CPP so the shell command stays short.
>>>>
>>>> This change requires GNU Make >= 4.0, since $(file ...) is not
>>>> supported by Make 3.x.
>>>>
>>>> Fixes: d31ff219a833 ("Makefile.lib: find capsule ESL dtsi file with CONFIG_OF_UPSTREAM")
>>>> Fixes: 1e7883f6325a ("dtbo: Fix dtbo generation rules")
>>>> Signed-off-by: Suraj Kakade <[email protected]>
>>>
>>> The linux kernel, and so Kbuild, says that 4.0 is the minimum version of
>>> GNU make required, so that is true for us as well, so this is fine.
>>>
>>> Reviewed-by: Tom Rini <[email protected]>
>>>
>>
>> We should likely fix this too.
>>
>> 94 # If the user is running make -s (silent mode), suppress echoing of
>> 95 # commands
>> 96 ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
>> 97 ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
>> 98 quiet=silent_
>> 99 endif
>> 100 else # make-3.8x
>> 101 ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
>> 102 quiet=silent_
>> 103 endif
>> 104 endif
>
> I think this means we should pull commit
> 5f99665ee8f4335f334a5292b6d5b41a577fc2c0 from the kernel in, to fully
> switch to 4.0 as minimum.
>
something like this?
M
diff --git a/Makefile b/Makefile
index 16e3e4dfe5e4..e0ab39200c1b 100644
--- a/Makefile
+++ b/Makefile
@@ -93,15 +93,9 @@ endif
# If the user is running make -s (silent mode), suppress echoing of
# commands
-ifneq ($(filter 4.%,$(MAKE_VERSION)),) # make-4
-ifneq ($(filter %s ,$(firstword x$(MAKEFLAGS))),)
+ifneq ($(findstring s,$(firstword -$(MAKEFLAGS))),)
quiet=silent_
endif
-else # make-3.8x
-ifneq ($(filter s% -s%,$(MAKEFLAGS)),)
- quiet=silent_
-endif
-endif
export quiet Q KBUILD_VERBOSE
@@ -166,14 +160,6 @@ ifneq ($(abs_srctree),$(abs_objtree))
MAKEFLAGS += --include-dir=$(abs_srctree)
endif
-ifneq ($(filter 3.%,$(MAKE_VERSION)),)
-# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
-# We need to invoke sub-make to avoid implicit rules in the top Makefile.
-need-sub-make := 1
-# Cancel implicit rules for this Makefile.
-$(this-makefile): ;
-endif
-
export abs_srctree abs_objtree
export sub_make_done := 1