ENH: robustness improvements for wmakeFunctions
- relocated module-prefix handling to wmakeFunctions
This commit is contained in:
parent
a50047bbcc
commit
9c86b5d722
@ -389,7 +389,7 @@ esac
|
||||
# Final
|
||||
|
||||
# Ensure MPI_ARCH_PATH is marked for export
|
||||
[ -n "$MPI_ARCH_PATH" ] && export MPI_ARCH_PATH
|
||||
[ -n "$MPI_ARCH_PATH" ] && export MPI_ARCH_PATH
|
||||
|
||||
|
||||
# A real (non-dummy) MPI
|
||||
|
@ -86,7 +86,7 @@ USAGE
|
||||
# Parse the arguments and options
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset optDebug optLog optNonRecursive optPrefix optQueue
|
||||
unset optDebug optLog optNonRecursive optQueue
|
||||
unset optWmakeFrontend
|
||||
|
||||
for arg in "$@"
|
||||
@ -112,27 +112,21 @@ do
|
||||
;;
|
||||
|
||||
-module-prefix=* | -prefix=* | --prefix=*)
|
||||
optPrefix="${arg#*=}"
|
||||
case "$optPrefix" in
|
||||
# As per setModulePrefix (wmakeFunctions)
|
||||
export FOAM_MODULE_PREFIX="${arg#*=}"
|
||||
case "$FOAM_MODULE_PREFIX" in
|
||||
# Prefix: user
|
||||
(u | user)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}"
|
||||
;;
|
||||
(u | user) FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: group
|
||||
(g | group)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}"
|
||||
;;
|
||||
(g | group) FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: openfoam (other)
|
||||
(o | openfoam)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}"
|
||||
;;
|
||||
(o | openfoam) FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: custom (absolute or relative)
|
||||
# Prefix: directory (absolute or relative)
|
||||
(*)
|
||||
export FOAM_MODULE_PREFIX="$optPrefix"
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Default (autoconf)
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Fallback (autoconf-like)
|
||||
|
||||
# Require absolute path
|
||||
[ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \
|
||||
@ -140,8 +134,9 @@ do
|
||||
;;
|
||||
esac
|
||||
|
||||
# Avoid potential conflicts
|
||||
unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN
|
||||
echo "Module prefix = $FOAM_MODULE_PREFIX" 1>&2
|
||||
echo "Module prefix = ${FOAM_MODULE_PREFIX:-[]}" 1>&2
|
||||
continue # Handled argument
|
||||
;;
|
||||
|
||||
@ -228,7 +223,7 @@ fi
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
unset optWmakeFrontend
|
||||
unset optNonRecursive optDebug optLog optPrefix optQueue
|
||||
unset optNonRecursive optDebug optLog optQueue
|
||||
unset -f usage
|
||||
|
||||
|
||||
|
@ -26,11 +26,11 @@ MakeDir=Make
|
||||
: "${Script:=wmakeFunctions}"
|
||||
|
||||
# Environment defaults
|
||||
if [ -z "$WM_DIR" ]
|
||||
if [ -z "$WM_DIR" ] && [ -n "$WM_PROJECT_DIR" ]
|
||||
then
|
||||
WM_DIR="$WM_PROJECT_DIR/wmake"
|
||||
export WM_DIR
|
||||
fi
|
||||
[ -n "$WM_DIR" ] && export WM_DIR
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -40,21 +40,55 @@ checkEnv()
|
||||
{
|
||||
local check failed
|
||||
|
||||
# Default for WM_DIR already provided above
|
||||
|
||||
for check in WM_PROJECT_DIR WM_OPTIONS
|
||||
# Possibly redundant check for WM_DIR
|
||||
for check in WM_PROJECT_DIR WM_DIR WM_OPTIONS
|
||||
do
|
||||
eval test -n "\$$check" || failed="$failed $check"
|
||||
done
|
||||
|
||||
[ -z "$failed" ] || {
|
||||
echo "$Script error: Environment variable(s) not set" 1>&2
|
||||
if [ -n "$failed" ]
|
||||
then
|
||||
echo "$Script error: OpenFOAM environment variable(s) not set" 1>&2
|
||||
echo " $failed" 1>&2
|
||||
exit 1
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Set FOAM_MODULE_PREFIX according to
|
||||
# - absolute/relative path
|
||||
# - predefined type (u,user | g,group | o,openfoam)
|
||||
setModulePrefix()
|
||||
{
|
||||
export FOAM_MODULE_PREFIX="$1"
|
||||
case "$FOAM_MODULE_PREFIX" in
|
||||
# Prefix: user
|
||||
(u | user) FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: group
|
||||
(g | group) FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: openfoam (other)
|
||||
(o | openfoam) FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}" ;;
|
||||
|
||||
# Prefix: directory (absolute or relative)
|
||||
(*)
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Fallback (autoconf-like)
|
||||
|
||||
# Require absolute path
|
||||
[ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \
|
||||
FOAM_MODULE_PREFIX="${PWD}/${FOAM_MODULE_PREFIX}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Avoid potential conflicts
|
||||
unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN
|
||||
echo "Module prefix = ${FOAM_MODULE_PREFIX:-[]}" 1>&2
|
||||
}
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# Return the absolute (physical) path for a directory or
|
||||
# for a file's parent directory
|
||||
# expandPath dirName
|
||||
|
71
wmake/wmake
71
wmake/wmake
@ -179,7 +179,15 @@ die()
|
||||
make="make"
|
||||
|
||||
# Print compiler/system information (serial only)
|
||||
printInfo() { make --no-print-directory -f "$WM_DIR"/makefiles/info "$@"; }
|
||||
printInfo() {
|
||||
if [ -f "$WM_DIR"/makefiles/info ]
|
||||
then
|
||||
make --no-print-directory -f "$WM_DIR"/makefiles/info "$@"
|
||||
else
|
||||
echo "OpenFOAM environment not set?" 1>&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -245,36 +253,7 @@ do
|
||||
;;
|
||||
|
||||
-module-prefix=*)
|
||||
optPrefix="${1#*=}"
|
||||
case "$optPrefix" in
|
||||
# Prefix: user
|
||||
(u | user)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_USER_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: group
|
||||
(g | group)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_SITE_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: openfoam (other)
|
||||
(o | openfoam)
|
||||
export FOAM_MODULE_PREFIX="${FOAM_LIBBIN%/*}"
|
||||
;;
|
||||
|
||||
# Prefix: custom (absolute or relative)
|
||||
(*)
|
||||
export FOAM_MODULE_PREFIX="$optPrefix"
|
||||
: "${FOAM_MODULE_PREFIX:=/usr/local}" # Default (autoconf)
|
||||
|
||||
# Require absolute path
|
||||
[ "${FOAM_MODULE_PREFIX#/}" != "${FOAM_MODULE_PREFIX}" ] || \
|
||||
FOAM_MODULE_PREFIX="${PWD}/${FOAM_MODULE_PREFIX}"
|
||||
;;
|
||||
esac
|
||||
|
||||
unset FOAM_MODULE_APPBIN FOAM_MODULE_LIBBIN
|
||||
echo "Module prefix = $FOAM_MODULE_PREFIX" 1>&2
|
||||
setModulePrefix "${1#*=}"
|
||||
;;
|
||||
|
||||
-show-api | -show-ext-so | \
|
||||
@ -461,7 +440,7 @@ else
|
||||
echo "$Script error: could not change to directory '$dir'" 1>&2
|
||||
exit 1
|
||||
}
|
||||
elif [ -f "$MakeDir/files" ]
|
||||
elif [ -f "$MakeDir"/files ]
|
||||
then
|
||||
dir="(${PWD##*/})" # Implicit directory information
|
||||
fi
|
||||
@ -552,7 +531,7 @@ then
|
||||
then
|
||||
# Compile all applications in sub-directories
|
||||
$make ${WM_CONTINUE_ON_ERROR:+-k} \
|
||||
-f $WM_DIR/makefiles/apps \
|
||||
-f "$WM_DIR"/makefiles/apps \
|
||||
TARGET="$targetType" FOAM_APPS="$FOAM_APPS"
|
||||
exitCode=$?
|
||||
fi
|
||||
@ -600,11 +579,11 @@ cdSource
|
||||
# so that the call to make builds the application
|
||||
if [ -z "$targetType" ]
|
||||
then
|
||||
if grep -qe '^ *LIB *=' "$MakeDir/files" 2>/dev/null
|
||||
if grep -qe '^ *LIB *=' "$MakeDir"/files 2>/dev/null
|
||||
then
|
||||
targetType=libso
|
||||
fi
|
||||
elif grep -qe '^ *EXE *=' "$MakeDir/files" 2>/dev/null
|
||||
elif grep -qe '^ *EXE *=' "$MakeDir"/files 2>/dev/null
|
||||
then
|
||||
# Application. Remove any nonsense targetType
|
||||
case "$targetType" in
|
||||
@ -644,11 +623,11 @@ fi
|
||||
|
||||
# Pre-build the $WM_OPTIONS/options file
|
||||
# which is included when building the $WM_OPTIONS/files file
|
||||
$make -s -f $WM_DIR/makefiles/files \
|
||||
$make -s -f "$WM_DIR"/makefiles/files \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir" "$objectsDir"/options
|
||||
|
||||
$make -s -f $WM_DIR/makefiles/files \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir
|
||||
$make -s -f "$WM_DIR"/makefiles/files \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir"
|
||||
)
|
||||
|
||||
|
||||
@ -656,7 +635,7 @@ fi
|
||||
# Check the $objectsDir/sourceFiles file was created successfully
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
[ -r $objectsDir/sourceFiles ] || {
|
||||
[ -r "$objectsDir"/sourceFiles ] || {
|
||||
echo "$Script error: file '$objectsDir/sourceFiles'" \
|
||||
"could not be created in $PWD" 1>&2
|
||||
exit 1
|
||||
@ -670,10 +649,10 @@ fi
|
||||
# For libraries create lnInclude, but only if 'LIB' is declared in 'Make/files'
|
||||
case "$targetType" in
|
||||
(lib | libo | libso | dep)
|
||||
if grep -qe '^ *LIB *=' "$MakeDir/files" 2>/dev/null
|
||||
if grep -qe '^ *LIB *=' "$MakeDir"/files 2>/dev/null
|
||||
then
|
||||
$make -s -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir lnInclude
|
||||
$make -s -f "$WM_DIR"/makefiles/general \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir" lnInclude
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@ -686,8 +665,8 @@ esac
|
||||
if [ -n "$WM_UPDATE_DEPENDENCIES" ]
|
||||
then
|
||||
|
||||
$make -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir updatedep
|
||||
$make -f "$WM_DIR"/makefiles/general \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir" updatedep
|
||||
exitCode="$?"
|
||||
|
||||
[ "$exitCode" -eq 0 ] || exit "$exitCode"
|
||||
@ -698,8 +677,8 @@ fi
|
||||
# Make the dependency files or object files and link
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
exec $make -f $WM_DIR/makefiles/general \
|
||||
MAKE_DIR=$MakeDir OBJECTS_DIR=$objectsDir $targetType
|
||||
exec $make -f "$WM_DIR"/makefiles/general \
|
||||
MAKE_DIR="$MakeDir" OBJECTS_DIR="$objectsDir" $targetType
|
||||
|
||||
exit 0 # clean exit
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user