#----------------------------------*-sh-*--------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
#    \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
#     This file is part of OpenFOAM, licensed under GNU General Public License
#     <http://www.gnu.org/licenses/>.
#
# File
#     config.csh/paraview
#     - sourced by OpenFOAM-*/etc/cshrc or via foamPV alias
#
# Description
#     Setup for PARAVIEW (partially cmake, qt too)
#
#     For system-wide cmake:            cmake_version=cmake-system
#     For system-wide qt:               ParaView_QT=qt-system
#
# Note
#     The following env. variables are required for building plugins:
#         ParaView_DIR
#         ParaView_INCLUDE_DIR
#         PV_PLUGIN_PATH
#
#     For central installations not located under ThirdParty, the environment
#     values must be set manually. For example,
#
#         setenv ParaView_DIR /opt/paraview/paraview-5.5.0
#         setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/paraview-5.5
#         setenv PV_PLUGIN_PATH $FOAM_LIBBIN/paraview-5.5
#
#         setenv PATH $ParaView_DIR/bin:${PATH}
#         setenv LD_LIBRARY_PATH $ParaView_DIR/lib:$LD_LIBRARY_PATH
#         unsetenv ParaView_VERSION     # avoid using ThirdParty settings
#
#     In paraview-5.4 and earlier, the libraries were in the sub-directory:
#
#         setenv LD_LIBRARY_PATH $ParaView_DIR/lib/paraview-5.4:$LD_LIBRARY_PATH
#
#------------------------------------------------------------------------------
# USER EDITABLE PART: Changes made here may be lost with the next upgrade

setenv ParaView_VERSION 5.5.2
set    ParaView_QT=qt-system
set cmake_version=cmake-system

# END OF (NORMAL) USER EDITABLE PART
#------------------------------------------------------------------------------
set pv_api=auto         # Either auto or pair of (major.minor) digits

if (! $?ParaView_DIR ) setenv ParaView_DIR
if (! $?WM_COMPILER_LIB_ARCH ) setenv WM_COMPILER_LIB_ARCH

# Compiler-specific location for ThirdParty installations
set archDir="$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER"

# Clean PATH and LD_LIBRARY_PATH
eval `$WM_PROJECT_DIR/bin/foamCleanPath -csh-env=PATH "$ParaView_DIR $archDir/ParaView- $archDir/qt- $archDir/cmake-"`
eval `$WM_PROJECT_DIR/bin/foamCleanPath -csh-env=LD_LIBRARY_PATH "$ParaView_DIR $archDir/ParaView- $archDir/qt-"`

# ThirdParty cmake
set cmake=$archDir/$cmake_version
if ( -r $cmake/bin/cmake ) then
    # _foamAddPath not available when foamPV alias is used
    setenv PATH $cmake/bin:${PATH}
endif

# Evaluate command-line parameters for ParaView
while ( $#argv > 0 )
    switch ($argv[1])
    case ParaView*=*:
        # name=value  -> setenv name value
        eval "setenv $argv[1]:s/=/ /"
        breaksw
    endsw
    shift
end


# Require that ParaView_VERSION has not been unset.
# Avoids conflict with an alternative (non-ThirdParty) installation.
if ( $?ParaView_VERSION ) then

    # Set API to correspond to VERSION
    # pv_api is <digits>.<digits> from ParaView_VERSION
    if (! $?pv_api ) set pv_api=auto
    switch ("$ParaView_VERSION")
    case "$pv_api".*:
        # API and VERSION appear to correspond
        breaksw

    case [0-9]*:
        # Extract API from VERSION
        set pv_api=`echo ${ParaView_VERSION} | \
            sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`
        breaksw
    endsw

    setenv ParaView_DIR $archDir/ParaView-$ParaView_VERSION

    # Set paths if binaries are present
    if ( -r $ParaView_DIR ) then
        setenv PATH ${ParaView_DIR}/bin:${PATH}
        setenv ParaView_INCLUDE_DIR $ParaView_DIR/include/paraview-$pv_api
        setenv PV_PLUGIN_PATH $FOAM_LIBBIN/paraview-$pv_api

        set pvLibDir=${ParaView_DIR}/lib/paraview-$pv_api
        #OBSOLETE? set pvPython=$ParaView_DIR/Utilities/VTKPythonWrapping

        #OBSOLETE? # Python libraries as required
        #OBSOLETE? if ( -r $pvPython ) then
        #OBSOLETE?     if ($?PYTHONPATH) then
        #OBSOLETE?         setenv PYTHONPATH ${PYTHONPATH}:${pvPython}:$pvLibDir
        #OBSOLETE?     else
        #OBSOLETE?         setenv PYTHONPATH ${pvPython}:$pvLibDir
        #OBSOLETE?     endif
        #OBSOLETE? endif

        # QT libraries as required
        # Set Qt5_DIR to root directory.
        # Another possibility: "qtpaths --qt-version"

        set qtDir="$archDir/$ParaView_QT"
        if ( -d "$qtDir" ) then
            switch ($ParaView_QT)
            case *-5*:
                setenv Qt5_DIR $qtDir
                breaksw
            endsw
            foreach qtLibDir ("$qtDir/lib$WM_COMPILER_LIB_ARCH" "$qtDir/lib")
                if ( -d "$qtLibDir" ) then
                    setenv LD_LIBRARY_PATH "${qtLibDir}:${LD_LIBRARY_PATH}"
                    break
                endif
            end
        endif

        # ParaView libraries
        # - 5.4 and earlier: lib/paraview-X.X
        # - 5.5 and later:   lib/
        switch ("$pv_api")
        case 5.[0-4]*:
            setenv LD_LIBRARY_PATH $pvLibDir:${LD_LIBRARY_PATH}
            breaksw
        default:
            setenv LD_LIBRARY_PATH ${ParaView_DIR}/lib:${LD_LIBRARY_PATH}
            breaksw
        endsw

        if ($?FOAM_VERBOSE && $?prompt) then
            echo "Using paraview"
            echo "    ParaView_DIR         : $ParaView_DIR"
            echo "    ParaView_INCLUDE_DIR : $ParaView_INCLUDE_DIR"
            echo "    library dir          : $pvLibDir"
            echo "    PV_PLUGIN_PATH       : $PV_PLUGIN_PATH"
        endif
    else
        if ($?FOAM_VERBOSE && $?prompt) then
            echo "No paraview found"
            echo "    ParaView_DIR         : $ParaView_DIR"
        endif

        unsetenv ParaView_INCLUDE_DIR PV_PLUGIN_PATH
        setenv ParaView_DIR   # Defined but empty (used by foamPV alias)
    endif

endif

unset cleaned archDir
unset cmake cmake_version
unset pv_api pvLibDir pvPython qtDir qtLibDir
unsetenv ParaView_VERSION ParaView_QT

#------------------------------------------------------------------------------
