Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): extract ResolveMovedDepends from Resol...



details:   https://anonhg.NetBSD.org/src/rev/504144cbbade
branches:  trunk
changeset: 1016567:504144cbbade
user:      rillig <rillig%NetBSD.org@localhost>
date:      Mon Nov 23 22:57:56 2020 +0000

description:
make(1): extract ResolveMovedDepends from ResolveFullName

diffstat:

 usr.bin/make/dir.c |  84 +++++++++++++++++++++++++++++------------------------
 1 files changed, 46 insertions(+), 38 deletions(-)

diffs (112 lines):

diff -r 9264032e3fa4 -r 504144cbbade usr.bin/make/dir.c
--- a/usr.bin/make/dir.c        Mon Nov 23 22:31:04 2020 +0000
+++ b/usr.bin/make/dir.c        Mon Nov 23 22:57:56 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: dir.c,v 1.219 2020/11/23 22:31:04 rillig Exp $ */
+/*     $NetBSD: dir.c,v 1.220 2020/11/23 22:57:56 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -134,7 +134,7 @@
 #include "job.h"
 
 /*     "@(#)dir.c      8.2 (Berkeley) 1/2/94"  */
-MAKE_RCSID("$NetBSD: dir.c,v 1.219 2020/11/23 22:31:04 rillig Exp $");
+MAKE_RCSID("$NetBSD: dir.c,v 1.220 2020/11/23 22:57:56 rillig Exp $");
 
 #define DIR_DEBUG0(text) DEBUG0(DIR, text)
 #define DIR_DEBUG1(fmt, arg1) DEBUG1(DIR, fmt, arg1)
@@ -1291,49 +1291,57 @@
        return NULL;
 }
 
+/*
+ * This is an implied source, and it may have moved,
+ * see if we can find it via the current .PATH
+ */
+static char *
+ResolveMovedDepends(GNode *gn)
+{
+    char *fullName;
+
+    char *base = strrchr(gn->name, '/');
+    if (base == NULL)
+       return NULL;
+    base++;
+
+    fullName = Dir_FindFile(base, Suff_FindPath(gn));
+    if (fullName == NULL)
+       return NULL;
+
+    /*
+     * Put the found file in gn->path so that we give that to the compiler.
+     */
+    /*
+     * XXX: Better just reset gn->path to NULL; updating it is already done
+     * by Dir_UpdateMTime.
+     */
+    gn->path = bmake_strdup(fullName);
+    if (!Job_RunTarget(".STALE", gn->fname))
+       fprintf(stdout,         /* XXX: Why stdout? */
+               "%s: %s, %d: ignoring stale %s for %s, found %s\n",
+               progname, gn->fname, gn->lineno,
+               makeDependfile, gn->name, fullName);
+
+    return fullName;
+}
+
 static char *
 ResolveFullName(GNode *gn)
 {
     char *fullName;
 
-    if (gn->path == NULL) {
-       if (gn->type & OP_NOPATH)
-           fullName = NULL;
-       else {
-           fullName = Dir_FindFile(gn->name, Suff_FindPath(gn));
-           if (fullName == NULL && gn->flags & FROM_DEPEND &&
-               !Lst_IsEmpty(gn->implicitParents)) {
-               char *cp;
+    fullName = gn->path;
+    if (fullName == NULL && !(gn->type & OP_NOPATH)) {
 
-               cp = strrchr(gn->name, '/');
-               if (cp) {
-                   /*
-                    * This is an implied source, and it may have moved,
-                    * see if we can find it via the current .PATH
-                    */
-                   cp++;
+       fullName = Dir_FindFile(gn->name, Suff_FindPath(gn));
 
-                   fullName = Dir_FindFile(cp, Suff_FindPath(gn));
-                   if (fullName) {
-                       /*
-                        * Put the found file in gn->path
-                        * so that we give that to the compiler.
-                        */
-                       gn->path = bmake_strdup(fullName);
-                       if (!Job_RunTarget(".STALE", gn->fname))
-                           fprintf(stdout,
-                                   "%s: %s, %d: ignoring stale %s for %s, "
-                                   "found %s\n", progname, gn->fname,
-                                   gn->lineno,
-                                   makeDependfile, gn->name, fullName);
-                   }
-               }
-           }
-           DIR_DEBUG2("Found '%s' as '%s'\n",
-                      gn->name, fullName ? fullName : "(not found)");
-       }
-    } else {
-       fullName = gn->path;
+       if (fullName == NULL && gn->flags & FROM_DEPEND &&
+           !Lst_IsEmpty(gn->implicitParents))
+           fullName = ResolveMovedDepends(gn);
+
+       DIR_DEBUG2("Found '%s' as '%s'\n",
+                  gn->name, fullName ? fullName : "(not found)");
     }
 
     if (fullName == NULL)



Home | Main Index | Thread Index | Old Index