]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* src/job.c (new_job): [SV-66030] Show all also-make targets
authorPaul Smith <psmith@gnu.org>
Sun, 4 Aug 2024 21:16:23 +0000 (17:16 -0400)
committerPaul Smith <psmith@gnu.org>
Sun, 4 Aug 2024 21:16:23 +0000 (17:16 -0400)
src/job.c

index 09fe9d162be563c5eee3c2ed2e6e4b4ca1b22dd0..db741fc055baf7f30dc61025e3dfb93113ab617c 100644 (file)
--- a/src/job.c
+++ b/src/job.c
@@ -1862,7 +1862,9 @@ new_job (struct file *file)
      Use message here so that changes to working directories are logged.  */
   if (ISDB (DB_WHY))
     {
+      char *nmbuf = NULL;
       const char *nm;
+      const char *tp;
 
       if (! cmds->fileinfo.filenm)
         nm = _("<builtin>");
@@ -1873,20 +1875,36 @@ new_job (struct file *file)
           nm = n;
         }
 
+      if (c->file->also_make == NULL)
+        tp = c->file->name;
+      else
+        {
+          const struct dep *dp;
+          char *cp;
+          size_t len = strlen (c->file->name);
+          for (dp = c->file->also_make; dp; dp = dp->next)
+            /* space for "', '<name>".  */
+            len += strlen (dp->file->name) + 4;
+          tp = nmbuf = xmalloc (len + 1);
+          cp = stpcpy (nmbuf, c->file->name);
+          for (dp = c->file->also_make; dp; dp = dp->next)
+            cp = stpcpy (stpcpy (cp, "', '"), dp->file->name);
+        }
+
       if (c->file->phony)
         OSS (message, 0, _("%s: update target '%s' due to: target is .PHONY"),
-             nm, c->file->name);
+             nm, tp);
       else if (c->file->last_mtime == NONEXISTENT_MTIME)
         OSS (message, 0,
              _("%s: update target '%s' due to: target does not exist"),
-             nm, c->file->name);
+             nm, tp);
       else
         {
           char *newer = allocated_expand_variable_for_file (STRING_SIZE_TUPLE ("?"), c->file);
           if (newer[0] != '\0')
             {
               OSSS (message, 0, _("%s: update target '%s' due to: %s"),
-                    nm, c->file->name, newer);
+                    nm, tp, newer);
               free (newer);
             }
           else
@@ -1902,7 +1920,7 @@ new_job (struct file *file)
               if (!len)
                 OSS (message, 0,
                      _("%s: update target '%s' due to: unknown reasons"),
-                     nm, c->file->name);
+                     nm, tp);
               else
                 {
                   char *cp = newer = alloca (len);
@@ -1914,10 +1932,12 @@ new_job (struct file *file)
                         cp = stpcpy (cp, d->file->name);
                       }
                   OSSS (message, 0, _("%s: update target '%s' due to: %s"),
-                        nm, c->file->name, newer);
+                        nm, tp, newer);
                 }
             }
         }
+
+      free (nmbuf);
     }
 
   /* The job is now primed.  Start it running.