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: extract ParseDependencySources from Parse...
details: https://anonhg.NetBSD.org/src/rev/c3c2d573a956
branches: trunk
changeset: 984083:c3c2d573a956
user: rillig <rillig%NetBSD.org@localhost>
date: Mon Jun 21 10:29:08 2021 +0000
description:
make: extract ParseDependencySources from ParseDependency
No functional change.
diffstat:
usr.bin/make/parse.c | 112 +++++++++++++++++++++++++++-----------------------
1 files changed, 61 insertions(+), 51 deletions(-)
diffs (147 lines):
diff -r d5db33e4777c -r c3c2d573a956 usr.bin/make/parse.c
--- a/usr.bin/make/parse.c Mon Jun 21 08:40:44 2021 +0000
+++ b/usr.bin/make/parse.c Mon Jun 21 10:29:08 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.557 2021/04/04 11:56:43 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.558 2021/06/21 10:29:08 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -109,7 +109,7 @@
#include "pathnames.h"
/* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.557 2021/04/04 11:56:43 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.558 2021/06/21 10:29:08 rillig Exp $");
/* types and constants */
@@ -1303,6 +1303,15 @@
Dir_SetPATH();
}
+/*
+ * Several special targets take different actions if present with no
+ * sources:
+ * a .SUFFIXES line with no sources clears out all old suffixes
+ * a .PRECIOUS line makes all targets precious
+ * a .IGNORE line ignores errors for all targets
+ * a .SILENT line creates silence when making all targets
+ * a .PATH removes all directories from the search path(s).
+ */
static void
ParseDependencySourcesEmpty(ParseSpecial specType, SearchPathList *paths)
{
@@ -1574,6 +1583,55 @@
return true;
}
+/* In a dependency line like 'targets: sources', parse the sources. */
+static void
+ParseDependencySources(char *const line, char *const cp,
+ GNodeType const tOp,
+ ParseSpecial const specType,
+ SearchPathList ** inout_paths)
+{
+ if (line[0] == '\0') {
+ ParseDependencySourcesEmpty(specType, *inout_paths);
+ } else if (specType == SP_MFLAGS) {
+ Main_ParseArgLine(line);
+ /*
+ * Set the initial character to a null-character so the loop
+ * to get sources won't get anything.
+ */
+ *line = '\0';
+ } else if (specType == SP_SHELL) {
+ if (!Job_ParseShell(line)) {
+ Parse_Error(PARSE_FATAL,
+ "improper shell specification");
+ return;
+ }
+ *line = '\0';
+ } else if (specType == SP_NOTPARALLEL || specType == SP_SINGLESHELL ||
+ specType == SP_DELETE_ON_ERROR) {
+ *line = '\0';
+ }
+
+ /* Now go for the sources. */
+ if (specType == SP_SUFFIXES || specType == SP_PATH ||
+ specType == SP_INCLUDES || specType == SP_LIBS ||
+ specType == SP_NULL || specType == SP_OBJDIR) {
+ ParseDependencySourcesSpecial(line, cp, specType,
+ *inout_paths);
+ if (*inout_paths != NULL) {
+ Lst_Free(*inout_paths);
+ *inout_paths = NULL;
+ }
+ if (specType == SP_PATH)
+ Dir_SetPATH();
+ } else {
+ assert(*inout_paths == NULL);
+ if (!ParseDependencySourcesMundane(line, cp, specType, tOp))
+ return;
+ }
+
+ FindMainTarget();
+}
+
/*
* Parse a dependency line consisting of targets, followed by a dependency
* operator, optionally followed by sources.
@@ -1665,55 +1723,7 @@
pp_skip_whitespace(&cp);
line = cp; /* XXX: 'line' is an inappropriate name */
- /*
- * Several special targets take different actions if present with no
- * sources:
- * a .SUFFIXES line with no sources clears out all old suffixes
- * a .PRECIOUS line makes all targets precious
- * a .IGNORE line ignores errors for all targets
- * a .SILENT line creates silence when making all targets
- * a .PATH removes all directories from the search path(s).
- */
- if (line[0] == '\0') {
- ParseDependencySourcesEmpty(specType, paths);
- } else if (specType == SP_MFLAGS) {
- /*
- * Call on functions in main.c to deal with these arguments and
- * set the initial character to a null-character so the loop to
- * get sources won't get anything
- */
- Main_ParseArgLine(line);
- *line = '\0';
- } else if (specType == SP_SHELL) {
- if (!Job_ParseShell(line)) {
- Parse_Error(PARSE_FATAL,
- "improper shell specification");
- goto out;
- }
- *line = '\0';
- } else if (specType == SP_NOTPARALLEL || specType == SP_SINGLESHELL ||
- specType == SP_DELETE_ON_ERROR) {
- *line = '\0';
- }
-
- /* Now go for the sources. */
- if (specType == SP_SUFFIXES || specType == SP_PATH ||
- specType == SP_INCLUDES || specType == SP_LIBS ||
- specType == SP_NULL || specType == SP_OBJDIR) {
- ParseDependencySourcesSpecial(line, cp, specType, paths);
- if (paths != NULL) {
- Lst_Free(paths);
- paths = NULL;
- }
- if (specType == SP_PATH)
- Dir_SetPATH();
- } else {
- assert(paths == NULL);
- if (!ParseDependencySourcesMundane(line, cp, specType, tOp))
- goto out;
- }
-
- FindMainTarget();
+ ParseDependencySources(line, cp, tOp, specType, &paths);
out:
if (paths != NULL)
Home |
Main Index |
Thread Index |
Old Index