mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-27 06:27:51 +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>
|
||||
|
||||
* remake.c (notice_finished_file): Propagate the change of
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue