From ffc1c5aca0495f88be4faa6423cb26b0d4c393b5 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Wed, 13 Dec 2017 17:36:35 +0100
Subject: [PATCH] CONFIG: add additional modules/ directory and Module
 namespace

- any code placed here should provide Allwmake and Allwclean scripts
  and normally have compilation targets into FOAM_APPBIN, FOAM_LIBBIN

  Since there is no standardize places for sources or applications,
  a simultaneous build of a module's doxygen documentation requires
  a minor bit of manual effort. Add (via symlink) the sources into
  the modules/doc/ directory to have them included in the normal
  OpenFOAM doxygen documentation generation.

  A makelink.example file is provided there as an example.
---
 .gitmodules                       |  3 +++
 Allwmake                          |  8 ++++++++
 doc/Doxygen/Doxyfile              |  3 ++-
 modules/README.md                 | 15 +++++++++++++++
 modules/cfmesh                    |  1 +
 modules/doc/Allwclean             |  7 +++++++
 modules/doc/Allwmake              |  7 +++++++
 modules/doc/makelink.example      | 11 +++++++++++
 src/OpenFOAM/global/foamVersion.H |  4 +++-
 9 files changed, 57 insertions(+), 2 deletions(-)
 create mode 100644 .gitmodules
 create mode 100644 modules/README.md
 create mode 160000 modules/cfmesh
 create mode 100755 modules/doc/Allwclean
 create mode 100755 modules/doc/Allwmake
 create mode 100755 modules/doc/makelink.example

diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000000..ee2b053a213
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "cfmesh"]
+	path = modules/cfmesh
+	url = https://develop.openfoam.com/Community/integration-cfmesh.git
diff --git a/Allwmake b/Allwmake
index b9cfa95a5eb..6c7cc3d95c8 100755
--- a/Allwmake
+++ b/Allwmake
@@ -43,6 +43,14 @@ echo "Compile OpenFOAM applications"
 echo
 applications/Allwmake $targetType $*
 
+# Additional components/modules
+if [ -d "$WM_PROJECT_DIR/modules" ]
+then
+(
+    cd $WM_PROJECT_DIR/modules 2>/dev/null && wmake -all
+)
+fi
+
 # Some summary information
 echo
 date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
diff --git a/doc/Doxygen/Doxyfile b/doc/Doxygen/Doxyfile
index a0321938063..1a3ceffdd3a 100644
--- a/doc/Doxygen/Doxyfile
+++ b/doc/Doxygen/Doxyfile
@@ -769,7 +769,8 @@ WARN_LOGFILE           =
 #INPUT                  = $(WM_PROJECT_DIR)/src/OpenFOAM/global
 INPUT                  = $(WM_PROJECT_DIR)/src \
                          $(WM_PROJECT_DIR)/applications/utilities \
-                         $(WM_PROJECT_DIR)/applications/solvers
+                         $(WM_PROJECT_DIR)/applications/solvers \
+                         $(WM_PROJECT_DIR)/modules/doc
 
 #For testing only
 #INPUT                  = $(WM_PROJECT_DIR)/src/OpenFOAM/global \
diff --git a/modules/README.md b/modules/README.md
new file mode 100644
index 00000000000..246fac8696b
--- /dev/null
+++ b/modules/README.md
@@ -0,0 +1,15 @@
+OpenFOAM Modules
+================
+
+This directory is a location to place additional OpenFOAM components
+or tools and have them built as part of the normal OpenFOAM build
+process. It is assumed that each subdirectory contain an appropriate
+Allwmake file, and that they should in all likelihood also build into
+`$FOAM_APPBIN` and `$FOAM_LIBBIN` instead of
+`$FOAM_USER_APPBIN` and `$FOAM_USER_LIBBIN`.
+
+These additional components may be added as git submodules, by script
+or by hand.
+
+To build the doxygen information for the components, it is also
+necessary to link the directories to the doc/ subdirectory.
diff --git a/modules/cfmesh b/modules/cfmesh
new file mode 160000
index 00000000000..3b91ceb0bb6
--- /dev/null
+++ b/modules/cfmesh
@@ -0,0 +1 @@
+Subproject commit 3b91ceb0bb65ceb23b2735fe52305336be7e0aac
diff --git a/modules/doc/Allwclean b/modules/doc/Allwclean
new file mode 100755
index 00000000000..0835147d186
--- /dev/null
+++ b/modules/doc/Allwclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Dummy for "wclean -all"
+# Returns true so it does look like an error
+
+echo "skip wclean for modules doxygen directory"
+
+#------------------------------------------------------------------------------
diff --git a/modules/doc/Allwmake b/modules/doc/Allwmake
new file mode 100755
index 00000000000..4a2fa737655
--- /dev/null
+++ b/modules/doc/Allwmake
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Dummy for "wmake -all"
+# Returns true so it does look like an error
+
+echo "skip wmake target for modules doxygen directory"
+
+#------------------------------------------------------------------------------
diff --git a/modules/doc/makelink.example b/modules/doc/makelink.example
new file mode 100755
index 00000000000..78c5956bbc1
--- /dev/null
+++ b/modules/doc/makelink.example
@@ -0,0 +1,11 @@
+#!/bin/sh
+cd ${0%/*} || exit 1
+
+# Manually create doxygen links for module documentation
+
+for dir in cfmesh/meshLibrary
+do
+    [ -d "../$dir" ] && ln -svf ../$dir ${dir##*/}
+done
+
+#------------------------------------------------------------------------------
diff --git a/src/OpenFOAM/global/foamVersion.H b/src/OpenFOAM/global/foamVersion.H
index 3b5d9fcb465..b93ffd37904 100644
--- a/src/OpenFOAM/global/foamVersion.H
+++ b/src/OpenFOAM/global/foamVersion.H
@@ -27,7 +27,6 @@ Namespace
 Description
     Namespace for OpenFOAM
 
-
 Global
     Foam::FOAMversion
 
@@ -67,6 +66,9 @@ namespace Foam
     extern const char* const FOAMversion;
     extern const char* const FOAMbuild;
     extern const std::string FOAMbuildArch;
+
+    //- Additional OpenFOAM modules
+    namespace Module {}
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-- 
GitLab