Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 May 2000 15:07:14 -0400
From:      Will Andrews <andrews@technologist.com>
To:        FreeBSD Current <current@FreeBSD.org>
Subject:   make(1) patches to bypass quietness prescribed by @-prefixed commands in Makefiles
Message-ID:  <20000514150714.J82488@argon.blackdawn.com>

next in thread | raw e-mail | index | archive | help

--k+w/mQv8wyuph6w0
Content-Type: text/plain; charset=us-ascii

Hi all,

Some time ago I was complaining about how there is no way to force make(1)
to display the commands executed by @-prefixed commands in Makefiles.  So I
went around and talked to a few people and one guy clued me in on how I
would add something like this (sorry, I don't remember the name right now
as this was a few weeks ago..).

This option is useful for people with complex Makefile hierarchies who
cannot simply insert a `@${ECHO} "SOMEVAR = ${SOMEVAR}"` as needed in their
Makefiles or remove all the @'s in their Makefiles. In particular, I would
use this feature to debug ports.

Attached is the patch.  If I can get permission, I'd like to commit this to
code on -current, with a possible MFC in a few weeks (?).  I'd like to hear
any complaints about this code, including any style(9) mistakes, whether
this option would be considered bloat, and whether the variable name
``beLoud'' is appropriate in this context.  ;-)

Thanks,
-- 
Will Andrews <andrews@technologist.com>
GCS/E/S @d- s+:+>+:- a--->+++ C++ UB++++ P+ L- E--- W+++ !N !o ?K w---
?O M+ V-- PS+ PE++ Y+ PGP+>+++ t++ 5 X++ R+ tv+ b++>++++ DI+++ D+ 
G++>+++ e->++++ h! r-->+++ y?

--k+w/mQv8wyuph6w0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="make.diff"

Index: compat.c
===================================================================
RCS file: /extra/cvsroot/src/usr.bin/make/compat.c,v
retrieving revision 1.17
diff -u -r1.17 compat.c
--- compat.c	2000/04/14 06:39:10	1.17
+++ compat.c	2000/05/13 17:38:22
@@ -241,6 +241,8 @@
     while ((*cmd == '@') || (*cmd == '-')) {
 	if (*cmd == '@') {
 	    silent = TRUE;
+	    if (beLoud)
+		    silent = FALSE;
 	} else {
 	    errCheck = FALSE;
 	}
Index: job.c
===================================================================
RCS file: /extra/cvsroot/src/usr.bin/make/job.c,v
retrieving revision 1.17
diff -u -r1.17 job.c
--- job.c	2000/01/17 06:43:40	1.17
+++ job.c	2000/05/13 17:38:12
@@ -556,6 +556,8 @@
     while (*cmd == '@' || *cmd == '-') {
 	if (*cmd == '@') {
 	    shutUp = TRUE;
+	    if (beLoud)
+		    shutUp = FALSE;
 	} else {
 	    errOff = TRUE;
 	}
Index: main.c
===================================================================
RCS file: /extra/cvsroot/src/usr.bin/make/main.c,v
retrieving revision 1.35
diff -u -r1.35 main.c
--- main.c	1999/11/23 10:35:24	1.35
+++ main.c	2000/05/13 17:47:35
@@ -138,6 +138,7 @@
 Boolean			beVerbose;	/* -v flag */
 Boolean			oldVars;	/* variable substitution style */
 Boolean			checkEnvFirst;	/* -e flag */
+Boolean			beLoud;		/* -l flag */
 Lst			envFirstVars;	/* (-E) vars to override from env */
 static Boolean		jobsRunning;	/* TRUE if the jobs might be running */
 
@@ -175,9 +176,9 @@
 
 	optind = 1;	/* since we're called more than once */
 #ifdef REMOTE
-# define OPTFLAGS "BD:E:I:L:PSV:d:ef:ij:km:nqrstv"
+# define OPTFLAGS "BD:E:I:L:PSV:d:ef:ij:klm:nqrstv"
 #else
-# define OPTFLAGS "BD:E:I:PSV:d:ef:ij:km:nqrstv"
+# define OPTFLAGS "BD:E:I:PSV:d:ef:ij:klm:nqrstv"
 #endif
 rearg:	while((c = getopt(argc, argv, OPTFLAGS)) != -1) {
 		switch(c) {
@@ -322,6 +323,10 @@
 		case 'k':
 			keepgoing = TRUE;
 			Var_Append(MAKEFLAGS, "-k", VAR_GLOBAL);
+			break;
+		case 'l':
+			beLoud = TRUE;
+			Var_Append(MAKEFLAGS, "-l", VAR_GLOBAL);
 			break;
 		case 'm':
 			Dir_AddDir(sysIncPath, optarg);
Index: make.h
===================================================================
RCS file: /extra/cvsroot/src/usr.bin/make/make.h,v
retrieving revision 1.12
diff -u -r1.12 make.h
--- make.h	1999/09/11 13:17:35	1.12
+++ make.h	2000/05/13 17:41:09
@@ -322,6 +322,8 @@
 
 extern Boolean	checkEnvFirst;	/* TRUE if environment should be searched for
 				 * all variables before the global context */
+extern Boolean	beLoud;		/* Force all commands to be outputted; ignores
+				 * @-prefixes, etc. */
 extern Lst	envFirstVars;	/* List of specific variables for which the
 				 * environment should be searched before the
 				 * global context */

--k+w/mQv8wyuph6w0--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000514150714.J82488>