File: wcleanObjects

package info (click to toggle)
openfoam 1912.200626-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 238,956 kB
  • sloc: cpp: 1,159,641; sh: 15,902; ansic: 5,195; lex: 660; xml: 387; python: 282; awk: 212; makefile: 103; sed: 88; csh: 3
file content (175 lines) | stat: -rwxr-xr-x 4,597 bytes parent folder | download | duplicates (2)
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

#------------------------------------------------------------------------------