#---------------------------------*- sh -*------------------------------------- # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation # Copyright (C) 2016-2023 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/tools/ParaViewFunctions # # Description # ParaView make/install helper functions # To be loaded *after* etc/tools/CMakeFunctions # # Note # Obtaining paths via 'python-config' may not always resolve properly: # # python-config --includes # >> # -I/usr/include/python2.7 -I/usr/include/python2.7 # # python-config --libs # >> # -lpython2.7 -lpthread -ldl -lutil -lm # #------------------------------------------------------------------------------ # Variables referenced by the functions. Initialization at the end of the file. unset CMAKE_VARIABLES unset withVERBOSE unset withMPI MPI_MAX_PROCS unset withQT QT_VERSION QMAKE_PATH unset withMESA MESA_INCLUDE MESA_LIBRARY withOSMESA unset withPYTHON PYTHON_INCLUDE PYTHON_LIBRARY unset withPYTHON3 unset withGL2 BUILD_TYPE=Release # The cmake build type # sourceBASE, buildBASE, installBASE and BUILD_SUFFIX # are defined in tools/ThirdPartyFunctions #------------------------------------------------------------------------------ # # Where things are or should be put # ParaView_VERSION and ParaView_MAJOR should already have been set # # PARAVIEW_SOURCEDIR : location of the original sources # PARAVIEW_BUILDDIR : location of the build # ParaView_DIR : location of the installed program # setParaViewDirs() { set -- "ParaView-$ParaView_VERSION" "ParaView-v$ParaView_VERSION" unset PARAVIEW_SOURCEDIR PARAVIEW_BUILDDIR # search # - ThirdParty/PACKAGE # - ThirdParty/sources/PACKAGE # - ThirdParty/sources/paraview/PACKAGE # - ThirdParty/sources/vtk/PACKAGE for package in "$@" do for check in \ "$package" \ "sources/$package" \ "sources/paraview/$package" \ "sources/vtk/$package" \ ; do if [ -d "$sourceBASE/$check" ] then echo "Found sources: $check" 1>&2 PARAVIEW_SOURCEDIR="$sourceBASE/$check" break 2 fi done done [ -d "$PARAVIEW_SOURCEDIR" ] || { echo "Did not locate ParaView version:" while [ "$#" -ge 1 ]; do echo " $1"; shift; done echo echo "In the directory:" echo " $sourceBASE" echo " \-- sources/paraview" echo " |-- paraview" echo " \\-- vtk" echo echo "abort build" exit 1 } PARAVIEW_BUILDDIR="$buildBASE/ParaView-$ParaView_VERSION$BUILD_SUFFIX" ParaView_DIR="$installBASE/ParaView-$ParaView_VERSION$BUILD_SUFFIX" export GIT_DIR="$PARAVIEW_SOURCEDIR/.git" # Avoid seeing our own git-repo export PARAVIEW_SOURCEDIR PARAVIEW_BUILDDIR ParaView_DIR echo echo "ParaView_DIR=$ParaView_DIR" echo "PARAVIEW_SOURCEDIR=$PARAVIEW_SOURCEDIR" echo "PARAVIEW_BUILDDIR=$PARAVIEW_BUILDDIR" } # # Set ParaView_VERSION and adjust ParaView_MAJOR accordingly # # $1 can contain something something like 4.4.0, paraview-4.4.0, ParaView-4.0.0 # setParaViewVersion() { [ $# -gt 0 ] || { echo "Error: function setParaViewVersion() called without an argument" exit 1 } ParaView_VERSION="${1##*-}" # The major version is "." ParaView_MAJOR=$(echo $ParaView_VERSION | \ sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/') export ParaView_VERSION ParaView_MAJOR } #------------------------------------------------------------------------------ # addCMakeVariable : defined in etc/tools/CMakeFunctions # addVerbosity : defined in etc/tools/CMakeFunctions # # General settings (version-dependent) # addGeneral() { if printf "${ParaView_MAJOR}"'\n%s\n' 5.6 | sort -V -C then # Paraview 5.6 and older addCMakeVariable "BUILD_SHARED_LIBS=ON" else addCMakeVariable "PARAVIEW_BUILD_SHARED_LIBS=ON" fi } # # MPI support for PARAVIEW # addMpiSupport() { if [ "${withMPI:=false}" != true ] then return fi addCMakeVariable "PARAVIEW_USE_MPI=ON" if [ "${MPI_MAX_PROCS:=0}" -gt 1 ] then addCMakeVariable "VTK_MPI_MAX_NUMPROCS=$MPI_MAX_PROCS" fi echo "----" echo "MPI information:" echo " home : $MPI_HOME" } # # Define options for python support # addPythonSupport() { if [ "${withPYTHON:-false}" != true ] then return fi local pythonBin="python" local pythonConfig="python-config" local pythonMajor if [ "$withPYTHON3" = true ] then pythonBin="python3" pythonConfig="python3-config" fi pythonBin=$(which "$pythonBin" 2>/dev/null) || { echo "*** Error: python not found" echo "*** Deactivate python support by not using the -python " echo "*** option" exit 1 } if [ -n "$PYTHON_LIBRARY" ] then # PYTHON_LIBRARY set: [ -e "$PYTHON_LIBRARY" ] || \ echo "*** Error: libpython not found at location specified " \ "by -python-lib : PYTHON_LIBRARY=$PYTHON_LIBRARY" else # Fallback: get PYTHON_LIBRARY from dynamically linked binary PYTHON_LIBRARY=$(ldd "$pythonBin" | \ sed -ne '/libpython/s/^.* => \(.*\) (.*/\1/p') [ -e "$PYTHON_LIBRARY" ] || { echo "*** Error: Unable to determine path to python library." } fi [ -e "$PYTHON_LIBRARY" ] || { echo " Please set the full path to the python library " echo " (including libpython) using the -python-lib option, " echo " or deactivate python support by not using the -python " echo " option" exit 1 } # Guess major from library pythonMajor=$(echo "$PYTHON_LIBRARY" | sed 's/.*libpython\(.*\)\.so.*/\1/') if [ -n "$PYTHON_INCLUDE" ] then # PYTHON_INCLUDE set: [ -d "$PYTHON_INCLUDE" -a -f "$PYTHON_INCLUDE/Python.h" ] || \ echo "*** Error: Python.h not found at location specified " \ "by -python-include : PYTHON_INCLUDE=$PYTHON_INCLUDE" elif pythonConfig=$(which "$pythonConfig" 2>/dev/null) then # Guess from python-config # parse '-I/usr/include/python2.7 -I/usr/include/python2.7' # -> '/usr/include/python2.7' PYTHON_INCLUDE=$("$pythonConfig" --includes | sed -ne 's/^-I\([^ ][^ ]*\).*$/\1/p') else # Fallback to system headers PYTHON_INCLUDE=/usr/include/python$pythonMajor fi [ -d "$PYTHON_INCLUDE" -a -f "$PYTHON_INCLUDE/Python.h" ] || { echo " No python headers found in $PYTHON_INCLUDE/" echo " Please install python headers or deactivate " echo " python support by not using the -python option" exit 1 } if printf "${ParaView_MAJOR}"'\n%s\n' 5.7 | sort -V -C then # Paraview 5.7 and older addCMakeVariable "PARAVIEW_ENABLE_PYTHON=ON" else addCMakeVariable "PARAVIEW_USE_PYTHON=ON" fi addCMakeVariable "PYTHON_INCLUDE_DIRS=$PYTHON_INCLUDE" addCMakeVariable "PYTHON_LIBRARY=$PYTHON_LIBRARY" echo "----" echo "Python information:" echo " executable : $pythonBin" echo " version : $pythonMajor" echo " include path : $PYTHON_INCLUDE" echo " library : $PYTHON_LIBRARY" } # # Define options for mesa support # addMesaSupport() { if [ "${withMESA:=false}" != true ] then return fi if [ -d "$MESA_INCLUDE" ] && [ -f "$MESA_LIBRARY" ] then addCMakeVariable "VTK_OPENGL_HAS_OSMESA=ON" addCMakeVariable "OSMESA_INCLUDE_DIR=$MESA_INCLUDE" addCMakeVariable "OSMESA_LIBRARY=$MESA_LIBRARY" else echo "*** Error: no MESA information found" echo "*** Deactivate MESA support by not using the -mesa option, " echo "*** or set the correct paths for:" echo "*** -mesa-include ($MESA_INCLUDE)" echo "*** -mesa-lib ($MESA_LIBRARY)" exit 1 fi } # # new rendering backend # addGL2Support() { if [ "${withGL2:=false}" = true ] then addCMakeVariable "VTK_RENDERING_BACKEND=OpenGL2" fi } # # Qt 4/5 support # addQtSupport() { QT_VERSION=none : ${withQT:=true} # default is on local qmake qtLib local cmakeVarName="PARAVIEW_USE_QT" if printf "${ParaView_MAJOR}"'\n%s\n' 5.7 | sort -V -C then # Paraview 5.7 and older cmakeVarName="PARAVIEW_BUILD_QT_GUI" fi if [ "$withQT" = false ] then # Explicitly disabled addCMakeVariable "$cmakeVarName=OFF" return fi # Check qmake can be found and handle version differences qmake=$(findQMake) if QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null) then addCMakeVariable "$cmakeVarName=ON" case "$QT_VERSION" in (3.* | 4.[0-4]*) # QT is too old cat </dev/null fi } # # Install the program # installParaView() { cd "$PARAVIEW_BUILDDIR" || exit # Change to build folder echo " Installing ParaView to $ParaView_DIR" make install # System or non-system installation of QT? local qmake qtLib QT_VERSION if qmake=$(findQMake 2>/dev/null) then qtLib=$($qmake -query QT_INSTALL_LIBS) QT_VERSION=$($qmake -query QT_VERSION 2>/dev/null) fi /bin/cat<