Follow-up Comment #1, bug #58056 (project make): This behavior is intended.
1. To figure out if a target has to be rebuilt make traverses the list of prerequisites and finds out if any of the prerequisites, but not intermediate prerequisites, need to be rebuilt. During this traverse make rebuilds all prerequisites that are out of date. If, during this traverse, make finds out that some prerequisite was out of date, then make proceeds to rebuild intermediate prerequisites. Intermediate prerequisites are not rebuild during this traverse along with prerequisites because, if all prerequisites are up to date then the target is up to date and there is no need to built intermediate prerequisites. In your example foo_A is an intermediary prerequisite. foo_B is a prerequisite. 2. Another reason is to allow parallel execution. If all prerequisites had to be built in the specified order how would you built them in parallel? _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?58056> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/