From 2860d3b247e70a34246936fb085aeec951ea49b1 Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@kolpackov.net>
Date: Fri, 4 Mar 2005 14:31:09 +0000
Subject: [PATCH] Fixed Savannah bug #12202.

---
 ChangeLog                           |  5 +++++
 implicit.c                          |  2 ++
 tests/ChangeLog                     |  4 ++++
 tests/scripts/features/patternrules | 33 ++++++++++++++++++++++++++---
 4 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 9897a2c2..8d7dcbbb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-04  Boris Kolpackov  <boris@kolpackov.net>
+
+	* imlicit.c (pattern_search): Mark files for which an implicit
+	rule has been found as targets. Fixes Savannah bug #12202.
+
 2005-03-04  Paul D. Smith  <psmith@gnu.org>
 
 	* AUTHORS: Update.
diff --git a/implicit.c b/implicit.c
index acf7c944..ab3879b4 100644
--- a/implicit.c
+++ b/implicit.c
@@ -803,6 +803,7 @@ pattern_search (struct file *file, int archive,
 	  f->cmds = imf->cmds;
 	  f->stem = imf->stem;
           f->also_make = imf->also_make;
+          f->is_target = 1;
 	  imf = lookup_file (d->intermediate_pattern);
 	  if (imf != 0 && imf->precious)
 	    f->precious = 1;
@@ -881,6 +882,7 @@ pattern_search (struct file *file, int archive,
     }
 
   file->cmds = rule->cmds;
+  file->is_target = 1;
 
   /* If this rule builds other targets, too, put the others into FILE's
      `also_make' member.  */
diff --git a/tests/ChangeLog b/tests/ChangeLog
index cffcb2d2..ce8f460c 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2005-03-04  Boris Kolpackov  <boris@kolpackov.net>
+
+	* features/patternrules: Add a test fo Savannah bug #12202.
+
 2005-03-03  Boris Kolpackov  <boris@kolpackov.net>
 
 	* scripts/features/se_implicit: Add a test for stem
diff --git a/tests/scripts/features/patternrules b/tests/scripts/features/patternrules
index 926695a2..3202a672 100644
--- a/tests/scripts/features/patternrules
+++ b/tests/scripts/features/patternrules
@@ -4,8 +4,10 @@ $description = "Test pattern rules.";
 
 $details = "";
 
-#  Make sure that multiple patterns where the same target can be built are
-#  searched even if the first one fails to match properly.
+#  TEST #1: Make sure that multiple patterns where the same target
+#           can be built are searched even if the first one fails
+#           to match properly.
+#
 
 run_make_test('
 .PHONY: all
@@ -33,7 +35,32 @@ a: void
 	@true
 
 3.implicit-phony:
-', '', '');
+',
+'',
+'');
+
+# TEST #2: make sure files that are built via implicit rules are marked
+#          as targets (Savannah bug #12202).
+#
+run_make_test('
+TARGETS := foo foo.out
+
+.PHONY: all foo.in
+
+all: $(TARGETS)
+
+%: %.in
+	@echo $@
+
+%.out: %
+	@echo $@
+
+foo.in: ; @:
+
+',
+'',
+'foo
+foo.out');
 
 
 # This tells the test driver that the perl test script executed properly.