d5e7cd89bf
normal target (the latter dependency being the reason why it's made), the .MADE parent should not be put on the `toBeMade' list again (in Make_Update()) since it was already put on it in Make_ExpandUse(). Doing so would cause the rules for the .MADE target to be executed (at least) twice, and also mess up the unmade children count of _its_ parent, resulting in spurious graph cylce detection. To achieve this, make sure the unmade children count of the .MADE target is set to zero before enqueueing it on the `toBeMade' list in Make_ExpandUse(). Then, in Make_Update(), check if the parent has the .MADE attribute before diddling with the queue. For the same reason the status of a node must not be set to UPTODATE unconditionally in compat mode, since that will prevent the node from being built even if it is the source of a normal target. Instead, check both its state and the type of the parent to decide whether to continue on behalf of the current parent. |
||
---|---|---|
.. | ||
PSD.doc | ||
lst.lib | ||
Makefile | ||
Makefile.boot | ||
arch.c | ||
bit.h | ||
buf.c | ||
buf.h | ||
compat.c | ||
cond.c | ||
config.h | ||
dir.c | ||
dir.h | ||
for.c | ||
hash.c | ||
hash.h | ||
job.c | ||
job.h | ||
list.h | ||
lst.h | ||
main.c | ||
make.1 | ||
make.c | ||
make.h | ||
nonints.h | ||
parse.c | ||
pathnames.h | ||
sprite.h | ||
str.c | ||
suff.c | ||
targ.c | ||
trace.c | ||
trace.h | ||
util.c | ||
var.c |