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