Fixed bug #13022 by setting is_target flag on files that this implicit

pattern rule also makes.
This commit is contained in:
Boris Kolpackov 2005-12-09 16:46:19 +00:00
parent a34b85490d
commit 0e6c4f5b0e
4 changed files with 45 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2005-12-09 Boris Kolpackov <boris@kolpackov.net>
* implicit.c (pattern_search): Mark other files that this rule
builds as targets so that they are not treated as intermediates
by the pattern rule search algorithm. Fixes bug #13022.
2005-12-07 Boris Kolpackov <boris@kolpackov.net>
* remake.c (notice_finished_file): Propagate the change of

View file

@ -928,6 +928,11 @@ pattern_search (struct file *file, int archive,
if (f && f->precious)
new->file->precious = 1;
/* Set the is_target flag so that this file is not treated
as intermediate by the pattern rule search algorithm and
file_exists_p cannot pick it up yet. */
new->file->is_target = 1;
file->also_make = new;
}

View file

@ -1,3 +1,7 @@
2005-12-09 Boris Kolpackov <boris@kolpackov.net>
* scripts/features/patternrules: Add a test for bug #13022.
2005-12-07 Boris Kolpackov <boris@kolpackov.net>
* scripts/features/double_colon: Add a test for bug #14334.

View file

@ -115,5 +115,35 @@ $(dir)/foo.bar:
unlink("$dir/foo.bar");
# TEST #5: make sure targets of a macthed implicit pattern rule never
# never considered intermediate (Savannah bug #13022).
#
run_make_test('
.PHONY: all
all: foo.c foo.o
%.h %.c: %.in
touch $*.h
touch $*.c
%.o: %.c %.h
echo $+ >$@
%.o: %.c
@echo wrong rule
foo.in:
touch $@
',
'',
'touch foo.in
touch foo.h
touch foo.c
echo foo.c foo.h >foo.o');
unlink('foo.in', 'foo.h', 'foo.c', 'foo.o');
# This tells the test driver that the perl test script executed properly.
1;