Skip to content
Snippets Groups Projects
have_boost 3.41 KiB
Newer Older
  • Learn to ignore specific revisions
  • #----------------------------------*-sh-*--------------------------------------
    # =========                 |
    # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    #  \\    /   O peration     |
    
    OpenFOAM bot's avatar
    OpenFOAM bot committed
    #   \\  /    A nd           | www.openfoam.com
    
    #    \\/     M anipulation  |
    #------------------------------------------------------------------------------
    
    #     Copyright (C) 2018-2020 OpenCFD Ltd.
    
    OpenFOAM bot's avatar
    OpenFOAM bot committed
    #------------------------------------------------------------------------------
    
    #     This file is part of OpenFOAM, distributed under GPL-3.0-or-later.
    
    #
    # Script
    #     have_boost
    #
    # Description
    
    #     Detection/setup of BOOST
    
    #
    # Requires
    #     BOOST_ARCH_PATH
    #
    # Functions provided
    
    #     have_boost, no_boost, echo_boost, query_boost
    
    #
    # Variables set on success
    #     HAVE_BOOST
    #     BOOST_ARCH_PATH
    #     BOOST_INC_DIR
    #     BOOST_LIB_DIR
    #
    #------------------------------------------------------------------------------
    
    . ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions    # General system functions
    
    
    #------------------------------------------------------------------------------
    
    # Reset variables
    no_boost()
    {
        unset HAVE_BOOST BOOST_INC_DIR BOOST_LIB_DIR
        return 0
    }
    
    
    # Report
    echo_boost()
    {
        echo "boost=${HAVE_BOOST:-false}"
        echo "root=$BOOST_ARCH_PATH"
        echo "include=$BOOST_INC_DIR"
        echo "library=$BOOST_LIB_DIR"
    }
    
    
    
    # Query settings (from CGAL setup)
    query_boost()
    {
        local config="config.sh/CGAL"
        local settings
    
        if settings="$("$WM_PROJECT_DIR"/bin/foamEtcFile -mode=o "$config")"
        then
            . "$settings"
            _process_query boost "$BOOST_ARCH_PATH"
        else
            echo "(no $config settings)" 1>&2
            echo "boost=unknown"
        fi
    }
    
    
    
    # On success, return 0 and export variables
    # -> HAVE_BOOST, BOOST_INC_DIR, BOOST_LIB_DIR
    have_boost()
    {
    
        local prefix header library incName libName settings warn
    
        # warn="==> skip boost"
    
    
        # Setup - from the current environment
    
        # Expected location, include/library names
    
        prefix="$BOOST_ARCH_PATH"
    
        incName="boost/version.hpp"
        libName="libboost_system"
    
        # ----------------------------------
        if isNone "$prefix"
        then
            [ -n "$warn" ] && echo "$warn (disabled)"
            return 1
        elif hasAbsdir "$prefix"
    
            header=$(findFirstFile "$prefix/include/$incName")
            library="$(findExtLib $libName)"
    
        elif isSystem "$prefix"
    
            header=$(findFirstFile "/usr/local/include/$incName" "/usr/include/$incName")
            prefix=$(sysPrefix "$header")
    
        # ----------------------------------
    
        [ -n "$header" ] || {
            [ -n "$warn" ] && echo "$warn (no header)"
            return 2
        }
    
    
        # Library
        [ -n "$library" ] || library=$(findLibrary \
            "$prefix/lib/$libName" \
            "$prefix/lib$WM_COMPILER_LIB_ARCH/$libName" \
        ) || {
    
            [ -n "$warn" ] && echo "$warn (no library)"
    
        # ----------------------------------
    
        header="${header%/*}"   # Strip one-level (include/boost/...)
    
        # OK
    
        export HAVE_BOOST=true
    
        export BOOST_ARCH_PATH="$prefix"
    
        export BOOST_INC_DIR="${header%/*}"     # Basename
        export BOOST_LIB_DIR="${library%/*}"    # Basename
    }
    
    
    # Force reset of old variables
    no_boost
    
    
    # Test/query
    case "$1" in
    -test)
    
        have_boost
        echo_boost
    
        ;;
    -query)
        query_boost
        ;;
    esac
    
    
    #------------------------------------------------------------------------------