I frequently find it hard to find warnings/errors when cc compile
lines become really long... as they do in many projects I work on --
it's not uncommon for each cc line to be 300+ characters.  The "make -s"
option is too quiet for my tastes.  This new "make -z" option prints only
"building foobar" for each foobar that is built.

Dean

diff -ru make-3.76.1/filedef.h make-3.76.1.local/filedef.h
--- make-3.76.1/filedef.h	Wed Aug 27 13:31:10 1997
+++ make-3.76.1.local/filedef.h	Tue Jul 21 15:17:30 1998
@@ -80,6 +80,8 @@
     unsigned int dontcare:1;	/* Nonzero if no complaint is to be made if
 				   this target cannot be remade.  */
     unsigned int ignore_vpath:1;/* Nonzero if we threw out VPATH name */
+    unsigned int printed_building:1;/* Nonzero if we already printed
+                                       "building foo" under -z */
   };
 
 /* Number of intermediate files entered.  */
diff -ru make-3.76.1/job.c make-3.76.1.local/job.c
--- make-3.76.1/job.c	Fri Sep  5 14:01:57 1997
+++ make-3.76.1.local/job.c	Tue Jul 21 15:25:32 1998
@@ -781,8 +781,16 @@
      can log the working directory before the command's own error messages
      appear.  */
 
-  message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag))
-	   ? "%s" : (char *) 0, p);
+  if (semi_silent_flag && !(flags & COMMANDS_SILENT) && !silent_flag) {
+    if (!child->file->printed_building) {
+      message (0, "building %s", child->file->name);
+      child->file->printed_building = 1;
+    }
+  }
+  else {
+    message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag))
+	     ? "%s" : (char *) 0, p);
+  }
 
   /* Optimize an empty command.  People use this for timestamp rules,
      and forking a useless shell all the time leads to inefficiency. */
diff -ru make-3.76.1/main.c make-3.76.1.local/main.c
--- make-3.76.1/main.c	Fri Sep 19 06:20:44 1997
+++ make-3.76.1.local/main.c	Tue Jul 21 15:10:10 1998
@@ -115,6 +115,10 @@
 
 int silent_flag;
 
+/* Nonzero means print "building %s" rather than commands (-z). */
+
+int semi_silent_flag;
+
 /* Nonzero means just touch the files
    that would appear to need remaking (-t)  */
 
@@ -322,6 +326,9 @@
     { 3, flag, (char *) &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
 	"warn-undefined-variables", 0,
 	"Warn when an undefined variable is referenced" },
+    { 'z', flag, (char *) &semi_silent_flag, 1, 1, 0, 0, 0,
+	"semi-silent", 0,
+	"Don't echo commands, but do print \"building foo\"" },
     { '\0', }
   };
 
diff -ru make-3.76.1/make.h make-3.76.1.local/make.h
--- make-3.76.1/make.h	Wed Aug 27 13:31:16 1997
+++ make-3.76.1.local/make.h	Tue Jul 21 15:11:33 1998
@@ -406,7 +406,7 @@
 extern char *reading_filename;
 extern unsigned int *reading_lineno_ptr;
 
-extern int just_print_flag, silent_flag, ignore_errors_flag, keep_going_flag;
+extern int just_print_flag, silent_flag, semi_silent_flag, ignore_errors_flag, keep_going_flag;
 extern int debug_flag, print_data_base_flag, question_flag, touch_flag;
 extern int env_overrides, no_builtin_rules_flag, print_version_flag;
 extern int print_directory_flag, warn_undefined_variables_flag;
