Paul D. Smith <[EMAIL PROTECTED]> writes:
 
> This sounds familiar to me: pls. send it.  Thx.

Patch and test makefile are attached.

-boris
diff -u -b -B --minimal make-cvs-orig/file.c make-cvs-patched/file.c
--- make-cvs-orig/file.c        2004-05-16 19:19:57.000000000 -0500
+++ make-cvs-patched/file.c     2004-09-17 13:38:46.000000000 -0500
@@ -455,8 +455,9 @@
     for (d = f->deps; d != 0; d = d->next)
       for (f2 = d->file; f2 != 0; f2 = f2->prev)
        {
-         /* Mark this file as phony and nonexistent.  */
+         /* Mark this file as phony nonexistent target.  */
          f2->phony = 1;
+          f2->is_target = 1;
          f2->last_mtime = NONEXISTENT_MTIME;
          f2->mtime_before_update = NONEXISTENT_MTIME;
        }
diff -u -b -B --minimal make-cvs-orig/implicit.c make-cvs-patched/implicit.c
--- make-cvs-orig/implicit.c    2004-01-07 21:17:08.000000000 -0600
+++ make-cvs-patched/implicit.c 2004-09-17 13:41:17.000000000 -0500
@@ -342,6 +342,8 @@
          deps_found = 0;
          for (dep = rule->deps; dep != 0; dep = dep->next)
            {
+              struct file *f = 0;
+              
              /* If the dependency name has a %, substitute the stem.  */
              p = strchr (dep_name (dep), '%');
              if (p != 0)
@@ -396,7 +398,7 @@
                 directory (the one gotten by prepending FILENAME's directory),
                 so it might actually exist.  */
 
-             if (lookup_file (p) != 0
+             if (((f = lookup_file (p)) != 0 && f->is_target)
                  || ((!dep->changed || check_lastslash) && file_exists_p (p)))
                {
                  found_files_im[deps_found] = dep->ignore_mtime;
.PHONY: all

all: case.1 case.2 case.3

a: void

# 1 - existing file
#
%.1: void
        @false

%.1: makefile
        @true


# 2 - phony
#
%.2: void
        @false

%.2: 2.phony
        @true

.PHONY: 2.phony


# 3 - implicit-phony
#
%.3: void
        @false

%.3: 3.implicit-phony
        @true

3.implicit-phony:

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to