Re: [PATCH V5 1/2] kbuild: centralize .dts->.dtb rule

Stephen Warren
2012-11-15T18:31:43Z

On 11/15/2012 11:20 AM, Grant Likely wrote:
> On Thu, Nov 15, 2012 at 6:09 PM, Stephen Warren <swarren@wwwdotorg.org> wrote:
>> On 11/15/2012 04:51 AM, Grant Likely wrote:
>>> Grant Likely wrote:
>>>> Or how about: I could pick up the patch with only the MIPS hunk and
>>>> every other user can be fixed up independently to use the new rule.
>>>
>>> Here's a trial patch to fix up ARM. Does this look correct? This patch
>>> depends on the generic dtb build rule already being applied.
>>
>> I think the patch looks OK technically, except for one minor comment below.
>>
>> One issue with this patch is that it moves *.dts from arch/arm/boot to
>> arch/arm/boot/dts, which means everyone has to adjust their scripts/...
>> that package/install/... the kernel. I guess it's an easy change for
>> people to make, but could easily catch people unawares if they do
>> incremental builds so that arch/arm/boot/*.dtb still exists but is stale.
>
> True. We could temporarily remove or rename if the same file exists in
> the directory below to help people catch that problem. I really would
> like to clean up that build rule to be consistent though.
>
> The other option is to move all the .dts files into the boot
> directory, but I don't think that is a good idea at all.

Maybe we can just add "rm *.dtb" to the following rules in
boot/Makefile, before calling the child make?

%.dtb: scripts
- $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@

dtbs: scripts
- $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
+ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) dtbs

>>> +targets += dtbs
>>
>> Doesn't that make the "dtbs" target always run by default? Perhaps
>> that's reasonable though, and doesn't actually affect anything since the
>> make command for this directory always specifies an explicit target?
>>
>> Or, was that meant to be the following that got removed from ../Makefile?
>>
>> targets += $(dtb-y)
>
> Yes it is supposed to be the same thing. Doesn't it effectively do the
> same since dtbs depends on $(dtb-y)?

Ah, I think so yes.

I guess anyway that $(targets) is presumably ignored if an explicit
build target is requested from make.