From 81015889f2fd9355eb3fd58570949c5b68b49c2a Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 3 Feb 2020 11:05:04 +0100 Subject: [PATCH] CONFIG: provide separate default settings for clang/gcc (fixes #1566) - the foamConfigurePaths script is quite simplistic and aggressive in what it changes. This was particularly evident when using it to change gcc/clang versions. Restructured the corresponding compiler settings to define default versions (eg, "default_gcc_version") that limits the scope of changes performed by foamConfigurePaths and makes it easier to understand if changing manually. --- bin/tools/foamConfigurePaths | 33 +++++++++++++-------------- etc/config.csh/compiler | 25 ++++++++++++++------ etc/config.csh/example/compiler | 10 ++++---- etc/config.csh/example/compiler-Gcc92 | 28 +++++++++++++++++++++++ etc/config.sh/compiler | 28 +++++++++++++++-------- etc/config.sh/example/compiler | 16 +++++-------- etc/config.sh/example/compiler-Gcc92 | 28 +++++++++++++++++++++++ 7 files changed, 121 insertions(+), 47 deletions(-) create mode 100644 etc/config.csh/example/compiler-Gcc92 create mode 100644 etc/config.sh/example/compiler-Gcc92 diff --git a/bin/tools/foamConfigurePaths b/bin/tools/foamConfigurePaths index 43521521251..b267a235e26 100755 --- a/bin/tools/foamConfigurePaths +++ b/bin/tools/foamConfigurePaths @@ -7,11 +7,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # Script # foamConfigurePaths @@ -39,8 +38,8 @@ Basic Compiler -system NAME specify 'system' compiler to use (eg, Gcc, Icc,...) -third NAME specify 'ThirdParty' compiler to use (eg, Clang40,...) - -gcc VER specify 'gcc_version' for ThirdParty Gcc - -clang VER specify 'clang_version' for ThirdParty Clang + -gcc VER specify 'default_gcc_version' for ThirdParty Gcc + -clang VER specify 'default_clang_version' for ThirdParty Clang gmp-VERSION for ThirdParty gcc (gmp-system for system library) mpfr-VERSION for ThirdParty gcc (mpfr-system for system library) mpc-VERSION for ThirdParty gcc (mpc-system for system library) @@ -346,19 +345,19 @@ do ## Compiler ## -clang) - # Replace clang_version=... + # Replace default_clang_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/compiler clang_version "$optionValue" - replace etc/config.csh/compiler clang_version "$optionValue" + replace etc/config.sh/compiler default_clang_version "$optionValue" + replace etc/config.csh/compiler default_clang_version "$optionValue" adjusted=true shift ;; -gcc) - # Replace gcc_version=... + # Replace default_gcc_version=... optionValue=$(getOptionValue "$@") - replace etc/config.sh/compiler gcc_version "$optionValue" - replace etc/config.csh/compiler gcc_version "$optionValue" + replace etc/config.sh/compiler default_gcc_version "$optionValue" + replace etc/config.csh/compiler default_gcc_version "$optionValue" adjusted=true shift ;; @@ -391,22 +390,22 @@ do gmp-[4-9]* | gmp-system) # gcc-related package - replace etc/config.sh/compiler gmp_version "$1" - replace etc/config.csh/compiler gmp_version "$1" + replace etc/config.sh/compiler default_gmp_version "$1" + replace etc/config.csh/compiler default_gmp_version "$1" adjusted=true ;; mpfr-[2-9]* | mpfr-system) # gcc-related package - replace etc/config.sh/compiler mpfr_version "$1" - replace etc/config.csh/compiler mpfr_version "$1" + replace etc/config.sh/compiler default_mpfr_version "$1" + replace etc/config.csh/compiler default_mpfr_version "$1" adjusted=true ;; mpc-[0-9]* | mpc-system) # gcc-related package - replace etc/config.sh/compiler mpc_version "$1" - replace etc/config.csh/compiler mpc_version "$1" + replace etc/config.sh/compiler default_mpc_version "$1" + replace etc/config.csh/compiler default_mpc_version "$1" adjusted=true ;; diff --git a/etc/config.csh/compiler b/etc/config.csh/compiler index 886dea905bc..88300272a1f 100644 --- a/etc/config.csh/compiler +++ b/etc/config.csh/compiler @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.csh/compiler @@ -24,14 +23,19 @@ switch ("$WM_COMPILER_TYPE") case ThirdParty: - # Default versions of GMP, MPFR, MPC - override as necessary + # Default versions (CLANG, GCC, GMP, MPFR, MPC) - override as necessary - set gmp_version=gmp-system - set mpfr_version=mpfr-system - set mpc_version=mpc-system + set default_clang_version=llvm-3.7.1 + set default_gcc_version=gcc-4.8.5 + + set default_gmp_version=gmp-system + set default_mpfr_version=mpfr-system + set default_mpc_version=mpc-system switch ("$WM_COMPILER") case Gcc: + set gcc_version="$default_gcc_version" + breaksw case Gcc48*: set gcc_version=gcc-4.8.5 breaksw @@ -95,7 +99,10 @@ case ThirdParty: case Gcc92*: set gcc_version=gcc-9.2.0 breaksw + case Clang: + set clang_version="$default_clang_version" + breaksw case Clang37*: set clang_version=llvm-3.7.1 breaksw @@ -126,6 +133,7 @@ case ThirdParty: case Clang90*: set clang_version=llvm-9.0.0 breaksw + default: /bin/cat << UNKNOWN_COMPILER =============================================================================== @@ -143,4 +151,7 @@ UNKNOWN_COMPILER breaksw endsw +unset default_gcc_version default_clang_version +unset default_gmp_version default_mpfr_version default_mpc_version + #------------------------------------------------------------------------------ diff --git a/etc/config.csh/example/compiler b/etc/config.csh/example/compiler index 25e7eacddea..9355dac7902 100644 --- a/etc/config.csh/example/compiler +++ b/etc/config.csh/example/compiler @@ -9,15 +9,17 @@ # Copyright (C) 2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # config.csh/example/compiler # - sourced by OpenFOAM-*/etc/config.csh/settings # # Description -# Example of fine tuning ThirdParty compiler settings for OpenFOAM +# Older example of fine tuning compiler settings for OpenFOAM +# +# The preferred mechanism is now with a "compiler-$WM_COMPILER" file +# in one of the etc/ directories. # #------------------------------------------------------------------------------ @@ -26,7 +28,7 @@ eval `$WM_PROJECT_DIR/bin/foamEtcFile -csh -config -mode=o compiler` # Modify/override compiler settings switch ("$WM_COMPILER") -case Gcc70: +case Gcc70*: set gcc_version=gcc-7.0.0 set gmp_version=gmp-6.1.2 set mpfr_version=mpfr-3.1.5 diff --git a/etc/config.csh/example/compiler-Gcc92 b/etc/config.csh/example/compiler-Gcc92 new file mode 100644 index 00000000000..9bf5baeb277 --- /dev/null +++ b/etc/config.csh/example/compiler-Gcc92 @@ -0,0 +1,28 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | www.openfoam.com +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# Copyright (C) 2020 OpenCFD Ltd. +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. +# +# File +# config.csh/example/compiler-Gcc92 +# - sourced by OpenFOAM-*/etc/config.csh/compiler +# +# Description +# Example of fine tuning compiler settings with a hook +# +#------------------------------------------------------------------------------ + +# Modify/override compiler settings +set gcc_version=gcc-9.2.0 +set gmp_version=gmp-6.2.0 +set mpfr_version=mpfr-4.0.2 +set mpc_version=mpc-1.1.0 + +#------------------------------------------------------------------------------ diff --git a/etc/config.sh/compiler b/etc/config.sh/compiler index 41e73eeba44..36e4fda3bb1 100644 --- a/etc/config.sh/compiler +++ b/etc/config.sh/compiler @@ -6,11 +6,10 @@ # \\/ M anipulation | #------------------------------------------------------------------------------ # Copyright (C) 2011-2016 OpenFOAM Foundation -# Copyright (C) 2016-2019 OpenCFD Ltd. +# Copyright (C) 2016-2020 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # etc/config.sh/compiler @@ -24,13 +23,21 @@ case "$WM_COMPILER_TYPE" in ThirdParty) - # Default versions of GMP, MPFR, MPC - override as necessary - gmp_version=gmp-system - mpfr_version=mpfr-system - mpc_version=mpc-system + # Default versions (CLANG, GCC, GMP, MPFR, MPC) - override as necessary + + default_clang_version=llvm-3.7.1 + default_gcc_version=gcc-4.8.5 + + default_gmp_version=gmp-system + default_mpfr_version=mpfr-system + default_mpc_version=mpc-system + + gmp_version="$default_gmp_version" + mpfr_version="$default_mpfr_version" + mpc_version="$default_mpc_version" case "$WM_COMPILER" in - Gcc |\ + Gcc) gcc_version="$default_gcc_version" ;; Gcc48*) gcc_version=gcc-4.8.5 ;; Gcc49*) gcc_version=gcc-4.9.4 ;; Gcc51*) gcc_version=gcc-5.1.0 ;; @@ -54,7 +61,7 @@ ThirdParty) Gcc91*) gcc_version=gcc-9.1.0 ;; Gcc92*) gcc_version=gcc-9.2.0 ;; - Clang |\ + Clang) clang_version="$default_clang_version" ;; Clang37*) clang_version=llvm-3.7.1 ;; Clang38*) clang_version=llvm-3.8.1 ;; Clang39*) clang_version=llvm-3.9.1 ;; @@ -83,4 +90,7 @@ UNKNOWN_COMPILER ;; esac +unset default_gcc_version default_clang_version +unset default_gmp_version default_mpfr_version default_mpc_version + #------------------------------------------------------------------------------ diff --git a/etc/config.sh/example/compiler b/etc/config.sh/example/compiler index f55a55b4586..385ef8ae7c4 100644 --- a/etc/config.sh/example/compiler +++ b/etc/config.sh/example/compiler @@ -9,15 +9,17 @@ # Copyright (C) 2017 OpenCFD Ltd. #------------------------------------------------------------------------------ # License -# This file is part of OpenFOAM, licensed under GNU General Public License -# <http://www.gnu.org/licenses/>. +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # File # config.sh/example/compiler # - sourced by OpenFOAM-*/etc/config.sh/settings # # Description -# Example of fine tuning compiler versions and settings for OpenFOAM +# Older example of fine tuning compiler settings for OpenFOAM. +# +# The preferred mechanism is now with a "compiler-$WM_COMPILER" file +# in one of the etc/ directories. # #------------------------------------------------------------------------------ @@ -26,18 +28,12 @@ eval $($WM_PROJECT_DIR/bin/foamEtcFile -sh -config -mode=o compiler) # Modify/override compiler settings case "$WM_COMPILER" in -Gcc70) +Gcc70*) gcc_version=gcc-7.0.0 gmp_version=gmp-6.1.2 mpfr_version=mpfr-3.1.5 mpc_version=mpc-1.0.3 ;; -Gcc48u) - # Example of using the system GCC 4.8 in Ubuntu 15.10. Keep in mind you - # will also need to create the respective directory in "wmake/rules" - export CC='gcc-4.8' - export CXX='g++-4.8' - ;; esac #------------------------------------------------------------------------------ diff --git a/etc/config.sh/example/compiler-Gcc92 b/etc/config.sh/example/compiler-Gcc92 new file mode 100644 index 00000000000..75b4de4cfad --- /dev/null +++ b/etc/config.sh/example/compiler-Gcc92 @@ -0,0 +1,28 @@ +#----------------------------------*-sh-*-------------------------------------- +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | www.openfoam.com +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# Copyright (C) 2020 OpenCFD Ltd. +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM, distributed under GPL-3.0-or-later. +# +# File +# config.sh/example/compiler-Gcc92 +# - sourced by OpenFOAM-*/etc/config.sh/compiler +# +# Description +# Example of fine tuning compiler settings with a hook +# +#------------------------------------------------------------------------------ + +# Modify/override compiler settings +gcc_version=gcc-9.2.0 +gmp_version=gmp-6.2.0 +mpfr_version=mpfr-4.0.2 +mpc_version=mpc-1.1.0 + +#------------------------------------------------------------------------------ -- GitLab