Files
openfoam/wmake/scripts/sysFunctions
Mark Olesen 9065346a05 ENH: additional handling of questionable bad FOAM_EXT_LIBBIN values
- if FOAM_EXT_LIBBIN is unset and some scripts set this to /usr/lib*
  as a fallback (eg, to avoid an undefined value) this will cause a
  system library to be found before appropriate *_ARCH_PATH entry.

  This was noticed during a scotch compilation without third-party:
  resulting in the system library (/usr/lib64/libscotch.so) to be found
  instead of the SCOTCH_ARCH_PATH location
  (/usr/lib64/mpi/gcc/openmpi/lib64/).

  Simply changing the search order doesn't work for use, since we wish
  to retain a preference for any dynamic libraries discovered in a
  real FOAM_EXT_LIBBIN.

  Circumvent these issues by only taking libraries from
  FOAM_EXT_LIBBIN if it also points to a location within ThirdParty.
2018-11-27 12:23:11 +01:00

132 lines
3.0 KiB
Bash

#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2018 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# sysFunctions
#
# Description
# General system helper functions
#
# Functions provided
# isDarwin
# isNone
# isSystem
# isAbsdir, hasAbsdir
# findFirstFile
# thirdExtLib
#
# Variables provided
# extLiba
# extLibso
#
#------------------------------------------------------------------------------
if [ -z "$WMAKE_SCRIPTS_SYSFUNCTIONS" ]
then
# Load once, but do not rely on this variable elsewhere
WMAKE_SCRIPTS_SYSFUNCTIONS=loaded
# Static library extension. Default=.a
extLiba=".a"
# Shared library extension. Default=.so
case "$(uname -s 2>/dev/null)" in
Darwin)
extLibso=".dylib"
;;
*)
extLibso=".so"
;;
esac
# True if OS is Darwin.
# Uses libso extension to cache the value
# (instead of calling 'uname -s' each time)
isDarwin()
{
test "$extLibso" = ".dylib"
}
# True if '$1' begins with '/'
isAbsdir()
{
test "$1" = "/${1#/}"
}
# True if '$1' begins with '/' and also exists as a directory
hasAbsdir()
{
test "$1" = "/${1#/}" -a -d "$1"
}
# True if '$1' is an empty string or matches "*-none".
# Eg,
# if isNone "$KAHIP_ARCH_PATH" ...
isNone()
{
test -z "$1" -o "${1##*-}" = none
}
# True if '$1' matches "*-system"
# Eg,
# if isSystem "$BOOST_ARCH_PATH"
isSystem()
{
test "${1##*-}" = system
}
# Check for the existence of any of the files
# On success, echoes the file found and returns 0, otherwise returns 2
findFirstFile()
{
local file
for file
do
if [ -f "$file" -a -r "$file" ]
then
echo "$file"
return 0
fi
done
return 2
}
# Check for existence of file in FOAM_EXT_LIBBIN,
# but not if either file or FOAM_EXT_LIBBIN are empty or
# if the FOAM_EXT_LIBBIN is not located in the ThirdParty directory
#
# On success, echoes the resolved file and returns 0, otherwise returns 2
thirdExtLib()
{
local file="$FOAM_EXT_LIBBIN/$1"
if [ -n "$1" ] && \
[ -n "$FOAM_EXT_LIBBIN" ] && \
[ -n "$WM_THIRD_PARTY_DIR" ] && \
[ -f "$file" -a -r "$file" ] && \
[ "${FOAM_EXT_LIBBIN#$WM_THIRD_PARTY_DIR}" != "$FOAM_EXT_LIBBIN" ]
then
echo "$file"
else
return 2
fi
}
fi
#------------------------------------------------------------------------------