mirror of
https://github.com/mirror/make.git
synced 2026-08-10 17:14:33 +00:00
Do not force targets to be SECONDARY
In SV 43677 we forced targets to be secondary if we found an intermediate file that was listed as a prerequisite of another target. This overrides .INTERMEDIATE settings, so doesn't work. Now that we have an is_explicit flag in targets, use that instead. * src/implicit.c (pattern_search): Remove setting of secondary. Preserve the value of the is_explicit flag when creating a new file target, and consider it when setting the intermediate flag. * tests/scripts/features/patternrules: Add a test w/out INTERMEDIATE * tests/scripts/targets/INTERMEDIATE: Add a test with INTERMEDIATE
This commit is contained in:
@@ -963,13 +963,7 @@ pattern_search (struct file *file, int archive,
|
||||
struct file *imf = pat->file;
|
||||
struct file *f = lookup_file (imf->name);
|
||||
|
||||
/* We don't want to delete an intermediate file that happened
|
||||
to be a prerequisite of some (other) target. Mark it as
|
||||
secondary. We don't want it to be precious as that disables
|
||||
DELETE_ON_ERROR etc. */
|
||||
if (f != 0)
|
||||
f->secondary = 1;
|
||||
else
|
||||
if (!f)
|
||||
f = enter_file (imf->name);
|
||||
|
||||
f->deps = imf->deps;
|
||||
@@ -984,8 +978,9 @@ pattern_search (struct file *file, int archive,
|
||||
f->pat_searched = imf->pat_searched;
|
||||
f->also_make = imf->also_make;
|
||||
f->is_target = 1;
|
||||
f->is_explicit |= imf->is_explicit || pat->is_explicit;
|
||||
f->notintermediate |= imf->notintermediate;
|
||||
f->intermediate |= !(pat->is_explicit || f->notintermediate);
|
||||
f->intermediate |= !f->is_explicit && !f->notintermediate;
|
||||
f->tried_implicit = 1;
|
||||
|
||||
imf = lookup_file (pat->pattern);
|
||||
|
||||
Reference in New Issue
Block a user