1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | www.openfoam.com
# \\/ M anipulation |
#------------------------------------------------------------------------------
# Copyright (C) 2017-2018 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# wcleanBuild, wcleanPlatform
#
# Usage
# wcleanBuild <option | platform> [.. <option | platform>]
#
# Description
# Deletes the specified 'build/' object files directories from the
# project top-level 'build/' directory $WM_PROJECT_DIR.
#
# special platforms
# - 'all' removes all platforms.
# - 'compiler' corresponds to $WM_ARCH$WM_COMPILER.
# - 'current' corresponds to $WM_OPTIONS.
#
# You must be in the project or the third-party top-level directory
# to run this script.
#
# When called as wcleanPlatform, the target directory changes to
# 'platforms/ and the 'all' target also cleans up lnInclude dirs and
# tutorials
#
#------------------------------------------------------------------------------
Script="${0##*/}"
targetDir=build # Safe default - override based on script name
case "$Script" in
(*[Pp]latform*)
targetDir=platforms
;;
esac
usage() {
local extraText
if [ "$targetDir" = platforms ]
then
extraText=", lnInclude and clean tutorials"
fi
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat<<USAGE
Usage: ${0##*/} <option | platform> [.. <option | platform>]
options:
-a, -all Same as 'all'
-curr, -current Use \$WM_OPTIONS ($WM_OPTIONS)
-comp, -compiler Use \$WM_ARCH\$WM_COMPILER* ($WM_ARCH$WM_COMPILER)
-compiler=NAME Use \$WM_ARCH<NAME>* ($WM_ARCH<NAME>*)
-h, -help Print the usage
Deletes the specified $targetDir/ object file directories from the project
top-level $targetDir/ directory $WM_PROJECT_DIR.
special platforms:
all Remove all platforms$extraText
compiler $WM_ARCH$WM_COMPILER (ie, \$WM_ARCH\$WM_COMPILER)
current $WM_OPTIONS (ie, \$WM_OPTIONS)
You must be in the project or the third-party top-level directory
to run this script.
USAGE
exit 1
}
# Find -help anywhere
for i
do
case "$i" in (-h | -help*) usage ;; esac
done
#------------------------------------------------------------------------------
# Run from OPENFOAM or THIRDPARTY top-level directory only
wmakeCheckPwd -q "$WM_PROJECT_DIR" 2>/dev/null || \
wmakeCheckPwd -q "$WM_THIRD_PARTY_DIR" 2>/dev/null || \
{
cat<<ERROR
${0##*/}: Error incorrect top-level directory
Not in Project: $WM_PROJECT_DIR
Nor in ThirdParty: $WM_THIRD_PARTY_DIR
ERROR
exit 1
}
if [ "$#" -eq 0 ]
then
usage "No platform specified to clean from $targetDir"
else
echo "$# platform(s) to clean from $targetDir"
echo
fi
for name
do
unset compiler
case "$name" in
-a | -all | all)
echo "all $targetDir/ ..."
rm -rf $targetDir
if [ "$targetDir" = platforms ]
then
wcleanLnIncludeAll .
[ -x tutorials/Allclean ] && tutorials/Allclean
fi
echo
break # Removed everything - can stop now
;;
-curr | -current | current)
name="$WM_OPTIONS"
;;
-comp | -compiler | compiler)
compiler="$WM_COMPILER"
unset name
;;
-compiler=*)
compiler="${name#*=}"
unset name
;;
esac
if [ -n "$compiler" ]
then
name="$WM_ARCH$compiler"
dirs=$(find $targetDir -maxdepth 1 -name "${name}*")
if [ -n "$dirs" ]
then
for name in $dirs
do
echo " '$name'"
rm -rf "$name"
done
echo
else
echo " '$name' - not built or already cleaned"
echo
fi
elif [ -n "$name" ]
then
if [ -d "$targetDir/$name" ]
then
echo " '$name'"
rm -rf "$targetDir/$name"*
echo
else
echo " '$name' - not built or already cleaned"
echo
fi
fi
done
exit 0 # clean exit
#------------------------------------------------------------------------------
|