-
Mark Olesen authored
- 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
Mark Olesen authored- 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
Allwmake 2.98 KiB
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# 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 vtk/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" | "VTK_DIR=$VTK_DIR")
return 0
;;
(*)
echo "ParaView_DIR or VTK_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 && {
if [ -d "$VTK_DIR" ]
then
echo "VTK_DIR=$VTK_DIR"
elif [ -d "$ParaView_DIR" ]
then
echo "ParaView_DIR=$ParaView_DIR"
else
echo unknown
fi > $sentinel
}
)
}
# -----------------------------------------------------------------------------
echo "======================================================================"
echo "${PWD##*/} : $PWD"
echo
if [ -d "$VTK_DIR" -o -d "$ParaView_DIR" ]
then
if [ "$targetType" != objects ]
then
if type cmake > /dev/null 2>&1
then
doCmake $PWD || {
echo
echo " WARNING: incomplete build of VTK-based post-processing"
echo
}
else
echo "WARNING: skipped - needs cmake"
fi
fi
else
echo "WARNING: skipped - needs a VTK or a ParaView installation"
echo " - For ParaView : export the 'ParaView_DIR' variable"
echo " - For VTK : export the 'VTK_DIR' variable"
fi
echo "======================================================================"
# -----------------------------------------------------------------------------