mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
1. "foamCompiler" was changed to a more permanent "WM_COMPILER_TYPE"
environment variable, so that it can be used by 3rd party
installation scripts, such as "makeGcc", "makeLLVM" and so on. More
on this will be provided in issue #1215.
2. The script functions such as "_foamSource()" and "_foamAddPath()"
were moved to a new file "etc/config.sh/functions". It has the
ability to set or unset, depending on whether "WM_BASH_FUNCTIONS" is
defined or not. This allows for these functions to be reused by
other scripts, such as "makeGcc".
3. The script "etc/config.sh/CGAL" relies on whether a local
environment variable "SOURCE_CGAL_VERSIONS_ONLY" is defined or not,
so that it will load only the version settings if it's defined. This
is to make it easier to call this script from "makeCGAL". Although
it still feels a bit of a clunky hack, but I didn't manage to deduce
any other way we could do this :( I didn't add indentation within
the if-block, to make it easier to read the changes. In addition,
the local variable "common_path" is used to shorten the length of
the lines and use slightly less repeated code.
4. Added another new script "etc/config.sh/compiler", which has only
the version numbers for the compilers taken out from the "settings"
file. It currently depends on "WM_COMPILER_TYPE" for setting the
variables, the same way it did with "foamCompiler". This script is
now always sourced from the "settings" file, for the following
reasons:
- "makeGCC" and "makeLLVM" can now take advantage of this script file.
- The example "compiler" script (detailed next) can rely on this
script file and then override parameters on-demand, as well as
allowing for system compilers to have dedicated settings, such as
setting "WM_CC". This is similar to how the example environment
script for "paraview" works.
5. To the script "etc/config.sh/example/compiler" were added a few more examples:
- It now starts with a block where it first loads the default "compiler" script.
- Has a "WM_COMPILER=Gcc48u" case example for when we try to use GCC
4.8 in Ubuntu 15.10. This is just to give the idea that in a
particular system, we might have several system-wide compiler
versions. For example, in Ubuntu 15.10, there is GCC 4.7, 4.8 and
5.2, which could be used for testing performances or compatibility
with some other 3rd party library.
- Has the "WM_COMPILER=Icc" case example, related to the original bug
report, where "WM_CC=icc" and "WM_CXX=icpc", so that the user then
simply copies this file to their own local preferences folder.
6. Small bug fix in "etc/config.sh/mpi", where unsetting "minBufferSize" was missing at the end of the script.
7. Small change in "etc/config.sh/paraview", where "CMAKE_ROOT" is set
along with "CMAKE_HOME". This is due to a rare issue that occurs on
people's systems where they have a custom system-wide CMake version
installed and which is used by having "CMAKE_ROOT" set on that
environment. This can mess up OpenFOAM's custom ParaView builds,
given that conflicting CMake versions can lead to not building
ParaView at all.
- For more details about "CMAKE_ROOT":
https://cmake.org/Wiki/CMake_Useful_Variables [^]
8. The scripts "_foamAddPath _foamAddLib _foamAddMan" were not being
unset at the end of "settings". They are now unset at the end of
"bashrc", through a call to the new double-use "functions" script.
Additionally all references to "foamCompiler" have been changed to
"WM_COMPILER_TYPE".
See also http://www.openfoam.org/mantisbt/view.php?id=1232
215 lines
6.7 KiB
Bash
215 lines
6.7 KiB
Bash
#----------------------------------*-sh-*--------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2011-2016 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/bashrc
|
|
#
|
|
# Description
|
|
# Startup file for OpenFOAM
|
|
# Sourced from ~/.profile or ~/.bashrc
|
|
# Should be usable by any POSIX-compliant shell (eg, ksh)
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
export WM_PROJECT=OpenFOAM
|
|
export WM_PROJECT_VERSION=dev
|
|
|
|
################################################################################
|
|
# USER EDITABLE PART: Changes made here may be lost with the next upgrade
|
|
#
|
|
# either set $FOAM_INST_DIR before sourcing this file or set
|
|
# 'foamInstall' below to where OpenFOAM is installed
|
|
#
|
|
# Location of the OpenFOAM installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
foamInstall=$HOME/$WM_PROJECT
|
|
# foamInstall=~$WM_PROJECT
|
|
# foamInstall=/opt/$WM_PROJECT
|
|
# foamInstall=/usr/local/$WM_PROJECT
|
|
#
|
|
# END OF (NORMAL) USER EDITABLE PART
|
|
################################################################################
|
|
|
|
#
|
|
# These are the defaults for this version which should generally be
|
|
# overridden from the prefs.sh file or from command-line specification
|
|
#
|
|
#- note the location for later use (eg, in job scripts)
|
|
: ${FOAM_INST_DIR:=$foamInstall}; export FOAM_INST_DIR
|
|
|
|
#- Compiler location:
|
|
# WM_COMPILER_TYPE= system | ThirdParty (OpenFOAM)
|
|
export WM_COMPILER_TYPE=system
|
|
|
|
#- Compiler:
|
|
# WM_COMPILER = Gcc | Gcc45 | Gcc46 | Gcc47 | Gcc48 | Gcc49| Clang | Icc
|
|
export WM_COMPILER=Gcc
|
|
unset WM_COMPILER_ARCH WM_COMPILER_LIB_ARCH
|
|
|
|
#- Memory addressing:
|
|
# On a 64bit OS this can be 32bit or 64bit
|
|
# On a 32bit OS addressing is 32bit and this option is not used
|
|
# WM_ARCH_OPTION = 32 | 64
|
|
export WM_ARCH_OPTION=64
|
|
|
|
#- Precision:
|
|
# WM_PRECISION_OPTION = DP | SP
|
|
export WM_PRECISION_OPTION=DP
|
|
|
|
#- Label size:
|
|
# WM_LABEL_SIZE = 32 | 64
|
|
export WM_LABEL_SIZE=32
|
|
|
|
#- Optimised, debug, profiling:
|
|
# WM_COMPILE_OPTION = Opt | Debug | Prof
|
|
export WM_COMPILE_OPTION=Opt
|
|
|
|
#- MPI implementation:
|
|
# WM_MPLIB = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPICH | MPICH-GM | HPMPI
|
|
# | MPI | QSMPI | SGIMPI
|
|
export WM_MPLIB=SYSTEMOPENMPI
|
|
|
|
#- Operating System:
|
|
# WM_OSTYPE = POSIX | ???
|
|
export WM_OSTYPE=POSIX
|
|
|
|
#- Floating-point signal handling:
|
|
# set or unset
|
|
export FOAM_SIGFPE=
|
|
|
|
#- memory initialisation:
|
|
# set or unset
|
|
#export FOAM_SETNAN=
|
|
|
|
|
|
################################################################################
|
|
|
|
# The old dirs to be cleaned from the various environment variables
|
|
# - remove anything under top-level directory.
|
|
# NB: the WM_PROJECT_INST_DIR might not be identical between versions
|
|
foamOldDirs="$FOAM_INST_DIR $WM_PROJECT_SITE $HOME/$WM_PROJECT/$USER"
|
|
if [ "$WM_PROJECT_INST_DIR" != "$FOAM_INST_DIR" ]
|
|
then
|
|
foamOldDirs="$WM_PROJECT_INST_DIR $foamOldDirs"
|
|
fi
|
|
|
|
|
|
# Location of installation
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
|
|
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
|
|
|
|
# Location of third-party software
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
|
|
|
|
# Location of site-specific templates etc
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# unset is equivalent to $WM_PROJECT_INST_DIR/site
|
|
if [ -d "$WM_PROJECT_SITE" ]
|
|
then
|
|
export WM_PROJECT_SITE
|
|
else
|
|
unset WM_PROJECT_SITE
|
|
fi
|
|
|
|
# Location of user files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~
|
|
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
|
|
|
|
# Source initialization functions
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
# Add in preset user or site preferences:
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile prefs.sh`
|
|
|
|
# Evaluate command-line parameters and record settings for later
|
|
# these can be used to set/unset values, or specify alternative pref files
|
|
export FOAM_SETTINGS="$@"
|
|
_foamEval $@
|
|
|
|
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
|
|
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH" "$foamOldDirs"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"` \
|
|
&& LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH
|
|
cleaned=`$foamClean "$MANPATH" "$foamOldDirs"` && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
|
|
# Source project setup files
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/settings
|
|
_foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
|
|
|
|
|
|
# Source user setup files for optional packages
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
|
|
_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/CGAL`
|
|
|
|
|
|
# Clean environment paths again. Only remove duplicates
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
#- Clean PATH
|
|
cleaned=`$foamClean "$PATH"` && PATH="$cleaned"
|
|
|
|
#- Clean LD_LIBRARY_PATH
|
|
cleaned=`$foamClean "$LD_LIBRARY_PATH"` && LD_LIBRARY_PATH="$cleaned"
|
|
|
|
#- Clean MANPATH (trailing ':' to find system pages)
|
|
cleaned=`$foamClean "$MANPATH"`: && MANPATH="$cleaned"
|
|
|
|
export PATH LD_LIBRARY_PATH MANPATH
|
|
|
|
#- Clean LD_PRELOAD
|
|
if [ -n "$LD_PRELOAD" ]
|
|
then
|
|
cleaned=`$foamClean "$LD_PRELOAD"` && LD_PRELOAD="$cleaned"
|
|
export LD_PRELOAD
|
|
fi
|
|
|
|
|
|
# Cleanup environment:
|
|
# ~~~~~~~~~~~~~~~~~~~~
|
|
unset cleaned foamClean foamInstall foamOldDirs
|
|
|
|
|
|
# Unload initialization functions:
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
. $WM_PROJECT_DIR/etc/config.sh/functions
|
|
|
|
#------------------------------------------------------------------------------
|