diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000000000000000000000000000000000000..ee2b053a2136c390f7b9a8d09d80e1b6b851d527
--- /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 b9cfa95a5eb6741e5f6d6e9ed1a58c6937c8adad..6c7cc3d95c8cd0ef204a6587825033180c4a4a9a 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 a0321938063a18f489c0b0416b29b43dbce94384..1a3ceffdd3a842bdf539544e18b33d9cee63d992 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 0000000000000000000000000000000000000000..246fac8696b75464ca8381ebb8b1ad6a940a03e7
--- /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 0000000000000000000000000000000000000000..3b91ceb0bb65ceb23b2735fe52305336be7e0aac
--- /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 0000000000000000000000000000000000000000..0835147d1869432457d68896f2eb0180e49107b5
--- /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 0000000000000000000000000000000000000000..4a2fa7376550210de3c5a60c916f44adabdb72f2
--- /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 0000000000000000000000000000000000000000..78c5956bbc17205690daf013b0584a391c767f3e
--- /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 3b5d9fcb465954b755bbf709288cdbcfb15ce34b..b93ffd3790419d157be90a872ee989b878a6dd16 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 {}
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //