Re: [PATCH 11/11] Remove including timestamp.h in version.h

Sean Anderson
2021-08-04T21:43:58Z

On 8/2/21 3:21 PM, Simon Glass wrote:
> Hi Pali,
>
> On Mon, 2 Aug 2021 at 07:20, Pali Rohár <pali@kernel.org> wrote:
>>
>> Header file version.h does not use anything from timestamp.h. Including of
>> timestamp.h has side effect which cause recompiling object file at every
>> make run because timestamp.h changes at every run.
>>
>> So remove timestamp.h from version.h and include timestamp.h in files
>> which needs it.
>>
>> This change reduce recompilation time of final U-Boot binary when U-Boot
>> source files were not changed as less source files needs to be recompiled.
>>
>> Signed-off-by: Pali Rohár <pali@kernel.org>
>> ---
>> arch/arm/mach-rockchip/tpl.c | 4 ++++
>> board/work-microwave/work_92105/work_92105_display.c | 1 +
>> cmd/version.c | 1 +
>> common/spl/spl.c | 4 ++++
>> drivers/rtc/emul_rtc.c | 2 +-
>> include/version.h | 2 --
>> 6 files changed, 11 insertions(+), 3 deletions(-)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> I assume we do actually want to regenerate the timestamp when U-Boot
> builds, even if nothing has changed. Is that right?

I know this is the current behavior, but it would be nice if this was
not the case. If one is building U-Boot as part of a larger project, one
might want to have a makefile rule like

u-boot/u-boot.bin:
$(MAKE) -C u-boot $(@F)

but u-boot/u-boot.bin will always be remade even if no changes have been
done. This will cause make to remake all dependents of U-Boot as well
(which can be rather time-consuming).

At the moment, I just use U-Boot as an order-only dependency and remake
it manually. But I would love it if U-Boot was only remade if
dependencies had actually changed, since this would make it easier to
integrate it with the rest of my build system.

--Sean