From b5f06a38333ff923208be3e6b4a34ac8d52439ea Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@Germany>
Date: Thu, 18 Dec 2008 19:54:13 +0100
Subject: [PATCH] use git describe for header version, but use existing wmake
 framework

---
 src/Allwmake                         |  3 +++
 src/OpenFOAM/db/IOobject/IOobjectI.H | 13 +++++++++++--
 src/OpenFOAM/global/global.C         |  0
 wmake/rules/General/version          | 11 ++++++++++-
 4 files changed, 24 insertions(+), 3 deletions(-)
 delete mode 100644 src/OpenFOAM/global/global.C

diff --git a/src/Allwmake b/src/Allwmake
index 35b8f55b886..c451cff8dd5 100755
--- a/src/Allwmake
+++ b/src/Allwmake
@@ -2,6 +2,9 @@
 cd ${0%/*} || exit 1    # run from this directory
 set -x
 
+# force update of Foam::FOAMversion string (git tag or $WM_PROJECT_VERSION)
+/bin/rm -f OpenFOAM/Make/$WM_OPTIONS/global.? 2>/dev/null
+
 wmakeLnInclude -f OpenFOAM
 wmakeLnInclude -f OSspecific/$WM_OS
 Pstream/Allwmake
diff --git a/src/OpenFOAM/db/IOobject/IOobjectI.H b/src/OpenFOAM/db/IOobject/IOobjectI.H
index 90b78aabfc5..3d8331e0224 100644
--- a/src/OpenFOAM/db/IOobject/IOobjectI.H
+++ b/src/OpenFOAM/db/IOobject/IOobjectI.H
@@ -31,13 +31,22 @@ License
 template<class Stream>
 inline void Foam::IOobject::writeBanner(Stream& os, bool noHint)
 {
-    static bool spacesSet = false;
+    static bool spacesSet(false);
     static char spaces[40];
 
     if (!spacesSet)
     {
         memset(spaces, ' ', 40);
-        spaces[38 - strlen(Foam::FOAMversion)] = '\0';
+
+        size_t len = strlen(Foam::FOAMversion);
+        if (len < 38)
+        {
+            spaces[38 - len] = '\0';
+        }
+        else
+        {
+            spaces[0] = '\0';
+        }
         spacesSet = true;
     }
 
diff --git a/src/OpenFOAM/global/global.C b/src/OpenFOAM/global/global.C
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/wmake/rules/General/version b/wmake/rules/General/version
index 805eb585613..e1f0bc6387a 100644
--- a/wmake/rules/General/version
+++ b/wmake/rules/General/version
@@ -1,6 +1,15 @@
 .SUFFIXES: .Cver
 
-Cvertoo = sed s/WM_PROJECT_VERSION/\"$(WM_PROJECT_VERSION)\"/ $$SOURCE > $*.C ; $(CC) $(c++FLAGS) -c $*.C -o $@ 
+#
+# update version string from git, or just use the WM_PROJECT_VERSION
+# note: could also add --abbrev=32 for maximum resolution
+#
+Cvertoo = \
+    sed s/WM_PROJECT_VERSION/\"$(shell \
+        git describe --always --tags 2>/dev/null || \
+        echo $(WM_PROJECT_VERSION) \
+    )\"/ $$SOURCE > $*.C; \
+    $(CC) $(c++FLAGS) -c $*.C -o $@
 
 .Cver.dep:
 	$(MAKE_DEP)
-- 
GitLab