Files
openfoam/etc/config.sh/settings
Mark Olesen 9e094f1f07 ENH: relocate WM_PROJECT_SITE default (issue #1050)
- was PREFIX/site, now PROJECT/site

  This avoids several issues when installing OpenFOAM in clusters
  without an intermediate OpenFOAM-specific installation prefix.

  The 'site' directory may have a reserved meaning in these situations
  and it is undesirable to 'leak' upwards into the parent directory to
  look for configuration files.

  Placing the default within the project directory avoids this.
  Alternative locations can be given via the WM_PROJECT_SITE variable.
2018-11-29 18:04:44 +01:00

329 lines
10 KiB
Bash

#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/config.sh/settings
# - sourced by OpenFOAM-*/etc/bashrc
#
# Description
# Settings for OpenFOAM.
#
#------------------------------------------------------------------------------
export WM_ARCH=$(uname -s) # System name
: ${WM_OSTYPE:=POSIX}; export WM_OSTYPE # System type (POSIX is default)
# Default compiler = gcc/g++ and C++11
export WM_CC="gcc"
export WM_CXX="g++"
export WM_CFLAGS="-fPIC"
export WM_CXXFLAGS="-fPIC -std=c++11"
unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH WM_LDFLAGS
# Adjust according to system and architecture
case "$WM_ARCH" in
Linux)
WM_ARCH=linux
case $(uname -m) in
i686)
export WM_ARCH_OPTION=32
;;
x86_64)
: ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION # Default to 64-bit
case "$WM_ARCH_OPTION" in
32)
export WM_COMPILER_ARCH=64
export WM_CFLAGS="$WM_CFLAGS -m32"
export WM_CXXFLAGS="$WM_CXXFLAGS -m32"
export WM_LDFLAGS="-m32"
;;
64)
WM_ARCH=linux64
export WM_COMPILER_LIB_ARCH=64
export WM_CFLAGS="$WM_CFLAGS -m64"
export WM_CXXFLAGS="$WM_CXXFLAGS -m64"
export WM_LDFLAGS="-m64"
;;
*)
echo "Unknown WM_ARCH_OPTION '$WM_ARCH_OPTION', should be 32|64" 1>&2
;;
esac
;;
ia64)
WM_ARCH=linuxIA64
;;
armv7l)
WM_ARCH=linuxARM7
export WM_ARCH_OPTION=32
export WM_COMPILER_LIB_ARCH=32
;;
aarch64)
WM_ARCH=linuxARM64
export WM_ARCH_OPTION=64
export WM_COMPILER_LIB_ARCH=64
;;
ppc64)
WM_ARCH=linuxPPC64
export WM_COMPILER_LIB_ARCH=64
export WM_CFLAGS="$WM_CFLAGS -m64"
export WM_CXXFLAGS="$WM_CXXFLAGS -m64"
export WM_LDFLAGS="-m64"
;;
ppc64le)
WM_ARCH=linuxPPC64le
export WM_COMPILER_LIB_ARCH=64
export WM_CFLAGS="$WM_CFLAGS -m64"
export WM_CXXFLAGS="$WM_CXXFLAGS -m64"
export WM_LDFLAGS="-m64"
;;
*)
echo Unknown processor type $(uname -m) for Linux 1>&2
;;
esac
;;
Darwin) # Presumably x86_64
: ${WM_ARCH_OPTION:=64}; export WM_ARCH_OPTION # Default to 64-bit
WM_ARCH=darwin64
export WM_CFLAGS="$WM_CFLAGS -m64 -Ddarwin"
export WM_CXXFLAGS="$WM_CXXFLAGS -m64 -Ddarwin"
/bin/cat << INCOMPLETE 1>&2
===============================================================================
Darwin support (clang only) is incomplete or untested in this OpenFOAM release.
For further assistance, please contact www.OpenFOAM.com
===============================================================================
INCOMPLETE
;;
SunOS)
WM_ARCH=SunOS64
WM_MPLIB=FJMPI
export WM_COMPILER_LIB_ARCH=64
export WM_CFLAGS="$WM_CFLAGS -mabi=64"
export WM_CXXFLAGS="$WM_CXXFLAGS -mabi=64"
export WM_LDFLAGS="-mabi=64 -G0"
;;
*) # An unsupported operating system
/bin/cat << UNSUPPORTED 1>&2
===============================================================================
Operating system '$WM_ARCH' is unsupported by this OpenFOAM release.
For further assistance, please contact www.OpenFOAM.com
===============================================================================
UNSUPPORTED
;;
esac
#------------------------------------------------------------------------------
# wmake configuration
export WM_DIR=$WM_PROJECT_DIR/wmake
export WM_LABEL_OPTION=Int$WM_LABEL_SIZE
export WM_OPTIONS=$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION
# Base executables/libraries
export FOAM_APPBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin
export FOAM_LIBBIN=$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib
# External (ThirdParty) libraries
export FOAM_EXT_LIBBIN=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib
# Site-specific (group) files
if [ -n "$WM_PROJECT_SITE" ]
then
siteDir=$WM_PROJECT_SITE
else
siteDir=$WM_PROJECT_DIR/site
fi
# Shared site (group) executables/libraries
export FOAM_SITE_APPBIN=$siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
export FOAM_SITE_LIBBIN=$siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
# User executables/libraries
export FOAM_USER_APPBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin
export FOAM_USER_LIBBIN=$WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib
# Add wmake to the path - not required for runtime-only environment
[ -d "$WM_DIR" ] && PATH=$WM_DIR:$PATH
# Add OpenFOAM scripts to the path
export PATH=$WM_PROJECT_DIR/bin:$PATH
# Add site-specific scripts to path - only if they exist
if [ -d "$siteDir/bin" ] # Generic
then
_foamAddPath "$siteDir/bin"
fi
if [ -d "$siteDir/$WM_PROJECT_VERSION/bin" ] # Version-specific
then
_foamAddPath "$siteDir/$WM_PROJECT_VERSION/bin"
fi
_foamAddPath $FOAM_USER_APPBIN:$FOAM_SITE_APPBIN:$FOAM_APPBIN
_foamAddLib $FOAM_LIBBIN/dummy # Dummy versions of external libraries last
if [ -n "$FOAM_EXT_LIBBIN" ] # External libraries (allowed to be unset)
then
_foamAddLib $FOAM_EXT_LIBBIN
fi
_foamAddLib $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN
#------------------------------------------------------------------------------
# Convenience
# ~~~~~~~~~~~
export FOAM_ETC="$WM_PROJECT_DIR/etc"
export FOAM_APP="$WM_PROJECT_DIR/applications"
export FOAM_SRC="$WM_PROJECT_DIR/src"
export FOAM_TUTORIALS="$WM_PROJECT_DIR/tutorials"
export FOAM_UTILITIES="$WM_PROJECT_DIR/applications/utilities"
export FOAM_SOLVERS="$WM_PROJECT_DIR/applications/solvers"
export FOAM_RUN="$WM_PROJECT_USER_DIR/run"
#------------------------------------------------------------------------------
# Compiler settings
# ~~~~~~~~~~~~~~~~~
# Default to system compiler
: ${WM_COMPILER_TYPE:=system}; export WM_COMPILER_TYPE
# Adjust for non-gcc compilers
case "$WM_COMPILER" in
Clang*) # Clang compiler suite
export WM_CC='clang'
export WM_CXX='clang++'
;;
Cray*) # Cray system compilers
export WM_CC='cc'
export WM_CXX='CC'
;;
Icc*) # Intel compilers
export WM_CC='icc'
export WM_CXX='icpc'
;;
Arm*) # Arm system compilers
export WM_CC='armclang'
export WM_CXX='armclang++'
;;
esac
# Clear prior to sourcing
unset gcc_version gmp_version mpfr_version mpc_version clang_version
unset GMP_ARCH_PATH MPFR_ARCH_PATH
# Load pre-defined compiler versions
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config compiler
# ThirdParty base for compilers
archDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH
case "$WM_COMPILER_TYPE-$WM_COMPILER" in
ThirdParty-Gcc*)
gccDir=$archDir/$gcc_version
gmpDir=$archDir/${gmp_version:-gmp-system}
mpfrDir=$archDir/${mpfr_version:-mpfr-system}
mpcDir=$archDir/${mpc_version:-mpc-system}
# Check that the compiler directory can be found
[ -d "$gccDir" ] || /bin/cat << GCC_NOT_FOUND 1>&2
===============================================================================
Warning in $WM_PROJECT_DIR/etc/config.sh/settings:
Cannot find '$WM_COMPILER' compiler installation
$gccDir
Either install this compiler version, or use the system compiler by setting
WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/bashrc.
===============================================================================
GCC_NOT_FOUND
_foamAddMan $gccDir/man
_foamAddPath $gccDir/bin
# Add ThirdParty compiler libraries to run-time environment
_foamAddLib $gccDir/lib$WM_COMPILER_LIB_ARCH
# Add gmp/mpfr/mpc libraries to run-time environment.
# Require that they exist, automatically find lib64/ or lib/.
_foamAddLibAuto $gmpDir && \
export GMP_ARCH_PATH=$gmpDir # For non-system CGAL
_foamAddLibAuto $mpfrDir && \
export MPFR_ARCH_PATH=$mpfrDir # For non-system CGAL
_foamAddLibAuto $mpcDir
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
echo "Using ThirdParty compiler"
echo " ${gccDir##*/} (${gmpDir##*/} $${mpfrDir##*/} ${mpcDir##*/})"
fi
;;
ThirdParty-Clang*)
clangDir=$archDir/$clang_version
# Check that the compiler directory can be found
[ -d "$clangDir" ] || /bin/cat << CLANG_NOT_FOUND 1>&2
===============================================================================
Warning in $WM_PROJECT_DIR/etc/config.sh/settings:
Cannot find '$WM_COMPILER' compiler installation
$clangDir
Either install this compiler version, or use the system compiler by setting
WM_COMPILER_TYPE to 'system' in \$WM_PROJECT_DIR/etc/bashrc.
===============================================================================
CLANG_NOT_FOUND
_foamAddMan $clangDir/share/man
_foamAddPath $clangDir/bin
_foamAddLib $clangDir/lib # For things like libomp (openmp) etc
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
then
echo "Using ThirdParty compiler"
echo " ${clangDir##*/}"
fi
;;
system-* | ThirdParty-*)
# Using system compiler or other ThirdParty compiler
;;
*)
/bin/cat << UNKNOWN_TYPE 1>&2
===============================================================================
Unknown WM_COMPILER_TYPE="$WM_COMPILER_TYPE" - treating as 'system'
Please check your settings
===============================================================================
UNKNOWN_TYPE
export WM_COMPILER_TYPE=system
;;
esac
# Cleanup
# ~~~~~~~
unset archDir siteDir
unset gcc_version gccDir
unset gmp_version gmpDir mpfr_version mpfrDir mpc_version mpcDir
unset clang_version clangDir
#------------------------------------------------------------------------------