From 997f1713cbd4cb23d2ea07fafbc7dc7f839b7dcf Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Sat, 12 Nov 2016 22:01:44 +0000
Subject: [PATCH] wmake: Update '-s' option to print the files processed
 without the rules

Based on patch contributed by Alexey Matveichev
Resolves feature request http://bugs.openfoam.org/view.php?id=2328
---
 wmake/makefiles/general       | 28 +++++++++++++++++-----------
 wmake/rules/General/bison     |  6 ++++--
 wmake/rules/General/btyacc    |  3 ++-
 wmake/rules/General/btyacc++  |  3 ++-
 wmake/rules/General/byacc     |  3 ++-
 wmake/rules/General/flex      |  3 ++-
 wmake/rules/General/flex++    |  3 ++-
 wmake/rules/General/moc       |  5 +++--
 wmake/rules/General/transform | 18 ++++++++++++++++--
 wmake/src/Makefile            | 12 ++++++------
 wmake/src/wmkdep.l            | 18 ++++++++++++++++--
 wmake/wmake                   |  4 ++--
 wmake/wmakeCollect            | 13 ++++++++++++-
 wmake/wmakeLnInclude          |  7 +++++--
 14 files changed, 91 insertions(+), 35 deletions(-)

diff --git a/wmake/makefiles/general b/wmake/makefiles/general
index b7f49358a17..7921ee0add0 100644
--- a/wmake/makefiles/general
+++ b/wmake/makefiles/general
@@ -130,16 +130,18 @@ LIB_HEADER_DIRS = \
 
 $(EXE): $(OBJECTS)
 	@$(WM_SCRIPTS)/makeTargetDir $(EXE)
-	$(LINKEXE) $(OBJECTS) -L$(LIB_PLATFORMS) \
+	$(call QUIET_MESSAGE, "    ld: $(notdir $(EXE))")
+	$E $(LINKEXE) $(OBJECTS) -L$(LIB_PLATFORMS) \
 	    $(EXE_LIBS) $(PROJECT_LIBS) $(SYS_LIBS) \
 	    $(LINK_LIBS) $(GLIBS) -o $(EXE)
 
 exe:    $(SEXE)
-	@echo \'$(SEXE)\' is up to date.
+	@echo "->> $(SEXE)"
 
 $(SEXE):$(OBJECTS)
 	@$(WM_SCRIPTS)/makeTargetDir $(SEXE)
-	$(LINKEXE) $(OBJECTS) $(EXE_LIBS) \
+	$(call QUIET_MESSAGE, "    ld: $(notdir $(SEXE))")
+	$E $(LINKEXE) $(OBJECTS) $(EXE_LIBS) \
 	    $(SYS_LIBS) $(LINK_LIBS) $(GLIBS) -o $(SEXE)
 
 
@@ -150,29 +152,33 @@ $(SEXE):$(OBJECTS)
 objects: $(OBJECTS)
 
 libso:  $(LIB).$(SO)
-	@echo \'$(LIB).$(SO)\' is up to date.
+	@echo "->> $(LIB).$(SO)"
 
 $(LIB).$(SO): $(OBJECTS)
 	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
