mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: improve isolation of shell variables in wmake scripts
- reduces unexpected interactions between various make elements
This commit is contained in:
@ -10,8 +10,7 @@ rm -f $FOAM_LIBBIN/libPVFoamReader* 2>/dev/null
|
||||
rm -rf PVFoamReader/Make # safety: old build location
|
||||
wclean libso vtkPVFoam
|
||||
|
||||
# Cleanup generated files
|
||||
findObjectDir $PWD # remove entire top-level
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
# Cleanup generated files - remove entire top-level
|
||||
removeObjectDir $PWD
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -10,8 +10,7 @@ rm -f $FOAM_LIBBIN/libPVblockMeshReader* 2>/dev/null
|
||||
rm -rf PVblockMeshReader/Make # safety: old build location
|
||||
wclean libso vtkPVblockMesh
|
||||
|
||||
# Cleanup generated files
|
||||
findObjectDir $PWD # remove entire top-level
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
# Cleanup generated files - remove entire top-level
|
||||
removeObjectDir $PWD
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -10,16 +10,17 @@ cd ${0%/*} || exit 1 # Run from this directory
|
||||
# use sentinel file to handle version changes
|
||||
wmakeMpiLib()
|
||||
{
|
||||
local objectsDir
|
||||
for libName
|
||||
do
|
||||
(
|
||||
WM_OPTIONS="$WM_OPTIONS$WM_MPLIB"
|
||||
libDir="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/Pstream/$libName"
|
||||
whichmpi="$libDir/using:$FOAM_MPI"
|
||||
objectsDir="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/Pstream/$libName"
|
||||
whichmpi="$objectsDir/using:$FOAM_MPI"
|
||||
[ -e "$whichmpi" ] || wclean $libName
|
||||
echo "wmake $targetType $libName"
|
||||
wmake $targetType $libName
|
||||
mkdir -p "$libDir"
|
||||
mkdir -p "$objectsDir"
|
||||
touch "$whichmpi"
|
||||
)
|
||||
done
|
||||
|
||||
@ -7,8 +7,7 @@ cd ${0%/*} || exit 1 # Run from this directory
|
||||
# Cleanup library
|
||||
rm -f $FOAM_LIBBIN/librunTimePostProcessing* 2>/dev/null
|
||||
|
||||
# Cleanup generated files
|
||||
findObjectDir $PWD # remove entire top-level
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
# Cleanup generated files - remove entire top-level
|
||||
removeObjectDir $PWD
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -20,8 +20,6 @@ wcleanMpiLib()
|
||||
do
|
||||
(
|
||||
WM_OPTIONS="$WM_OPTIONS$WM_MPLIB"
|
||||
whichmpi="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/parallel/decompose/$libName/using:$FOAM_MPI"
|
||||
whichscotch="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/parallel/decompose/$libName/using:$SCOTCH_VERSION"
|
||||
wclean $libName
|
||||
)
|
||||
done
|
||||
|
||||
@ -126,18 +126,19 @@ hasScotch()
|
||||
wmakeMpiLib()
|
||||
{
|
||||
local decompName="$1"
|
||||
local objectsDir
|
||||
shift
|
||||
for libName
|
||||
do
|
||||
(
|
||||
WM_OPTIONS="$WM_OPTIONS$WM_MPLIB"
|
||||
libDir="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/parallel/decompose/$libName"
|
||||
whichmpi="$libDir/using:$FOAM_MPI"
|
||||
whichdecomp="$libDir/using:$decompName"
|
||||
objectsDir="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/src/parallel/decompose/$libName"
|
||||
whichmpi="$objectsDir/using:$FOAM_MPI"
|
||||
whichdecomp="$objectsDir/using:$decompName"
|
||||
[ -e "$whichmpi" -a -e "$whichdecomp" ] || wclean $libName
|
||||
echo "wmake $targetType $libName"
|
||||
wmake $targetType $libName
|
||||
mkdir -p "$libDir"
|
||||
mkdir -p "$objectsDir"
|
||||
touch "$whichdecomp" "$whichmpi"
|
||||
)
|
||||
done
|
||||
|
||||
@ -44,12 +44,15 @@
|
||||
sameDependency()
|
||||
{
|
||||
local depend="$1"
|
||||
findObjectDir "$2" # Where generated files are stored
|
||||
local sentinel="$objectsDir/ThirdParty"
|
||||
local sourceDir="$2"
|
||||
local objectsDir sentinel prev
|
||||
|
||||
# Where generated files are stored
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
sentinel="$objectsDir/ThirdParty"
|
||||
|
||||
echo $sentinel
|
||||
|
||||
local prev
|
||||
if read -r prev 2>/dev/null < $sentinel
|
||||
then
|
||||
if [ "$prev" = "$depend" ]
|
||||
@ -70,35 +73,24 @@ sameDependency()
|
||||
|
||||
|
||||
# CMake into objectsDir with external dependency
|
||||
# - use sentinel file(s) to handle paraview/vtk version changes
|
||||
cmakeVersioned()
|
||||
{
|
||||
local depend="$1"
|
||||
local sourceDir="$2"
|
||||
findObjectDir $sourceDir # Where are generated files stored?
|
||||
local objectsDir sentinel
|
||||
|
||||
local sentinel
|
||||
# Where generated files are stored
|
||||
objectsDir=$(findObjectDir "$sourceDir") || exit 1 # Fatal
|
||||
|
||||
# version changed
|
||||
sentinel=$(sameDependency "$depend" "$sourceDir") \
|
||||
|| rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
|
||||
test -f "$objectsDir/CMakeCache.txt"
|
||||
retry=$? # Additional attempt if sources moved
|
||||
# Version changed
|
||||
sentinel=$(sameDependency "$depend" "$sourceDir") || \
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
|
||||
mkdir -p $objectsDir && \
|
||||
(
|
||||
cd $objectsDir || exit 1
|
||||
|
||||
cmake $sourceDir || {
|
||||
if [ $retry -eq 0 ]
|
||||
then
|
||||
echo "Removing CMakeCache.txt and attempt again" 1>&2
|
||||
rm -f CMakeCache.txt
|
||||
cmake $sourceDir
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
} && make && { echo "$depend" > $sentinel; }
|
||||
cd $objectsDir && cmake $sourceDir && make \
|
||||
&& echo "$depend" > ${sentinel:-/dev/null}
|
||||
)
|
||||
}
|
||||
|
||||
@ -127,9 +119,11 @@ wmakeLibPv()
|
||||
|
||||
for libName
|
||||
do
|
||||
# version changed
|
||||
sentinel=$(sameDependency "$depend" $libName) || wclean $libName
|
||||
wmake $targetType $libName && { echo "$depend" > $sentinel; }
|
||||
sentinel=$(sameDependency "$depend" $libName) || \
|
||||
wclean $libName
|
||||
|
||||
wmake $targetType $libName \
|
||||
&& echo "$depend" > ${sentinel:-/dev/null}
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
@ -28,6 +28,11 @@
|
||||
# Functions to check wmake environment and find .dep and .o files
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Ensure these variables are always defined
|
||||
MakeDir=Make
|
||||
: ${Script:=wmakeFunctions}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Check environment variables
|
||||
#------------------------------------------------------------------------------
|
||||
@ -52,78 +57,83 @@ checkEnv()
|
||||
# expandPath dirName
|
||||
# expandPath fileName
|
||||
#
|
||||
# Sets:
|
||||
# - exPath
|
||||
# Output:
|
||||
# - the expanded path name
|
||||
expandPath()
|
||||
{
|
||||
if [ -d "$1" ]
|
||||
then
|
||||
exPath=$(cd "$1" && pwd -P)
|
||||
(cd "$1" && pwd -P)
|
||||
elif [ -n "$1" ]
|
||||
then
|
||||
(cd $(dirname "$1") && pwd -P)
|
||||
else
|
||||
exPath=$(cd $(dirname "$1") && pwd -P)
|
||||
pwd -P
|
||||
fi
|
||||
}
|
||||
|
||||
# Find the target directory
|
||||
# Find the target directory, which contains a Make/ directory
|
||||
# search upwards in its parent directories, but stopping
|
||||
# when it hits the project root, home, or the file-system root
|
||||
#
|
||||
# findTarget dirName
|
||||
# findTarget fileName
|
||||
#
|
||||
# Sets:
|
||||
# - dir
|
||||
#
|
||||
# Side-effect variables:
|
||||
# - sets exPath
|
||||
# - sets wmpdir
|
||||
# Output:
|
||||
# - the relative target directory
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_PROJECT_DIR, HOME
|
||||
findTarget()
|
||||
{
|
||||
expandPath $WM_PROJECT_DIR
|
||||
wmpdir=$exPath
|
||||
expandPath $1
|
||||
local wmpdir=$(expandPath $WM_PROJECT_DIR)
|
||||
local home=$(expandPath $HOME)
|
||||
local reldir="${1:-.}"
|
||||
local absdir=$(expandPath $reldir)
|
||||
|
||||
if [ "$exPath" = "$wmpdir" \
|
||||
-o "$exPath" = "$HOME" \
|
||||
-o "$exPath" = "/" \
|
||||
]
|
||||
then
|
||||
echo "$Script error: could not find Make directory" 1>&2
|
||||
exit 1
|
||||
elif [ -d "$1/Make" ]
|
||||
then
|
||||
dir=$1
|
||||
else
|
||||
findTarget "$1/.."
|
||||
fi
|
||||
while [ -n "$absdir" ]
|
||||
do
|
||||
case "$absdir" in
|
||||
($wmpdir | $home | /)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -d "$reldir/Make" ]
|
||||
then
|
||||
echo "$reldir"
|
||||
return 0
|
||||
else
|
||||
# Check parent directory
|
||||
absdir="${absdir%/*}"
|
||||
reldir="$reldir/.."
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Error: no Make directory for $(expandPath $1)" 1>&2
|
||||
echo 1>&2
|
||||
return 1
|
||||
}
|
||||
|
||||
# Change to 'MakeDir'
|
||||
# - 'MakeDir' for its input
|
||||
|
||||
# Change to 'MakeDir' parent
|
||||
# - uses 'MakeDir' for its input
|
||||
#
|
||||
# Sets:
|
||||
# - dir
|
||||
#
|
||||
# Side-effect variables:
|
||||
# - sets exPath
|
||||
# Side-effects:
|
||||
# - unsets targetType
|
||||
cdSource()
|
||||
{
|
||||
if [ ! -d $MakeDir ]
|
||||
local dir
|
||||
if [ ! -d "$MakeDir" ]
|
||||
then
|
||||
echo "$Script: '$MakeDir' directory does not exist in $PWD" 1>&2
|
||||
echo " Searching up directories tree for Make directory" 1>&2
|
||||
|
||||
dir=$(findTarget .) || exit 1 # Fatal
|
||||
cd $dir 2>/dev/null || {
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
unset targetType
|
||||
|
||||
findTarget .
|
||||
|
||||
if [ "$dir" ]
|
||||
then
|
||||
cd $dir 2>/dev/null || {
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
fi
|
||||
|
||||
[ -r $MakeDir/files ] || {
|
||||
@ -137,48 +147,58 @@ cdSource()
|
||||
# findObjectDir dirName
|
||||
# findObjectDir fileName
|
||||
#
|
||||
# Sets:
|
||||
# - dir
|
||||
# - path
|
||||
# - appDir
|
||||
# - objectsDir
|
||||
#
|
||||
# Side-effect variables:
|
||||
# - sets exPath
|
||||
# - sets wmpdir
|
||||
# - set platformPath
|
||||
# Output:
|
||||
# - the objectsDir
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_PROJECT_DIR, WM_OPTIONS
|
||||
findObjectDir()
|
||||
{
|
||||
expandPath $WM_PROJECT_DIR
|
||||
wmpdir=$exPath
|
||||
expandPath $1
|
||||
local wmpdir=$(expandPath $WM_PROJECT_DIR)
|
||||
local exPath=$(expandPath ${1:-.})
|
||||
local objectsDir
|
||||
|
||||
if echo $exPath | grep "$wmpdir" > /dev/null
|
||||
then
|
||||
platformPath=$WM_PROJECT_DIR/platforms/${WM_OPTIONS}
|
||||
objectsDir=$platformPath$(echo $exPath | sed s%$wmpdir%% )
|
||||
else
|
||||
path=$exPath
|
||||
dir=.
|
||||
if [ ! -d Make ]
|
||||
then
|
||||
findTarget .
|
||||
fi
|
||||
appDir=$dir
|
||||
expandPath $appDir/.
|
||||
case "$exPath" in
|
||||
("$wmpdir"/*)
|
||||
local buildPath=$WM_PROJECT_DIR/platforms/${WM_OPTIONS}
|
||||
objectsDir=$buildPath$(echo $exPath | sed s%$wmpdir%% )
|
||||
;;
|
||||
(*)
|
||||
local path=$exPath
|
||||
local appDir=.
|
||||
[ -d Make ] || appDir=$(findTarget .) || exit 1 # Fatal
|
||||
exPath=$(expandPath $appDir/.)
|
||||
objectsDir=$appDir/Make/${WM_OPTIONS}$(echo $path | sed s%$exPath%% )
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "$objectsDir"
|
||||
}
|
||||
|
||||
|
||||
# Find the object directory and remove it
|
||||
# removeObjectDir dirName
|
||||
# removeObjectDir fileName
|
||||
#
|
||||
# Output:
|
||||
# - NONE
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_PROJECT_DIR, WM_OPTIONS
|
||||
removeObjectDir()
|
||||
{
|
||||
local objectsDir=$(findObjectDir ${1:-.})
|
||||
if [ -d "$objectsDir" ]
|
||||
then
|
||||
rm -rf "$objectsDir" > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# depToSource
|
||||
# - uses 'depFile' for its input
|
||||
# depToSource depFile
|
||||
#
|
||||
# Sets:
|
||||
# - sourceFile
|
||||
# Output:
|
||||
# - the sourceFile corresponding to depFile
|
||||
#
|
||||
# Global variables used:
|
||||
# - WM_OPTIONS
|
||||
@ -187,20 +207,24 @@ if [ -n "$BASH_VERSION" ]
|
||||
then
|
||||
depToSource()
|
||||
{
|
||||
sourceFile=${depFile%.dep}
|
||||
local sourceFile=${1%.dep}
|
||||
sourceFile="${sourceFile/platforms\/${WM_OPTIONS}\//}"
|
||||
sourceFile="${sourceFile/Make\/${WM_OPTIONS}\//}"
|
||||
sourceFile="${sourceFile/platforms\/${WM_OPTIONS}${WM_MPLIB}\//}"
|
||||
sourceFile="${sourceFile/Make\/${WM_OPTIONS}\//}"
|
||||
sourceFile="${sourceFile/Make\/${WM_OPTIONS}${WM_MPLIB}\//}"
|
||||
|
||||
echo "$sourceFile"
|
||||
}
|
||||
else
|
||||
depToSource()
|
||||
{
|
||||
sourceFile=$(echo ${depFile%.dep} | \
|
||||
local sourceFile=$(echo ${1%.dep} | \
|
||||
sed -e s%platforms/${WM_OPTIONS}/%% \
|
||||
-e s%Make/${WM_OPTIONS}/%% \
|
||||
-e s%platforms/${WM_OPTIONS}${WM_MPLIB}/%% \
|
||||
-e s%Make/${WM_OPTIONS}/%% \
|
||||
-e s%Make/${WM_OPTIONS}${WM_MPLIB}/%% )
|
||||
|
||||
echo "$sourceFile"
|
||||
}
|
||||
fi
|
||||
|
||||
|
||||
71
wmake/wclean
71
wmake/wclean
@ -47,6 +47,7 @@ Usage: $Script [OPTION] [dir]
|
||||
$Script [OPTION] target [dir [MakeDir]]
|
||||
|
||||
options:
|
||||
-a | -all Same as the 'all' target
|
||||
-s | -silent Ignored - for compatibility with wmake
|
||||
-help Print the usage
|
||||
|
||||
@ -67,19 +68,23 @@ USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Parse arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset dir targetType
|
||||
MakeDir=Make
|
||||
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case "$1" in
|
||||
-h | -help)
|
||||
usage
|
||||
;;
|
||||
-a | -all | all)
|
||||
targetType=all
|
||||
;;
|
||||
-s | -silent) # Ignored - for compatibility with wmake
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
usage "unknown option: '$1'"
|
||||
@ -88,16 +93,14 @@ do
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Check arguments and change to the directory in which to run wclean
|
||||
# Check arguments and change to the directory in which to run wclean.
|
||||
# The variables 'targetType' and 'MakeDir' are considered global
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset dir targetType
|
||||
MakeDir=Make
|
||||
|
||||
if [ $# -ge 1 ]
|
||||
then
|
||||
if [ -d "$1" ]
|
||||
@ -132,7 +135,7 @@ fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# If target not specified search up the directory tree for the Make
|
||||
# sub-directory, check the existance of the 'files' file and clean there if
|
||||
# sub-directory, check the existence of the 'files' file and clean there if
|
||||
# present
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
@ -159,12 +162,11 @@ then
|
||||
# Second pass: clean up object directories with WM_PROJECT_DIR that don't
|
||||
# have respective source code folders, along with the respective binaries
|
||||
|
||||
expandPath $PWD
|
||||
if [ "$exPath" = "$WM_PROJECT_DIR" ]
|
||||
if [ "$(expandPath $PWD)" = "$WM_PROJECT_DIR" ]
|
||||
then
|
||||
findObjectDir $PWD
|
||||
objectsDir=$(findObjectDir $PWD) || exit 1 # Fatal
|
||||
|
||||
if [ -d $objectsDir ]
|
||||
if [ -d "$objectsDir" ]
|
||||
then
|
||||
echo " Removing redundant object directories in $objectsDir"
|
||||
|
||||
@ -173,7 +175,7 @@ then
|
||||
do
|
||||
# Hack'ish way of getting the original source code path
|
||||
depFile=$(dirname $variablesFile)
|
||||
depToSource $depFile
|
||||
sourceFile=$(depToSource $depFile)
|
||||
|
||||
# Check if the original source code directory exists
|
||||
if [ ! -r "$sourceFile" ]
|
||||
@ -227,43 +229,40 @@ then
|
||||
then
|
||||
./Allclean
|
||||
exit $?
|
||||
else
|
||||
# For all the sub-directories containing a 'Make' directory
|
||||
for dir in `find . \( -type d -a -name Make \)`
|
||||
do
|
||||
dir=${dir%/Make} # Parent directory - trim /Make from the end
|
||||
|
||||
# If Allwclean exists execute otherwise wclean
|
||||
if [ -e "$dir/Allwclean" ]
|
||||
then
|
||||
$dir/Allwclean
|
||||
else
|
||||
$0 $dir
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
# targetType is not needed beyond this point
|
||||
unset targetType
|
||||
# For all sub-directories containing a 'Make' directory
|
||||
for dir in $(find . -type d -name Make)
|
||||
do
|
||||
dir=${dir%/*} # Parent directory containing the Make directory
|
||||
|
||||
# Use Allwclean if it exists, otherwise wclean
|
||||
if [ -e "$dir/Allwclean" ]
|
||||
then
|
||||
$dir/Allwclean
|
||||
else
|
||||
$0 $dir
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Clean the 'Make' directory if present
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
if [ -d $MakeDir ]
|
||||
if [ -d "$MakeDir" ]
|
||||
then
|
||||
objectsDir=$MakeDir/$WM_OPTIONS
|
||||
if [ $(echo $PWD | grep "$WM_PROJECT_DIR") ]
|
||||
then
|
||||
case "$PWD" in
|
||||
("$WM_PROJECT_DIR"/*)
|
||||
buildPath=$WM_PROJECT_DIR/platforms/${WM_OPTIONS}
|
||||
objectsDir=$buildPath$(echo $PWD | sed s%$WM_PROJECT_DIR%%)
|
||||
fi
|
||||
objectsDir=$buildPath$(echo $PWD | sed s%$WM_PROJECT_DIR%% )
|
||||
;;
|
||||
esac
|
||||
rm -rf $objectsDir 2>/dev/null
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Remove the lnInclude directory if present
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -103,10 +103,10 @@ else
|
||||
[ -n "$platform" ] || continue
|
||||
fi
|
||||
|
||||
if [ -d platforms/${platform} ]
|
||||
if [ -d "platforms/$platform" ]
|
||||
then
|
||||
echo "Cleaning platform $platform"
|
||||
rm -rf platforms/${platform}*
|
||||
rm -rf "platforms/$platform"*
|
||||
else
|
||||
echo "Platform $platform not built"
|
||||
fi
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
# \\ / O peration |
|
||||
# \\ / A nd | Copyright (C) 2014-2015 OpenFOAM Foundation
|
||||
# \\/ M anipulation |
|
||||
# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
|
||||
#-------------------------------------------------------------------------------
|
||||
# License
|
||||
# This file is part of OpenFOAM.
|
||||
@ -105,8 +105,7 @@ fi
|
||||
# and echo path for the dep file corresponding to the specified source file
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
findObjectDir $sourceFile
|
||||
echo "$objectsDir/${sourceFile##*/}.dep"
|
||||
echo "$(findObjectDir $sourceFile)/${sourceFile##*/}.dep"
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
|
||||
14
wmake/wmake
14
wmake/wmake
@ -239,7 +239,8 @@ fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Check arguments and change to the directory in which to run wmake
|
||||
# Check arguments and change to the directory in which to run wmake.
|
||||
# The variables 'targetType' and 'MakeDir' are considered global
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset dir targetType
|
||||
@ -352,7 +353,7 @@ fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Search up the directory tree for the Make sub-directory,
|
||||
# check the existance of the 'files' file and build there if present
|
||||
# check the existence of the 'files' file and build there if present
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
cdSource
|
||||
@ -387,11 +388,12 @@ fi
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
objectsDir=$MakeDir/$WM_OPTIONS
|
||||
if [ $(echo $PWD | grep "$WM_PROJECT_DIR") ]
|
||||
then
|
||||
case "$PWD" in
|
||||
("$WM_PROJECT_DIR"/*)
|
||||
buildPath=$WM_PROJECT_DIR/platforms/${WM_OPTIONS}
|
||||
objectsDir=$buildPath$(echo $PWD | sed s%$WM_PROJECT_DIR%%)
|
||||
fi
|
||||
objectsDir=$buildPath$(echo $PWD | sed s%$WM_PROJECT_DIR%% )
|
||||
;;
|
||||
esac
|
||||
|
||||
(
|
||||
unset MAKEFLAGS
|
||||
|
||||
19
wmake/wrmdep
19
wmake/wrmdep
@ -141,7 +141,7 @@ files)
|
||||
# Remove the selected .dep files from the object tree
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
findObjectDir .
|
||||
objectsDir=$(findObjectDir .) || exit 1 # Fatal
|
||||
|
||||
# With the -a/-all option replace the current platform with a wildcard
|
||||
if [ "$all" = all ]
|
||||
@ -152,14 +152,15 @@ files)
|
||||
if [ "$#" -eq 0 ]
|
||||
then
|
||||
echo "removing all .dep files ..."
|
||||
find $objectsDir -name '*.dep' -print | xargs -t rm 2>/dev/null
|
||||
find $objectsDir -type f -name '*.dep' -print | xargs -t rm 2>/dev/null
|
||||
else
|
||||
echo "removing .o files corresponding to"
|
||||
echo " $@ ..."
|
||||
for file
|
||||
do
|
||||
find $objectsDir -name '*.dep' -exec grep -q "$file" '{}' \; \
|
||||
-exec rm '{}' \; -print
|
||||
find $objectsDir -type f -name '*.dep' \
|
||||
-exec grep -q "$file" '{}' \; \
|
||||
-exec rm '{}' \; -print
|
||||
done
|
||||
fi
|
||||
;;
|
||||
@ -172,9 +173,9 @@ oldFolders)
|
||||
|
||||
for checkDir
|
||||
do
|
||||
findObjectDir $checkDir
|
||||
objectsDir=$(findObjectDir $checkDir)
|
||||
|
||||
if [ -d $objectsDir ]
|
||||
if [ -d "$objectsDir" ]
|
||||
then
|
||||
echo " searching: $objectsDir"
|
||||
else
|
||||
@ -182,9 +183,9 @@ oldFolders)
|
||||
continue
|
||||
fi
|
||||
|
||||
find $objectsDir -name '*.dep' -print | while read depFile
|
||||
find $objectsDir -type f -name '*.dep' -print | while read depFile
|
||||
do
|
||||
depToSource $depFile
|
||||
sourceFile=$(depToSource $depFile)
|
||||
|
||||
# Check C++ or Flex source file exists
|
||||
if [ ! -r "$sourceFile" ]
|
||||
@ -204,7 +205,7 @@ updateMode)
|
||||
fi
|
||||
|
||||
echo "Removing dep files corresponding to source files that no longer exist..."
|
||||
fileNameList=$(find -L src applications -name '*.[CHL]' -type l)
|
||||
fileNameList=$(find -L src applications -type l -name '*.[CHL]')
|
||||
|
||||
for filePathAndName in $fileNameList
|
||||
do
|
||||
|
||||
10
wmake/wrmo
10
wmake/wrmo
@ -62,7 +62,7 @@ USAGE
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Default to processing only the current platform
|
||||
unset all
|
||||
unset platform
|
||||
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
@ -72,7 +72,7 @@ do
|
||||
;;
|
||||
# All platforms
|
||||
-a | -all | all)
|
||||
all=all
|
||||
platform=all
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
@ -92,10 +92,10 @@ checkEnv
|
||||
# Remove the selected .o files from the object tree
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
findObjectDir .
|
||||
objectsDir=$(findObjectDir .) || exit 1 # Fatal
|
||||
|
||||
# With the -a/-all option replace the current platform with a wildcard
|
||||
if [ "$all" = all ]
|
||||
if [ "$platform" = all ]
|
||||
then
|
||||
objectsDir=$(echo $objectsDir | sed s%$WM_OPTIONS%*% )
|
||||
fi
|
||||
@ -103,7 +103,7 @@ fi
|
||||
if [ "$#" -eq 0 ]
|
||||
then
|
||||
echo "removing all .o files ..."
|
||||
find $objectsDir -name '*.o' -print | xargs -t rm 2>/dev/null
|
||||
find $objectsDir -type f -name '*.o' -print | xargs -t rm 2>/dev/null
|
||||
else
|
||||
echo "removing .o files corresponding to"
|
||||
echo " $@ ..."
|
||||
|
||||
Reference in New Issue
Block a user