COMP: improve robustness of cmake (vtk) builds when directories have moved

This commit is contained in:
Mark Olesen
2016-11-28 23:28:21 +01:00
parent b69ab6c895
commit a2bba390f2
3 changed files with 113 additions and 52 deletions

View File

@ -7,29 +7,49 @@ cd ${0%/*} || exit 1 # Run from this directory
# Source the wmake functions # Source the wmake functions
. $WM_DIR/scripts/wmakeFunctions . $WM_DIR/scripts/wmakeFunctions
# ensure CMake gets the correct C/C++ compilers # Ensure CMake gets the correct C/C++ compilers
[ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX" [ -n "$WM_CXX" ] && export CXX="$WM_CXX"
#set -x
if [ -d "$ParaView_DIR" -a -r "$ParaView_DIR" ] # CMake into objectsDir,
# with an additional attempt if (possibly incorrect) CMakeCache.txt existed
doCmake()
{
local sourceDir="$1"
findObjectDir $sourceDir # Where are generated files stored?
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 "$ParaView_DIR" ]
then then
wmake $targetType vtkPVFoam wmake $targetType vtkPVFoam
if [ "$targetType" != "objects" ] if [ "$targetType" != objects ]
then then
sourceDir=$PWD/PVFoamReader doCmake $PWD/PVFoamReader || {
echo
# Where are any generated files stored? echo " WARNING: incomplete build of ParaView OpenFOAM plugin"
findObjectDir $sourceDir
(
mkdir -p $objectsDir \
&& cd $objectsDir \
&& cmake $sourceDir \
&& make
) || {
echo echo
echo "WARNING: incomplete build of ParaView OpenFOAM plugin"
} }
fi fi
fi fi

View File

@ -11,25 +11,45 @@ cd ${0%/*} || exit 1 # Run from this directory
[ -n "$WM_CC" ] && export CC="$WM_CC" [ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX" [ -n "$WM_CXX" ] && export CXX="$WM_CXX"
#set -x
if [ -d "$ParaView_DIR" -a -r "$ParaView_DIR" ] # CMake into objectsDir,
# with an additional attempt if (possibly incorrect) CMakeCache.txt existed
doCmake()
{
local sourceDir="$1"
findObjectDir $sourceDir # Where are generated files stored?
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 "$ParaView_DIR" ]
then then
wmake $targetType vtkPVblockMesh wmake $targetType vtkPVblockMesh
if [ "$targetType" != "objects" ] if [ "$targetType" != objects ]
then then
sourceDir=$PWD/PVblockMeshReader doCmake $PWD/PVblockMeshReader || {
echo
# Where are any generated files stored? echo " WARNING: incomplete build of ParaView BlockMesh plugin"
findObjectDir $sourceDir
(
mkdir -p $objectsDir \
&& cd $objectsDir \
&& cmake $sourceDir \
&& make
) || {
echo echo
echo "WARNING: incomplete build of ParaView BlockMesh plugin"
} }
fi fi
fi fi

View File

@ -4,37 +4,58 @@ cd ${0%/*} || exit 1 # Run from this directory
# Source the wmake functions # Source the wmake functions
. $WM_DIR/scripts/wmakeFunctions . $WM_DIR/scripts/wmakeFunctions
# The source directory # Ensure CMake gets the correct C/C++ compilers
sourceDir=$PWD [ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
# Where are any generated files stored?
findObjectDir $sourceDir
depDir="$objectsDir"
echo echo
echo "======================================================================" echo "======================================================================"
echo "${PWD##*/} : $PWD" echo "${PWD##*/} : $PWD"
echo echo
# CMake into objectsDir,
# with an additional attempt if (possibly incorrect) CMakeCache.txt existed
doCmake()
{
local sourceDir="$1"
findObjectDir $sourceDir # Where are generated files stored?
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" -o -d "$ParaView_DIR" ] if [ -d "$VTK_DIR" -o -d "$ParaView_DIR" ]
then then
# ensure CMake gets the correct C/C++ compilers if [ "$targetType" != objects ]
[ -n "$WM_CC" ] && export CC="$WM_CC"
[ -n "$WM_CXX" ] && export CXX="$WM_CXX"
if type cmake > /dev/null 2>&1
then then
( if type cmake > /dev/null 2>&1
mkdir -p $depDir \ then
&& cd $depDir \ doCmake $PWD || {
&& cmake $sourceDir \ echo
&& make echo " WARNING: incomplete build of VTK-based post-processing"
) || { echo
echo }
echo "WARNING: incomplete build of VTK-based post-processing" else
} echo "WARNING: skipped - needs cmake"
else fi
echo "WARNING: skipped - needs cmake"
fi fi
else else
echo "WARNING: skipped - needs a VTK or a ParaView installation" echo "WARNING: skipped - needs a VTK or a ParaView installation"
@ -45,4 +66,4 @@ fi
echo "======================================================================" echo "======================================================================"
echo echo
# ----------------------------------------------------------------- end-of-file # -----------------------------------------------------------------------------