mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: improve handling of ThirdParty packages
- generalize some of the library extensions (.so vs .dylib).
Provide as wmake 'sysFunctions'
- added note about unsupported/incomplete system support
- centralize detection of ThirdParty packages into wmake/ subdirectory
by providing a series of scripts in the spirit of GNU autoconfig.
For example,
have_boost, have_readline, have_scotch, ...
Each of the `have_<package>` scripts will generally provide the
following type of functions:
have_<package> # detection
no_<package> # reset
echo_<package> # echoing
and the following type of variables:
HAVE_<package> # unset or 'true'
<package>_ARCH_PATH # root for <package>
<package>_INC_DIR # include directory for <package>
<package>_LIB_DIR # library directory for <package>
This simplifies the calling scripts:
if have_metis
then
wmake metisDecomp
fi
As well as reducing clutter in the corresponding Make/options:
EXE_INC = \
-I$(METIS_INC_DIR) \
-I../decompositionMethods/lnInclude
LIB_LIBS = \
-L$(METIS_LIB_DIR) -lmetis
Any additional modifications (platform-specific or for an external build
system) can now be made centrally.
This commit is contained in:
110
wmake/scripts/sysFunctions
Normal file
110
wmake/scripts/sysFunctions
Normal file
@ -0,0 +1,110 @@
|
||||
#----------------------------------*-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
|
||||
#
|
||||
# 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
|
||||
}
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user