From e7fc198592428e74a6b9e63a744d8f9e0a5d3f38 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Mon, 16 May 2016 12:21:57 +0100
Subject: [PATCH] Allwmake: improved '-update' option to handle out-of-date
 '.dep' files Patch contributed by Bruno Santos Resolves bug-report
 http://bugs.openfoam.org/view.php?id=2091

---
 wmake/makefiles/files                |  2 +-
 wmake/makefiles/general              | 10 ++++++----
 wmake/scripts/AllwmakeParseArguments |  3 +++
 wmake/wmake                          | 21 +++++++++++++++++++++
 4 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/wmake/makefiles/files b/wmake/makefiles/files
index 521d9341ad3..c17179eaaad 100644
--- a/wmake/makefiles/files
+++ b/wmake/makefiles/files
@@ -47,7 +47,7 @@ SFILES          = $(OBJECTS_DIR)/sourceFiles
 
 
 #------------------------------------------------------------------------------
-# Declare dependecy of all make system files on FILES
+# Declare dependency of all make system files on FILES
 # Causes all derived files to be remade if any are changed or missing
 #------------------------------------------------------------------------------
 
diff --git a/wmake/makefiles/general b/wmake/makefiles/general
index 580e96c7b2e..b9a4f997257 100644
--- a/wmake/makefiles/general
+++ b/wmake/makefiles/general
@@ -184,7 +184,7 @@ lnInclude: $(MAKE_DIR)/files $(MAKE_DIR)/options
 
 
 #------------------------------------------------------------------------------
-# Declare all qbject files depend on $(OBJECTS_DIR)/options
+# Declare all object files depend on $(OBJECTS_DIR)/options
 #------------------------------------------------------------------------------
 
 $(OBJECTS) : $(OBJECTS_DIR)/options
@@ -192,13 +192,15 @@ $(foreach S,$(SOURCE),$(eval $(OBJECTS_DIR)/$(basename $S).o : $(OBJECTS_DIR)/$S
 
 
 #------------------------------------------------------------------------------
-# Set depedency rule and include dependency lists
+# Set dependency rule and include dependency lists
 #------------------------------------------------------------------------------
 
-.PHONY: dep
+.PHONY: dep updatedep
 dep: $(DEPENDENCIES)
 
-ifeq ($(findstring lnInclude,$(MAKECMDGOALS)),)
+updatedep: dep
+
+ifeq ($(findstring lnInclude,$(MAKECMDGOALS))$(findstring updatedep,$(MAKECMDGOALS)),)
 -include $(DEPENDENCIES)
 endif
 
diff --git a/wmake/scripts/AllwmakeParseArguments b/wmake/scripts/AllwmakeParseArguments
index 433efafd52d..941ad649285 100644
--- a/wmake/scripts/AllwmakeParseArguments
+++ b/wmake/scripts/AllwmakeParseArguments
@@ -127,6 +127,9 @@ do
         -update)
             wrmdep -update
             wmakeLnIncludeAll
+
+            # Set WM_UPDATE_DEPENDENCIES, so that wmake will pick up on it
+            export WM_UPDATE_DEPENDENCIES=yes
             ;;
         # Generate documentation
         doc)
diff --git a/wmake/wmake b/wmake/wmake
index c09088b99ff..821c5bbf22c 100755
--- a/wmake/wmake
+++ b/wmake/wmake
@@ -82,6 +82,7 @@ or a special target:
   libo              Compile statically linked lib (.o)
   libso             Compile dynamically linked lib (.so)
   dep               Compile lnInclude and dependencies only
+  updatedep         Compile dependencies only (in case of broken dependencies)
 
 USAGE
     exit 1
@@ -378,6 +379,26 @@ case "$targetType" in
 esac
 
 
+#------------------------------------------------------------------------------
+# When WM_UPDATE_DEPENDENCIES is set, use forced dependency files update
+#------------------------------------------------------------------------------
+
+if [ -n "$WM_UPDATE_DEPENDENCIES" ]
+then
+
+    $make -f $WM_DIR/makefiles/general MAKE_DIR=$MakeDir \
+        OBJECTS_DIR=$objectsDir updatedep
+    makeExitCode=$?
+
+    if [ $makeExitCode -ne 0 ]
+    then
+        exit $makeExitCode
+    fi
+
+    unset makeExitCode
+fi
+
+
 #------------------------------------------------------------------------------
 # Make the dependency files or object files and link
 #------------------------------------------------------------------------------
-- 
GitLab