#!/bin/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-2021 OpenCFD Ltd. #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # makeParaView # # Description # Make and install ParaView. # The ParaView sources should be located under one of these locations: # - $WM_THIRD_PARTY_DIR/ParaView-VERSION # - $WM_THIRD_PARTY_DIR/ParaView-vVERSION # # Note the capitalization of ParaView in the directory names. # # ---------------------------------------------- # NO USER-CONFIGURABLE SETTINGS WITHIN THIS FILE #------------------------------------------------------------------------------ if : # Run from third-party directory then cd "${0%/*}" || exit wmakeCheckPwd "$WM_THIRD_PARTY_DIR" 2>/dev/null || { echo "Error (${0##*/}) : not located in \$WM_THIRD_PARTY_DIR" echo " Check your OpenFOAM environment and installation" exit 1 } fi . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/ThirdPartyFunctions . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/CMakeFunctions . "${WM_THIRD_PARTY_DIR:?}"/etc/tools/ParaViewFunctions #------------------------------------------------------------------------------ # ParaView_VERSION from etc/config.sh file: unset ParaView_VERSION # Purge current values _foamConfig paraview # Avoid any potential conflicts (especially if building from git) if [ -d "$ParaView_DIR" ] then _foamClean PATH "$ParaView_DIR" _foamClean LD_LIBRARY_PATH "$ParaView_DIR" fi unset ParaView_DIR ParaView_INCLUDE_DIR PV_PLUGIN_PATH case "$ParaView_VERSION" in [Pp]*) ParaView_VERSION="${ParaView_VERSION##*-}" # Without "ParaView-" prefix ;; esac ParaView_VERSION="${ParaView_VERSION%%-*}" # Without suffix (eg, -python) # Set initial ParaView_MAJOR based on current value of ParaView_VERSION setParaViewVersion ${ParaView_VERSION:-none} # New rendering backend (starting with paraview 5.0). withGL2=auto # auto-config based on version # Hint for cmake findMPI if [ -d "$MPI_ARCH_PATH" ] then export MPI_HOME="$MPI_ARCH_PATH" fi #------------------------------------------------------------------------------ printVersions() { listPackageVersions paraview; exit 0; } printHelp() { : ${ParaView_VERSION:=none} # some dummy value for usage information cat< with QT version corresponding to \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/qt-VER/bin/qmake -verbose verbose output in Makefiles -version VER specify an alternative version (current: $ParaView_VERSION) -major VER specify an alternative major version for special builds -buildType NAME specify the build type (default: Release) -suffix NAME specify a suffix to distinguish the build -DNAME=VALUE add cmake variable -list List available unpacked source versions -help Display usage help The -no-FEATURE option can be used to forcibly disable these features: -no-gl2 | -no-mesa | -no-mpi | -no-python | -no-qt CMake options start with a capital letter and contain an '='. For example, ${0##*/} BUILD_TESTING=ON to add tests For finer control, the build stages can be selected or deselected individually: -patch -no-patch -config -no-config -make -no-make -install -no-install * Make and install paraview-$ParaView_VERSION located under \$WM_THIRD_PARTY_DIR/ParaView-$ParaView_VERSION -> \$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-$ParaView_VERSION$BUILD_SUFFIX To make a different paraview version, simply specify on the command-line. For example, ./makeParaview 5.4.1 Or change the \$WM_PROJECT_DIR/etc/config.sh/paraview settings. USAGE showDownloadHint paraview exit 0 # Clean exit } #------------------------------------------------------------------------------ exportCompiler minimal # Minimal compiler info for CMake/configure # Various building stages unset runPATCH runCONFIG runMAKE runINSTALL runDEFAULT=true # Parse options while [ "$#" -gt 0 ] do case "$1" in '') ;; # Ignore empty -h | -help*) printHelp;; -list) printVersions;; -gcc) useGcc ;; # paraview version paraview/* | vtk/* | sources/paraview* | sources/vtk* |\ [0-9]* | paraview-[0-9]* | ParaView-[0-9]* | ParaView-v[0-9]*) setParaViewVersion "$(basename "$1")" ;; -D[A-Z]*=* | [A-Z]*=*) # cmake variables addCMakeVariable "$1" ;; -patch) # stage 0: patch sources runPATCH=true unset runDEFAULT ;; -no-patch) runPATCH=false ;; -config) # stage 1: config only runCONFIG=true unset runDEFAULT ;; -no-config) runCONFIG=false ;; -make) # stage 2: make only runMAKE=true unset runDEFAULT ;; -no-make) runMAKE=false ;; -install) # stage 3: install only runINSTALL=true unset runDEFAULT ;; -no-install) runINSTALL=false ;; -rebuild) # shortcut for rebuilding runMAKE=true runINSTALL=true unset runDEFAULT ;; -gl2) withGL2=true ;; -no-gl2) withGL2=false ;; -mesa) withMESA=true ;; -osmesa) echo echo "The -osmesa option is currently ignored" echo # withMESA=true # withOSMESA=true ;; -no-mesa) withMESA=false withOSMESA=false ;; -mesa-prefix) [ "$#" -ge 2 ] || die "'$1' option requires an argument" withMESA=true MESA_INCLUDE="${2%%/}/include" # Could be under (lib64 | lib) MESA_LIBRARY="${2%%/}/lib$WM_COMPILER_LIB_ARCH/libOSMesa.so" [ -f "$MESA_LIBRARY" ] || MESA_LIBRARY="${2%%/}/lib/libOSMesa.so" shift ;; -mesa-include) [ "$#" -ge 2 ] || die "'$1' option requires an argument" withMESA=true MESA_INCLUDE="${2%%/}" shift ;; -mesa-lib) [ "$#" -ge 2 ] || die "'$1' option requires an argument" withMESA=true MESA_LIBRARY="${2%%/}" shift ;; -mpi) withMPI=true ;; -mpi=[0-9]*) # mpi and max mpi processes withMPI=true MPI_MAX_PROCS="${1##*=}" ;; -mpi-home) # mpi with hint [ "$#" -ge 2 ] || die "'$1' option requires an argument" withMPI=true export MPI_HOME="${2%%/}" case "${MPI_HOME:-none}" in (false|none) unset MPI_HOME;; esac shift ;; -no-mpi) withMPI=false ;; -python) withPYTHON=true ;; -python2) withPYTHON=true; withPYTHON3=false ;; -python3) withPYTHON=true; withPYTHON3=true ;; -no-python) withPYTHON=false; unset withPYTHON3 ;; -python-include) [ "$#" -ge 2 ] || die "'$1' option requires an argument" withPYTHON=true PYTHON_INCLUDE="${2%%/}" shift ;; -python-lib) [ "$#" -ge 2 ] || die "'$1' option requires an argument" withPYTHON=true PYTHON_LIBRARY="${2%%/}" shift ;; -cmake) [ "$#" -ge 2 ] || die "'$1' option requires an argument" CMAKE_PATH="${2%%/}" shift ;; -qmake) [ "$#" -ge 2 ] || die "'$1' option requires an argument" QMAKE_PATH="${2%%/}" shift ;; -qt) withQT=true ;; -no-qt) withQT=false ;; -qt-[0-9]*) withQT=true QMAKE_PATH="$installBASE/${1##-}" ;; -verbose) withVERBOSE=true ;; -version) [ "$#" -ge 2 ] || die "'$1' option requires an argument" setParaViewVersion "${2%%/}" shift ;; -major) [ "$#" -ge 2 ] || die "'$1' option requires an argument" export ParaView_MAJOR="$2" shift ;; -buildType) [ "$#" -ge 2 ] || die "'$1' option requires an argument" BUILD_TYPE="$2" shift ;; -suffix) [ "$#" -ge 2 ] || die "'$1' option requires an argument" setBuildSuffix "$2" shift ;; *) die "unknown option/argument: '$1'" ;; esac shift done [ -n "$ParaView_VERSION" ] || die "The paraview-VERSION was not specified" # Nothing to build if _foamIsNone "$ParaView_VERSION" then echo "Using paraview-none (skip ThirdParty build of ParaView)" exit 0 fi # Version-specific adjustments if [ "$withGL2" = auto ] then if [ "${ParaView_VERSION%%.*}" = 4 ] then withGL2=false else withGL2=true fi fi # ParaView-5.7.0 default is python3 if [ "$withPYTHON" = true ] && [ -z "$withPYTHON3" ] then case "${ParaView_VERSION}" in (5.[7-9]* | [6-9]* | [1-9][0-9].*) withPYTHON3=true ;; esac fi if [ "$runDEFAULT" = true ] then : ${runPATCH:=true} : ${runCONFIG:=true} : ${runMAKE:=true} : ${runINSTALL:=true} fi if [ "$withMESA" = true ] then : ${withQT:=false} # No QT unless explicitly requested addCMakeVariable "VTK_USE_X=OFF" # addCMakeVariable "OPENGL_INCLUDE_DIR=IGNORE" # addCMakeVariable "OPENGL_gl_LIBRARY=IGNORE" # addCMakeVariable "OPENGL_xmesa_INCLUDE_DIR=IGNORE" ## seems to be unnecessary => addCMakeVariable "VTK_USE_OFFSCREEN=OFF" fi # Set configure options #~~~~~~~~~~~~~~~~~~~~~~ addGeneral # general settings (version-dependent) addVerbosity # verbose makefiles addMpiSupport # set MPI-specific options addPythonSupport # set Python-specific options addMesaSupport # set MESA-specific options addGL2Support # new rendering backend addQtSupport # add extra Qt support setParaViewDirs # where things are or should be put # Build and install # ~~~~~~~~~~~~~~~~~ cat<