From ea4936fd4ebda9eec0b3bfe82088f8f38273e1a1 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Tue, 15 Dec 2015 12:12:06 +0000
Subject: [PATCH] wcleanPlatform: Updated version of wcleanMachine and
 wcleanAll

wcleanPlatform is a more general and cleaner version of wcleanMachine
supporting the "-all" option to provide the equivalent of wcleanAll.

Both wcleanMachine and wcleanAll are now deprecated and will be removed
for the next major release.
---
 wmake/wcleanAll      |   6 ++-
 wmake/wcleanMachine  |   5 ++
 wmake/wcleanPlatform | 125 +++++++++++++++++++++++++++++++++++++++++++
 wmake/wmake          |   4 +-
 4 files changed, 137 insertions(+), 3 deletions(-)
 create mode 100755 wmake/wcleanPlatform

diff --git a/wmake/wcleanAll b/wmake/wcleanAll
index e26504b7e05..0a425b7e900 100755
--- a/wmake/wcleanAll
+++ b/wmake/wcleanAll
@@ -26,7 +26,9 @@
 #     wcleanAll
 #
 # Description
-#     search all the directories below the current for the object file
+#     Deprecated: replaced by wcleanPlatform -all
+#
+#     Search all the directories below the current for the object file
 #     directories of all machines and delete them.
 #
 #------------------------------------------------------------------------------
@@ -36,6 +38,8 @@ usage() {
     exec 1>&2
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
     cat<<USAGE
+Deprecated: replaced by wcleanPlatform -all
+
 Usage: $Script
 
     Remove all object and related files
diff --git a/wmake/wcleanMachine b/wmake/wcleanMachine
index 04bf7dd0ed0..1ae2561b45c 100755
--- a/wmake/wcleanMachine
+++ b/wmake/wcleanMachine
@@ -26,6 +26,9 @@
 #     wcleanMachine
 #
 # Description
+#
+#     Deprecated: replaced by wcleanPlatform
+#
 #     Searches the directory tree starting at the current directory for the
 #     object file directories of the specified machine type(s) and deletes them.
 #     If a machine type is not provided the current machine type is assumed.
@@ -40,6 +43,8 @@ usage() {
     exec 1>&2
     while [ "$#" -ge 1 ]; do echo "$1"; shift; done
     cat<<USAGE
+Deprecated: replaced by wcleanPlatform
+
 Usage: $Script machineType [... machineTypeN] [ -current ]
 
   Searches the directory tree starting at the current directory for the
diff --git a/wmake/wcleanPlatform b/wmake/wcleanPlatform
new file mode 100755
index 00000000000..6a60af1930d
--- /dev/null
+++ b/wmake/wcleanPlatform
@@ -0,0 +1,125 @@
+#!/bin/sh
+#------------------------------------------------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+#    \\/     M anipulation  |
+#-------------------------------------------------------------------------------
+# License
+#     This file is part of OpenFOAM.
+#
+#     OpenFOAM is free software: you can redistribute it and/or modify it
+#     under the terms of the GNU General Public License as published by
+#     the Free Software Foundation, either version 3 of the License, or
+#     (at your option) any later version.
+#
+#     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+#     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+#     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+#     for more details.
+#
+#     You should have received a copy of the GNU General Public License
+#     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+#
+# Script
+#     wcleanPlatform
+#
+# Description
+#     Deletes the specified platforms object files directories from the
+#     the project top-level platforms directory $WM_PROJECT_DIR.
+#
+#     You need to be in the project top-level directory to run this script.
+#
+#     If either -current or no platform is specified then the current platform
+#     $WM_OPTIONS is deleted.
+#
+#     If the -all option is specified all platforms and lnInclude directories
+#     are deleted
+#
+#     Usage: wcleanPlatform [ -current | -all ]
+#            wcleanPlatform <platform> [ ... <platformN> ]
+#
+#     -current: clean the current platform
+#     -all: clean all platforms
+#
+#------------------------------------------------------------------------------
+Script=${0##*/}
+
+usage() {
+    exec 1>&2
+    while [ "$#" -ge 1 ]; do echo "$1"; shift; done
+    cat<<USAGE
+Usage: $Script [ -current | -all ]
+       $Script <platform> [ ... <platformN> ]
+
+  Deletes the specified platforms object files directories from the
+  the project top-level platforms directory $WM_PROJECT_DIR.
+
+  You need to be in the project top-level directory to run this script.
+
+  If either -current or no platform is specified then the current platform
+  $WM_OPTIONS is deleted.
+
+  If the -all option is specified all platforms and lnInclude directories
+  are deleted.
+
+USAGE
+    exit 1
+}
+
+# Print help message
+if [ "$1" = "-h" -o "$1" = "-help" ]; then
+    usage
+fi
+
+# Check the script is executed from the project top-level directory
+[ "$PWD" = "$WM_PROJECT_DIR" ] || \
+    usage "Not in the project top-level directory " $WM_PROJECT_DIR
+
+# Get the platforms from the arguments
+platforms="$@"
+
+# If no arguments are provided select the current platform
+if [ "$#" -lt 1 ]; then
+    platforms="-current"
+fi
+
+if [ "$platforms" = "-all" ]; then
+    echo "Removing all platforms/sub-directories"
+    rm -rf platforms/*
+
+    echo "Removing lnInclude directories"
+    find . -depth -type d \( -name lnInclude \) | xargs rm -rf
+
+    tutorials/Allclean
+else
+    # Loop over the platforms specified and delete the object directories
+    for platform in $platforms
+    do
+        if [ "$platform" = "-current" ]
+        then
+            platform="$WM_OPTIONS"
+            echo "Current platform $platform"
+            [ -n "$platform" ] || continue
+        fi
+
+        if [ -d platforms/${platform} ]
+        then
+            echo "Cleaning platform $platform"
+            rm -rf platforms/${platform}*
+        else
+            echo "Platform $platform not built"
+        fi
+    done
+fi
+
+
+#------------------------------------------------------------------------------
+# Cleanup local variables and functions
+#------------------------------------------------------------------------------
+
+unset Script platforms
+
+
+#------------------------------------------------------------------------------
diff --git a/wmake/wmake b/wmake/wmake
index 9dfad12d9f0..2a3c9ed9c76 100755
--- a/wmake/wmake
+++ b/wmake/wmake
@@ -49,8 +49,8 @@
 #         wdep -h
 #
 # See also
-#     wmakeLnInclude, wmakeLnIncludeAll, wdep, wrmdep, wrmo and wrmdepold,
-#     wclean, wcleanMachine, wcleanAll, wcleanLnIncludeAll
+#     wmakeLnInclude, wmakeLnIncludeAll, wdep, wrmdep, wrmo,
+#     wclean, wcleanPlatform, wcleanLnIncludeAll
 #
 #------------------------------------------------------------------------------
 Script=${0##*/}
-- 
GitLab