Module Name: src Committed By: sjg Date: Fri Jul 31 20:22:10 UTC 2020
Modified Files: src/usr.bin/make: main.c make.1 make.h parse.c Log Message: Add -dL for LINT When parsing variable assignments other than := and if value contains '$' attempt Var_Subst the same as for :=, if the value does not parse correctly, we get a fatal error including file an line number. This can greatly help with finding the cause of problems. Reviewed by: christos To generate a diff of this commit: cvs rdiff -u -r1.284 -r1.285 src/usr.bin/make/main.c cvs rdiff -u -r1.283 -r1.284 src/usr.bin/make/make.1 cvs rdiff -u -r1.111 -r1.112 src/usr.bin/make/make.h cvs rdiff -u -r1.242 -r1.243 src/usr.bin/make/parse.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/main.c diff -u src/usr.bin/make/main.c:1.284 src/usr.bin/make/main.c:1.285 --- src/usr.bin/make/main.c:1.284 Tue Jul 28 16:42:22 2020 +++ src/usr.bin/make/main.c Fri Jul 31 20:22:10 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.284 2020/07/28 16:42:22 rillig Exp $ */ +/* $NetBSD: main.c,v 1.285 2020/07/31 20:22:10 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,7 +69,7 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: main.c,v 1.284 2020/07/28 16:42:22 rillig Exp $"; +static char rcsid[] = "$NetBSD: main.c,v 1.285 2020/07/31 20:22:10 sjg Exp $"; #else #include <sys/cdefs.h> #ifndef lint @@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: main.c,v 1.284 2020/07/28 16:42:22 rillig Exp $"); +__RCSID("$NetBSD: main.c,v 1.285 2020/07/31 20:22:10 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -244,7 +244,7 @@ parse_debug_options(const char *argvalue for (modules = argvalue; *modules; ++modules) { switch (*modules) { case 'A': - debug = ~0; + debug = ~(0|DEBUG_LINT); break; case 'a': debug |= DEBUG_ARCH; @@ -284,6 +284,9 @@ parse_debug_options(const char *argvalue case 'j': debug |= DEBUG_JOB; break; + case 'L': + debug |= DEBUG_LINT; + break; case 'l': debug |= DEBUG_LOUD; break; Index: src/usr.bin/make/make.1 diff -u src/usr.bin/make/make.1:1.283 src/usr.bin/make/make.1:1.284 --- src/usr.bin/make/make.1:1.283 Sat Jul 18 21:37:38 2020 +++ src/usr.bin/make/make.1 Fri Jul 31 20:22:10 2020 @@ -1,4 +1,4 @@ -.\" $NetBSD: make.1,v 1.283 2020/07/18 21:37:38 sjg Exp $ +.\" $NetBSD: make.1,v 1.284 2020/07/31 20:22:10 sjg Exp $ .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" from: @(#)make.1 8.4 (Berkeley) 3/19/94 .\" -.Dd July 18, 2020 +.Dd July 31, 2020 .Dt MAKE 1 .Os .Sh NAME @@ -170,6 +170,11 @@ Print the input graph before exiting on Print debugging information about hash table operations. .It Ar j Print debugging information about running multiple shells. +.It Ar L +Turn on lint checks. +This will throw errors for variable assignments that do not parse +correctly, at the time of assignment so the file and line number +are available. .It Ar l Print commands in Makefiles regardless of whether or not they are prefixed by .Ql @ Index: src/usr.bin/make/make.h diff -u src/usr.bin/make/make.h:1.111 src/usr.bin/make/make.h:1.112 --- src/usr.bin/make/make.h:1.111 Tue Jul 21 21:13:24 2020 +++ src/usr.bin/make/make.h Fri Jul 31 20:22:10 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: make.h,v 1.111 2020/07/21 21:13:24 rillig Exp $ */ +/* $NetBSD: make.h,v 1.112 2020/07/31 20:22:10 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -474,6 +474,8 @@ extern int debug; #define DEBUG_PARSE 0x40000 #define DEBUG_CWD 0x80000 +#define DEBUG_LINT 0x100000 + #define CONCAT(a,b) a##b #define DEBUG(module) (debug & CONCAT(DEBUG_,module)) Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.242 src/usr.bin/make/parse.c:1.243 --- src/usr.bin/make/parse.c:1.242 Tue Jul 28 19:13:49 2020 +++ src/usr.bin/make/parse.c Fri Jul 31 20:22:10 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.242 2020/07/28 19:13:49 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.243 2020/07/31 20:22:10 sjg Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: parse.c,v 1.242 2020/07/28 19:13:49 rillig Exp $"; +static char rcsid[] = "$NetBSD: parse.c,v 1.243 2020/07/31 20:22:10 sjg Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: parse.c,v 1.242 2020/07/28 19:13:49 rillig Exp $"); +__RCSID("$NetBSD: parse.c,v 1.243 2020/07/31 20:22:10 sjg Exp $"); #endif #endif /* not lint */ #endif @@ -1948,6 +1948,16 @@ Parse_DoVar(char *line, GNode *ctxt) while (isspace((unsigned char)*cp)) cp++; + if (DEBUG(LINT)) { + if (type != VAR_SUBST && strchr(cp, '$') != NULL) { + /* sanity check now */ + char *cp2; + + cp2 = Var_Subst(cp, ctxt, VARE_WANTRES|VARE_ASSIGN); + free(cp2); + } + } + if (type == VAR_APPEND) { Var_Append(line, cp, ctxt); } else if (type == VAR_SUBST) {