On Mon, Mar 17, 2025 at 8:12 AM Paul Smith <[email protected]> wrote:
> The question we have think carefully about is what sort of backward-
> compatibility issues, if any, we could introduce. Are there situations
> where people are relying on the current behavior?
It is possible that someone relies that running 'make all' updates
existing order-only prerequisites.
It is possible with this patch that a target is rebuilt with
out-of-date existing order-only prerequisites.
i don't see though, why someone would need to update existing
order-only prerequisites. But the users are capable of coming up with
something nobody has thought of.
> To build target A:
> - First try to build all NON-ORDER-ONLY prerequisites
> - Compare the modification time of all NON-ORDER-ONLY prerequisites
> - If any NON-ORDER-ONLY prerequisite is newer than A:
> - Try to build all ORDER-ONLY prerequisites
> - Run the recipe to build A
The patch in attachment is slightly different. The patch causes make
to never update existing order-only prerequisites.
To summarise
the existing behavior is
existing order-only are always considered.
the patch's behavior is
existing order-only are never considered.
the behavior described by Paul above
existing order-only are only considered if some regular
prerequisite causes the target to be rebuilt.
My opinion is that this change (if introduced) does not warrant an option.
regards, Dmitry