*** Note that this commit depends on a corresponding change in
ThirdParty-dev. Ensure that both repositories are up to date before
re-building OpenFOAM.
New environment variables have been added to explicitly control the
installation type of the thirdparty decomposition libraries and of the
ParaView visualiation software. These are set in the etc/bashrc and can
be overridden in a ~/.OpenFOAM/<version>/prefs.sh file or similar.
The variables relating to the decomposition libraries are SCOTCH_TYPE,
METIS_TYPE, PARMETIS_TYPE and ZOLTAN_TYPE, and they can take values of
none, system, or ThirdParty. In the case of ThirdParty, a
<library>_VERSION variable can also be specified. If the version is not
specified then the configuration will search for a source directory, and
if multiple such directories are found then the one with the highest
version number will be used.
The variable relating to ParaView is ParaView_TYPE, and this can be
similarly be set to none, system, or ThirdParty, and ParaView_VERSION
can also be specified when the type is ThirdParty. If the version is not
specified then the installation with the highest version number will be
used.
An example ~/.OpenFOAM/dev/prefs.sh file, in which all decomposition
libraries are enabled, and the Scotch and ParaView versions are
explicitly set, is as follows:
export SCOTCH_TYPE=ThirdParty
export SCOTCH_VERSION=7.0.3
export METIS_TYPE=ThirdParty
export PARMETIS_TYPE=ThirdParty
export ZOLTAN_TYPE=ThirdParty
export ParaView_TYPE=ThirdParty
export ParaView_VERSION=5.11.2
*** Note that if version numbers are not set then the configuration will
search for a decomposition source directory, but it will search for a
ParaView installation directory. This is because decomposition libraries
are built as part of OpenFOAM's ./Allwmake, but ParaView is not. This
distinction remains. If a local compilation of ParaView is needed, then
'./makeParaView -version X.XX.X' should be called explicitly in the
third party directory prior to building OpenFOAM.
The name of the third party directory can now also be independently set.
This simplifies some packaging processes in that it permits third party
to be located within the OpenFOAM installation directory and therefore
bundled into the same binary package.
322 lines
9.9 KiB
Bash
322 lines
9.9 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration | Website: https://openfoam.org
|
|
# \\ / A nd | Copyright (C) 2011-2024 OpenFOAM Foundation
|
|
# \\/ M anipulation |
|
|
#------------------------------------------------------------------------------
|
|
# License
|
|
# This file is part of OpenFOAM.
|
|
#
|
|
# OpenFOAM is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File
|
|
# etc/config.csh/settings
|
|
#
|
|
# Description
|
|
# Startup file for OpenFOAM
|
|
# Sourced from OpenFOAM-<VERSION>/etc/cshrc
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Set environment variables according to system type
|
|
setenv WM_ARCH `uname -s`
|
|
|
|
# Default WM_COMPILER_LIB_ARCH for 32bit
|
|
setenv WM_COMPILER_LIB_ARCH
|
|
|
|
# Define compilation flags for the given system type
|
|
switch ($WM_ARCH)
|
|
case Linux:
|
|
setenv WM_ARCH linux
|
|
|
|
# Compiler specifics
|
|
switch (`uname -m`)
|
|
case i686:
|
|
setenv WM_ARCH_OPTION 32
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-fPIC'
|
|
setenv WM_CXXFLAGS '-fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS
|
|
breaksw
|
|
|
|
case x86_64:
|
|
switch ($WM_ARCH_OPTION)
|
|
case 32:
|
|
setenv WM_COMPILER_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-m32 -fPIC'
|
|
setenv WM_CXXFLAGS '-m32 -fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS '-m32'
|
|
breaksw
|
|
|
|
case 64:
|
|
setenv WM_ARCH linux64
|
|
setenv WM_COMPILER_LIB_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-m64 -fPIC'
|
|
setenv WM_CXXFLAGS '-m64 -fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS '-m64'
|
|
breaksw
|
|
|
|
default:
|
|
echo "Unknown WM_ARCH_OPTION '$WM_ARCH_OPTION', should be 32 or 64"
|
|
breaksw
|
|
|
|
endsw
|
|
breaksw
|
|
|
|
case aarch64:
|
|
setenv WM_ARCH linuxArm64
|
|
setenv WM_COMPILER_LIB_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-fPIC'
|
|
setenv WM_CXXFLAGS '-fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS ''
|
|
breaksw
|
|
|
|
case armv7l:
|
|
setenv WM_ARCH linuxARM7
|
|
setenv WM_ARCH_OPTION 32
|
|
setenv WM_COMPILER_LIB_ARCH 32
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-fPIC'
|
|
setenv WM_CXXFLAGS '-fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS
|
|
breaksw
|
|
|
|
case ppc64:
|
|
setenv WM_ARCH linuxPPC64
|
|
setenv WM_COMPILER_LIB_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-m64 -fPIC'
|
|
setenv WM_CXXFLAGS '-m64 -fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS '-m64'
|
|
breaksw
|
|
|
|
case ppc64le:
|
|
setenv WM_ARCH linuxPPC64le
|
|
setenv WM_COMPILER_LIB_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-m64 -fPIC'
|
|
setenv WM_CXXFLAGS '-m64 -fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS '-m64'
|
|
breaksw
|
|
|
|
default:
|
|
echo Unknown processor type `uname -m` for Linux
|
|
breaksw
|
|
|
|
endsw
|
|
breaksw
|
|
|
|
case SunOS:
|
|
setenv WM_ARCH SunOS64
|
|
setenv WM_MPLIB FJMPI
|
|
setenv WM_COMPILER_LIB_ARCH 64
|
|
setenv WM_CC 'gcc'
|
|
setenv WM_CXX 'g++'
|
|
setenv WM_CFLAGS '-mabi=64 -fPIC'
|
|
setenv WM_CXXFLAGS '-mabi=64 -fPIC -std=c++0x'
|
|
setenv WM_LDFLAGS '-mabi=64 -G0'
|
|
breaksw
|
|
|
|
default: # An unsupported operating system
|
|
/bin/cat <<USAGE
|
|
|
|
Your "$WM_ARCH" operating system is not supported by this release
|
|
of OpenFOAM. For further assistance, please contact https://openfoam.org
|
|
|
|
USAGE
|
|
breaksw
|
|
endsw
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Location of the jobControl directory
|
|
setenv FOAM_JOB_DIR $WM_PROJECT_INST_DIR/jobControl
|
|
|
|
# wmake configuration
|
|
setenv WM_DIR $WM_PROJECT_DIR/wmake
|
|
setenv WM_LINK_LANGUAGE c++
|
|
setenv WM_LABEL_OPTION Int$WM_LABEL_SIZE
|
|
setenv WM_OPTIONS $WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION$WM_COMPILE_OPTION
|
|
|
|
# Base executables/libraries
|
|
setenv FOAM_APPBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/bin
|
|
setenv FOAM_LIBBIN $WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib
|
|
|
|
# External (ThirdParty) libraries
|
|
setenv FOAM_EXT_LIBBIN $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER$WM_PRECISION_OPTION$WM_LABEL_OPTION/lib
|
|
|
|
# Site-specific directory
|
|
if ( $?WM_PROJECT_SITE ) then
|
|
set siteDir=$WM_PROJECT_SITE
|
|
else
|
|
set siteDir=$WM_PROJECT_INST_DIR/site
|
|
endif
|
|
|
|
# Shared site executables/libraries
|
|
# Similar naming convention as ~OpenFOAM expansion
|
|
setenv FOAM_SITE_APPBIN $siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/bin
|
|
setenv FOAM_SITE_LIBBIN $siteDir/$WM_PROJECT_VERSION/platforms/$WM_OPTIONS/lib
|
|
|
|
# User executables/libraries
|
|
setenv FOAM_USER_APPBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/bin
|
|
setenv FOAM_USER_LIBBIN $WM_PROJECT_USER_DIR/platforms/$WM_OPTIONS/lib
|
|
|
|
# DynamicCode templates
|
|
# - default location is the "~OpenFOAM/codeTemplates/dynamicCode" expansion
|
|
# setenv FOAM_CODE_TEMPLATES $WM_PROJECT_DIR/etc/codeTemplates/dynamicCode
|
|
|
|
# Convenience
|
|
setenv FOAM_ETC $WM_PROJECT_DIR/etc
|
|
setenv FOAM_APP $WM_PROJECT_DIR/applications
|
|
setenv FOAM_SRC $WM_PROJECT_DIR/src
|
|
setenv FOAM_TUTORIALS $WM_PROJECT_DIR/tutorials
|
|
setenv FOAM_UTILITIES $FOAM_APP/utilities
|
|
setenv FOAM_SOLVERS $FOAM_APP/solvers
|
|
setenv FOAM_MODULES $FOAM_APP/modules
|
|
setenv FOAM_RUN $WM_PROJECT_USER_DIR/run
|
|
|
|
# Add application bins to the path
|
|
_foamAddPath ${FOAM_USER_APPBIN}:${FOAM_SITE_APPBIN}:${FOAM_APPBIN}
|
|
|
|
# Add wmake scripts to the path - not required for runtime-only environment
|
|
if ( -d "${WM_DIR}" ) setenv PATH ${WM_DIR}:${PATH}
|
|
|
|
# Add OpenFOAM scripts to the path
|
|
setenv PATH ${WM_PROJECT_DIR}/bin:${PATH}
|
|
|
|
# Add site-specific scripts to path - only if they exist
|
|
if ( -d "$siteDir/bin" ) then # Generic
|
|
_foamAddPath "$siteDir/bin"
|
|
endif
|
|
if ( -d "$siteDir/$WM_PROJECT_VERSION/bin" ) then # Version-specific
|
|
_foamAddPath "$siteDir/$WM_PROJECT_VERSION/bin"
|
|
endif
|
|
unset siteDir
|
|
|
|
# Make sure to pick up dummy versions of external libraries last
|
|
_foamAddLib ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}:${FOAM_EXT_LIBBIN}:${FOAM_LIBBIN}/dummy
|
|
|
|
# Compiler settings
|
|
# ~~~~~~~~~~~~~~~~~
|
|
unset gcc_version gmp_version mpfr_version mpc_version
|
|
unsetenv MPFR_ARCH_PATH GMP_ARCH_PATH
|
|
|
|
# Location of compiler installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
if ( ! $?WM_COMPILER_TYPE ) then
|
|
set WM_COMPILER_TYPE=system
|
|
/bin/cat <<USAGE
|
|
Warning in $WM_PROJECT_DIR/etc/config.sh/settings:
|
|
WM_COMPILER_TYPE not set, using '$WM_COMPILER_TYPE'
|
|
USAGE
|
|
endif
|
|
|
|
# Load configured compiler versions, regardless of the compiler type
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/compiler`
|
|
|
|
switch ("$WM_COMPILER_TYPE")
|
|
case OpenFOAM:
|
|
case ThirdParty:
|
|
|
|
if ( $?gcc_version ) then
|
|
set gccDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gcc_version
|
|
set gmpDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$gmp_version
|
|
set mpfrDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpfr_version
|
|
if ( $?mpc_version ) then
|
|
set mpcDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$mpc_version
|
|
endif
|
|
|
|
# Check that the compiler directory can be found
|
|
if ( ! -d "$gccDir" ) then
|
|
/bin/cat <<USAGE
|
|
|
|
Warning in $WM_PROJECT_DIR/etc/config.csh/settings:
|
|
Cannot find $gccDir installation.
|
|
Please install this compiler version or if you wish to use the system compiler,
|
|
change the 'WM_COMPILER_TYPE' setting to 'system'
|
|
|
|
USAGE
|
|
endif
|
|
|
|
_foamAddMan $gccDir/man
|
|
_foamAddPath $gccDir/bin
|
|
|
|
# Add compiler libraries to run-time environment
|
|
_foamAddLib $gccDir/lib$WM_COMPILER_LIB_ARCH
|
|
|
|
# Add gmp/mpfr libraries to run-time environment
|
|
_foamAddLib $gmpDir/lib$WM_COMPILER_LIB_ARCH
|
|
_foamAddLib $mpfrDir/lib$WM_COMPILER_LIB_ARCH
|
|
|
|
# Add mpc libraries (not need for older gcc) to run-time environment
|
|
if ( $?mpc_version ) then
|
|
_foamAddLib $mpcDir/lib$WM_COMPILER_LIB_ARCH
|
|
endif
|
|
endif
|
|
unset gcc_version gccDir
|
|
unset gmp_version gmpDir mpfr_version mpfrDir mpc_version mpcDir
|
|
|
|
if ( $?clang_version ) then
|
|
set clangDir=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/$clang_version
|
|
|
|
# Check that the compiler directory can be found
|
|
if ( ! -d "$clangDir" ) then
|
|
/bin/cat <<USAGE
|
|
|
|
Warning in $WM_PROJECT_DIR/etc/config.csh/settings:
|
|
Cannot find $clangDir installation.
|
|
Please install this compiler version or if you wish to use the system compiler,
|
|
change the 'WM_COMPILER_TYPE' setting to 'system'
|
|
|
|
USAGE
|
|
endif
|
|
|
|
_foamAddMan $clangDir/share/man
|
|
_foamAddPath $clangDir/bin
|
|
endif
|
|
unset clang_version clangDir
|
|
breaksw
|
|
|
|
case system:
|
|
# Use system compiler
|
|
breaksw
|
|
|
|
default:
|
|
/bin/cat <<USAGE
|
|
Warn: WM_COMPILER_TYPE='$WM_COMPILER_TYPE' is unsupported
|
|
treating as 'system' instead
|
|
USAGE
|
|
breaksw
|
|
endsw
|
|
|
|
|
|
# Cleanup environment:
|
|
# ~~~~~~~~~~~~~~~~~~~~
|
|
unsetenv WM_COMPILER_TYPE
|
|
|
|
#------------------------------------------------------------------------------
|