- use "-pvMAJ.MIN" suffix for similarity with the paraview convention - use sentinel file to ensure clean change of intermediate targets - ensure all library files are being properly removed
113 lines
2.6 KiB
Bash
Executable File
113 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
cd ${0%/*} || exit 1 # Run from this directory
|
|
|
|
# Parse arguments for library compilation
|
|
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
|
|
|
|
# Source the wmake functions
|
|
. $WM_PROJECT_DIR/wmake/scripts/wmakeFunctions
|
|
|
|
# Ensure CMake gets the correct C/C++ compilers
|
|
[ -n "$WM_CC" ] && export CC="$WM_CC"
|
|
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
#
|
|
# Check sentinel file(s) to handle paraview version changes
|
|
#
|
|
versionOk()
|
|
{
|
|
findObjectDir "$1" # Where generated files are stored
|
|
local sentinel="$objectsDir/ThirdParty"
|
|
|
|
echo $sentinel
|
|
|
|
local prev
|
|
if read -r prev 2>/dev/null < $sentinel
|
|
then
|
|
case "$prev" in
|
|
("ParaView_DIR=$ParaView_DIR")
|
|
return 0
|
|
;;
|
|
(*)
|
|
echo "ParaView_DIR changed between builds" 1>&2
|
|
return 1
|
|
;;
|
|
esac
|
|
elif [ -f "$objectsDir/CMakeCache.txt" ]
|
|
then
|
|
echo "previous build was incomplete" 1>&2
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
|
|
# CMake into objectsDir,
|
|
# with an additional attempt if (possibly incorrect) CMakeCache.txt existed
|
|
doCmake()
|
|
{
|
|
local sourceDir="$1"
|
|
findObjectDir $sourceDir # Where are generated files stored?
|
|
|
|
# version changed
|
|
sentinel=$(versionOk $sourceDir) || rm -rf "$objectsDir" > /dev/null 2>&1
|
|
|
|
test -f "$objectsDir/CMakeCache.txt"
|
|
retry=$? # CMakeCache.txt exists, but sources may have moved
|
|
|
|
mkdir -p $objectsDir && \
|
|
(
|
|
cd $objectsDir || exit 1
|
|
|
|
cmake $sourceDir || {
|
|
if [ $retry -eq 0 ]
|
|
then
|
|
echo "Removing CMakeCache.txt and attempt again"
|
|
rm -f CMakeCache.txt
|
|
cmake $sourceDir
|
|
else
|
|
exit 1
|
|
fi
|
|
} && make && {
|
|
echo "ParaView_DIR=$ParaView_DIR" > $sentinel
|
|
}
|
|
)
|
|
}
|
|
|
|
|
|
#
|
|
# Build library - use sentinel file(s) to handle paraview version changes
|
|
#
|
|
wmakeLibPv()
|
|
{
|
|
for libName
|
|
do
|
|
sentinel=$(versionOk $libName) || wclean $libName # version changed
|
|
wmake $targetType $libName && {
|
|
echo "ParaView_DIR=$ParaView_DIR" > $sentinel
|
|
}
|
|
done
|
|
}
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
if [ -d "$ParaView_DIR" ]
|
|
then
|
|
wmakeLibPv vtkPVFoam
|
|
|
|
if [ "$targetType" != objects ]
|
|
then
|
|
doCmake $PWD/PVFoamReader || {
|
|
echo
|
|
echo " WARNING: incomplete build of ParaView OpenFOAM plugin"
|
|
echo
|
|
}
|
|
fi
|
|
fi
|
|
|
|
#------------------------------------------------------------------------------
|