Files
openfoam/src/fvAgglomerationMethods/Allwmake
Mark Olesen bfd376a8fa COMP: cleanup linking of MGridGen
- use similar semantics as used for dealing with metis, scotch
2017-04-18 18:46:11 +02:00

91 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Parse arguments for library compilation
. $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments
: ${FOAM_EXT_LIBBIN:=/usr/lib$WM_COMPILER_LIB_ARCH} # Extra safety
export FOAM_EXT_LIBBIN
# Test for mgridgen.
# - return 0 and export MGRIDGEN_ARCH_PATH on success
hasMgridGen()
{
local warning="==> skip mgridgen"
unset MGRIDGEN_ARCH_PATH MGRIDGEN_VERSION
settings=$($WM_PROJECT_DIR/bin/foamEtcFile config.sh/mgridgen) || {
# ignore silently# echo "$warning (no config.sh/mgridgen settings)"
return 1
}
. $settings
if [ -z "$MGRIDGEN_ARCH_PATH" -o "${MGRIDGEN_ARCH_PATH##*-}" = none ]
then
# ignore silently# echo "$warning (not available)"
return 1
fi
# Header
local header=$MGRIDGEN_ARCH_PATH/include/mgridgen.h
[ -f "$header" ] || {
# ignore silently# echo "$warning (no header)"
return 2 # file not found
}
# Library
[ -r $FOAM_EXT_LIBBIN/libMGridGen.so ] || \
[ -r $MGRIDGEN_ARCH_PATH/lib/libmgrid.a ] || \
[ -r $MGRIDGEN_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH/libmgrid.a ] || \
[ "${MGRIDGEN_ARCH_PATH##*-}" = system ] || {
# ignore silently# echo "$warning (missing library)"
return 2
}
# Ensure consistent sizes with OpenFOAM and mgridgen header
# Extract typedef for idxtype, realtype
local label=$(sed -ne \
's/^.*typedef *\([^ ]*\) *idxtype.*/\1/ip' \
"$header")
local scalar=$(sed -ne \
's/^.*typedef *\([^ ]*\) *realtype.*/\1/ip' \
"$header")
: ${label:=unknown}
: ${scalar:=unknown}
case "$WM_LABEL_SIZE:$label" in
(32:int32_t | 32:int | 64:int64_t | 64:long)
export MGRIDGEN_ARCH_PATH
;;
*)
echo "$warning (label='$WM_LABEL_SIZE', mgridgen.h has '$label')"
return 1
;;
esac
case "$WM_PRECISION_OPTION:$scalar" in
(SP:float | DP:double)
export MGRIDGEN_ARCH_PATH
;;
*)
echo "$warning (scalar='$WM_PRECISION_OPTION', mgridgen.h has '$scalar')"
return 1
;;
esac
# OK
echo "mgridgen (label=$label, scalar=$scalar) - $MGRIDGEN_ARCH_PATH"
}
if hasMgridGen
then
wmake $targetType MGridGenGamgAgglomeration
fi
wmake $targetType pairPatchAgglomeration
#------------------------------------------------------------------------------