-	$(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \
+	$(call QUIET_MESSAGE, "    ld: $(notdir $(LIB)).$(SO)")
+	$E $(LINKLIBSO) $(OBJECTS) -L$(LIB_PLATFORMS) \
 	    $(LIB_LIBS) $(GLIB_LIBS) -o $(LIB).$(SO)
 
 lib:    $(LIB).a
-	@echo \'$(LIB).a\' is up to date.
+	@echo "->> $(LIB).a"
 
 $(LIB).a: $(OBJECTS)
 	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
 	@rm -f $(LIB).a
-	$(AR) $(ARFLAGS) $(LIB).a $(OBJECTS)
-	$(RANLIB) $(LIB).a
+	$(call QUIET_MESSAGE, "    ar: $(notdir $(LIB))")
+	$E $(AR) $(ARFLAGS) $(LIB).a $(OBJECTS)
+	$(call QUIET_MESSAGE, "    ranlib: $(notdir $(LIB))")
+	$E $(RANLIB) $(LIB).a
 
 libo:   $(LIB).o
-	@echo \'$(LIB).o\' is up to date.
+	@echo "->> $(LIB).o"
 
 $(LIB).o: $(OBJECTS)
 	@$(WM_SCRIPTS)/makeTargetDir $(LIB)
 	@rm -f $(LIB).o
-	$(LD) -r -o $(LIB).o $(OBJECTS)
+	$(call QUIET_MESSAGE, "    ld: $(notdir $(LIB)).o")
+	$E $(LD) -r -o $(LIB).o $(OBJECTS)
 
 
 #------------------------------------------------------------------------------
@@ -205,4 +211,4 @@ ifeq ($(findstring lnInclude,$(MAKECMDGOALS))$(findstring updatedep,$(MAKECMDGOA
 endif
 
 
-#------------------------------------------------------------------------------
+#----------------------------- vim: set ft=make: ------------------------------
diff --git a/wmake/rules/General/bison b/wmake/rules/General/bison
index 4811b0ec1ca..85ce618209a 100644
--- a/wmake/rules/General/bison
+++ b/wmake/rules/General/bison
@@ -1,11 +1,13 @@
 SUFFIXES += .y .Y
 
-ytoo = $(WM_SCHEDULER) bison -v -d -y $< $(AND) \
+ytoo = $E $(call QUIET_MESSAGE, "    bison: $(<F)) \
+    $(WM_SCHEDULER) bison -v -d -y $< $(AND) \
     mv y.tab.c $(@D)/$(<F).c $(AND) \
     mv y.tab.h $(@D)/$(<F).h $(AND) \
     $(cc) $(cFLAGS) -c  $(@D)/$(<F).c -o $@
 
-Ytoo = $(WM_SCHEDULER) bison -v -d -y $< $(AND) \
+Ytoo = $E $(call QUIET_MESSAGE, "    bison: $(<F)) \
+    $(WM_SCHEDULER) bison -v -d -y $< $(AND) \
     mv y.tab.c $(@D)/$(<F).C $(AND) \
     mv y.tab.h $(@D)/$(<F).H $(AND) \
     $(CC) $(c++FLAGS) -c  $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/btyacc b/wmake/rules/General/btyacc
index 90124ebd458..9886c38d53a 100644
--- a/wmake/rules/General/btyacc
+++ b/wmake/rules/General/btyacc
@@ -1,6 +1,7 @@
 SUFFIXES += .y
 
-ytoo = $(WM_SCHEDULER) btyacc -v -d $(SKELETON) $< $(AND) \
+ytoo = $E $(call QUIET_MESSAGE, "    btyacc: $(<F)") \
+    $(WM_SCHEDULER) btyacc -v -d $(SKELETON) $< $(AND) \
     mv y_tab.c $(@D)/$(<F).C $(AND) \
     mv y_tab.h $(@D)/$(<F).H $(AND) \
     $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/btyacc++ b/wmake/rules/General/btyacc++
index 2aa66cc8cb6..632626ad042 100644
--- a/wmake/rules/General/btyacc++
+++ b/wmake/rules/General/btyacc++
@@ -1,6 +1,7 @@
 SUFFIXES += .Y
 
-Ytoo = $(WM_SCHEDULER) btyacc++ -v -d $(SKELETON) $< $(AND) \
+Ytoo = $E $(call QUIET_MESSAGE, "    btyacc++: $(<F)") \
+    $(WM_SCHEDULER) btyacc++ -v -d $(SKELETON) $< $(AND) \
     mv y_tab.c $(@D)/$(<F).C $(AND) \
     mv y_tab.h $(@D)/$(<F).H $(AND) \
     $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/byacc b/wmake/rules/General/byacc
index 177733805c4..bdb044417f2 100644
--- a/wmake/rules/General/byacc
+++ b/wmake/rules/General/byacc
@@ -1,6 +1,7 @@
 SUFFIXES += .y
 
-ytoo = $(WM_SCHEDULER) byacc -v $(YYPREFIX) -d $< $(AND) \
+ytoo = $E $(call QUIET_MESSAGE, "    byacc: $(<F)") \
+    $(WM_SCHEDULER) byacc -v $(YYPREFIX) -d $< $(AND) \
     mv y.tab.c $(@D)/$(<F).C $(AND) \
     mv y.tab.h $(@D)/$(<F).H $(AND) \
     $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/flex b/wmake/rules/General/flex
index 3f2fe373f75..6822775772a 100644
--- a/wmake/rules/General/flex
+++ b/wmake/rules/General/flex
@@ -1,4 +1,5 @@
 SUFFIXES += .l
 
-ltoo = $(WM_SCHEDULER) flex -o $(@D)/$(<F).c $< $(AND) \
+ltoo = $E $(call QUIET_MESSAGE, "    flex: $(<F)") \
+    $(WM_SCHEDULER) flex -o $(@D)/$(<F).c $< $(AND) \
     $(cc) $(cFLAGS) -c  $(@D)/$(<F).c -o $@
diff --git a/wmake/rules/General/flex++ b/wmake/rules/General/flex++
index 4a140628fc3..98dfd2385a3 100644
--- a/wmake/rules/General/flex++
+++ b/wmake/rules/General/flex++
@@ -1,4 +1,5 @@
 SUFFIXES += .L
 
-Ltoo = $(WM_SCHEDULER) flex -+ -o$(@D)/$(<F).C -f $< $(AND) \
+Ltoo = $E $(call QUIET_MESSAGE, "    flex++: $(<F)") \
+    $(WM_SCHEDULER) flex -+ -o$(@D)/$(<F).C -f $< $(AND) \
     $(CC) $(c++FLAGS) $(c++LESSWARN) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/moc b/wmake/rules/General/moc
index 02a075843e0..1ec5cf8906d 100644
--- a/wmake/rules/General/moc
+++ b/wmake/rules/General/moc
@@ -1,4 +1,5 @@
 SUFFIXES += .qt
 
-qttoo = $(WM_SCHEDULER) $(QTDIR)/bin/moc -f $< -o $(@D)/$(<F).C $(AND) \
-    $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
+qttoo = $E $(call QUIET_MESSAGE, "    moc: $(<F)") \
+       $(WM_SCHEDULER) $(QTDIR)/bin/moc -f $< -o $(@D)/$(<F).C $(AND) \
+       $(CC) $(c++FLAGS) -c $(@D)/$(<F).C -o $@
diff --git a/wmake/rules/General/transform b/wmake/rules/General/transform
index 3fa0152040e..205368f3056 100644
--- a/wmake/rules/General/transform
+++ b/wmake/rules/General/transform
@@ -1,15 +1,29 @@
 #-------------------------------*- makefile -*---------------------------------
 
+ifneq ("$(WM_QUIET)","")
+    E=@
+    define QUIET_MESSAGE
+        @echo $1 ;
+    endef
+    QUIET_OP=-s
+else
+    E=
+    define QUIET_MESSAGE
+    endef
+    QUIET_OP=
+endif
+
 define DEFINE_TRANSFORM
 $(OBJECTS_DIR)/%.o : %$1
-	$$($(subst .,,$(1))too)
+	$(call QUIET_MESSAGE, "    $(subst .,,$(1))too: $(value <F)")
+	$E $$($(subst .,,$(1))too)
 endef
 
 $(foreach s,$(SUFFIXES),$(eval $(call DEFINE_TRANSFORM,$(s))))
 
 $(OBJECTS_DIR)/%.dep : %
 	@$(WM_SCRIPTS)/makeTargetDir $@
-	@$(WMAKE_BIN)/wmkdep -I$(*D) $(LIB_HEADER_DIRS) $< | \
+	@$(WMAKE_BIN)/wmkdep $(QUIET_OP) -I$(*D) $(LIB_HEADER_DIRS) $< | \
 		sed -e 's,^$(WM_PROJECT_DIR)/,$$(WM_PROJECT_DIR)/,' \
 			-e 's,^$(WM_THIRD_PARTY_DIR)/,$$(WM_THIRD_PARTY_DIR)/,' > $@
 
diff --git a/wmake/src/Makefile b/wmake/src/Makefile
index f14baad937e..c24ac811f3d 100644
--- a/wmake/src/Makefile
+++ b/wmake/src/Makefile
@@ -60,18 +60,18 @@ include $(GENERAL_RULES)/general
 all:  $(WMAKE_BIN)/dirToString $(WMAKE_BIN)/wmkdep
 
 clean:
-	rm -f $(WMAKE_BIN)/* 2>/dev/null
-
+	@E rm -f $(WMAKE_BIN)/* 2>/dev/null
 
 $(WMAKE_BIN)/dirToString: dirToString.c
 	@mkdir -p $(WMAKE_BIN)
-	$(cc) $(cFLAGS) dirToString.c -o $(WMAKE_BIN)/dirToString
-
+	$(call QUIET_MESSAGE, "    compile: $<")
+	$E $(cc) $(cFLAGS) dirToString.c -o $(WMAKE_BIN)/dirToString
 
 $(WMAKE_BIN)/wmkdep: wmkdep.l
 	@mkdir -p $(WMAKE_BIN)
-	flex wmkdep.l
-	$(cc) $(cFLAGS) lex.yy.c -o $(WMAKE_BIN)/wmkdep
+	$(call QUIET_MESSAGE, "   lex: $<")
+	$E flex wmkdep.l; \
+	$E $(cc) $(cFLAGS) lex.yy.c -o $(WMAKE_BIN)/wmkdep
 	@rm -f lex.yy.c 2>/dev/null
 
 
diff --git a/wmake/src/wmkdep.l b/wmake/src/wmkdep.l
index a98a5972787..81bede85699 100644
--- a/wmake/src/wmkdep.l
+++ b/wmake/src/wmkdep.l
@@ -47,6 +47,7 @@ Usage
 #include <sys/types.h>
 #include <dirent.h>
 #include <errno.h>
+#include <libgen.h>
 
 void nextFile(const char* fileName);
 void importFile(const char* fileName);
@@ -145,7 +146,7 @@ const char* bufferPaths[FILE_STACK_SIZE];
 int main(int argc, char* argv[])
 {
     char *basePos, *dotPos;
-    int i;
+    int i, silent;
 
     if (argc == 1)
     {
@@ -154,7 +155,20 @@ int main(int argc, char* argv[])
     }
 
     sourceFile = strdup(argv[argc-1]);
-    fprintf(stderr, "Making dependency list for source file %s\n", sourceFile);
+    silent = (strncmp(argv[1], "-s", 2) == 0);
+    if (silent)
+    {
+        fprintf(stderr, "    wmkdep: %s\n", basename(sourceFile));
+    }
+    else
+    {
+        fprintf
+        (
+            stderr,
+            "Making dependency list for source file %s\n",
+            sourceFile
+        );
+    }
 
 
     if ((basePos = strrchr(sourceFile, '/')) == NULL)
diff --git a/wmake/wmake b/wmake/wmake
index ebf50cd4ba4..989af9fe729 100755
--- a/wmake/wmake
+++ b/wmake/wmake
@@ -67,7 +67,7 @@ Usage: $Script [OPTION] [dir]
        $Script [OPTION] target [dir [MakeDir]]
 
 options:
-  -s | -silent      'silent' mode (does not echo commands)
+  -s | -silent      Quiet mode (does not echo commands)
   -a | -all         wmake all sub-directories, running Allwmake if present
   -q | -queue       wmakeQueue all sub-directories, running Allwmake if present
   -k or -non-stop   Compile without stopping when errors occur
@@ -138,7 +138,7 @@ do
             usage
             ;;
         -s | -silent)
-            make="$make -s"
+            export WM_QUIET=1
             ;;
         -a | -all | all)
             all="all"
diff --git a/wmake/wmakeCollect b/wmake/wmakeCollect
index 4f1ca4bf4f9..2aaa2c6eef5 100755
--- a/wmake/wmakeCollect
+++ b/wmake/wmakeCollect
@@ -99,6 +99,12 @@ then
 fi
 
 
+if [ -n "$WM_QUIET" ]
+then
+    E="@"
+fi
+
+
 # Collected makefile for this build
 makefile="$WM_COLLECT_DIR.Makefile"
 
@@ -117,6 +123,9 @@ then
     # Make sure directories exist
     mkdir -p $WM_COLLECT_DIR
 
+    # The current source file
+    source="${@: -3:1}"
+
     # The current target
     object="${@: -1:1}"
 
@@ -128,7 +137,9 @@ then
 
     # Add the build rule for the current target
     echo "$object: $makefile" >> $file
-    echo -e "\tcd $PWD && \\" >> $file
+    [ -z "$E" ] ||
+        echo -e "\t@echo \"    compiling: ${source##*/}\"" >> $file
+    echo -e "\t$E cd $PWD && \\" >> $file
     echo -e "\t${@:1:($#-1)} $object" >> $file
     echo >> $file
 else
diff --git a/wmake/wmakeLnInclude b/wmake/wmakeLnInclude
index a9195b96286..3db3802de4c 100755
--- a/wmake/wmakeLnInclude
+++ b/wmake/wmakeLnInclude
@@ -138,9 +138,12 @@ fi
 
 cd $incDir || exit 1
 
-[ "$silentOpt" = true ] || {
+if [ "$silentOpt" = true -o -n "$WM_QUIET" ]
+then
+    echo "    ln: $incDir" 1>&2
+else
     echo "$Script: linking include files to $incDir" 1>&2
-}
+fi
 
 
 #------------------------------------------------------------------------------
-- 
GitLab