[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: suggestion to reduce unnecessary rebuilding
From: |
Dave Korn |
Subject: |
RE: suggestion to reduce unnecessary rebuilding |
Date: |
Fri, 25 Apr 2008 15:01:21 +0100 |
Paul Smith wrote:
> On Thu, 2008-04-24 at 15:01 -0400, Ilya Shlyakhter wrote:
>> I want to make a suggestion that can speed up make by reducing
>> unnecessary rebuilding:
>>
>> Before making a target, if that target already exists, move it to a
>> temporary backup file. After the target is re-made, diff the newly made
>> target against the backup. If it didn't change, reset the date of the
>> newly made target to the date of the backup. In either case, delete the
>> backup.
>
> You can implement this yourself, in any makefile you like. You don't
> need make to do it for you.
See the usage of "move-if-change" in gcc/binutils makefiles, for example.
> The problem is, the next time you do the build it will AGAIN rebuild
> that target, AGAIN decide it hasn't changed, and AGAIN reset the stamp
> back to the old time. And, the NEXT time you run make it will do it
> again. Etc.
>
> The result of this is if you make an innocuous change (say, adding a
> comment) to a common header file that is included by all the source
> files, make will end up rebuilding every .o every time you type make.
I think that's why in practice "move-if-change" is generally used in
conjunction with a dependency on a stamp file that /does/ get its timestamp
updated, isn't it? (Actually, I never understood what the stampfiles were
used for before, and your explanation above has just made me think that this
might be the reason. But I could still be completely misleading myself about
it.)
cheers,
DaveK
--
Can't think of a witty .sigline today....