mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-28 15:57:48 +00:00
Fixed bug #13022 by setting is_target flag on files that this implicit
pattern rule also makes.
This commit is contained in:
parent
a34b85490d
commit
0e6c4f5b0e
4 changed files with 45 additions and 0 deletions
|
@ -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>
|
2005-12-07 Boris Kolpackov <boris@kolpackov.net>
|
||||||
|
|
||||||
* remake.c (notice_finished_file): Propagate the change of
|
* remake.c (notice_finished_file): Propagate the change of
|
||||||
|
|
|
@ -928,6 +928,11 @@ pattern_search (struct file *file, int archive,
|
||||||
if (f && f->precious)
|
if (f && f->precious)
|
||||||
new->file->precious = 1;
|
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;
|
file->also_make = new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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>
|
2005-12-07 Boris Kolpackov <boris@kolpackov.net>
|
||||||
|
|
||||||
* scripts/features/double_colon: Add a test for bug #14334.
|
* scripts/features/double_colon: Add a test for bug #14334.
|
||||||
|
|
|
@ -115,5 +115,35 @@ $(dir)/foo.bar:
|
||||||
|
|
||||||
unlink("$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.
|
# This tells the test driver that the perl test script executed properly.
|
||||||
1;
|
1;
|
||||||
|
|
Loading…
Reference in a new issue