mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
- 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.
329 lines
10 KiB
Bash
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
|
|
|
|
#------------------------------------------------------------------------------
|