From fff9a29401a7ac37c2d0f04fb2a144dbdea6a47d Mon Sep 17 00:00:00 2001 From: Paul Kuberry Date: Mon, 31 Jan 2022 00:41:21 -0700 Subject: trilinos: Fix cxxstd effects for Trilinos versions <13 (#28663) --- var/spack/repos/builtin/packages/trilinos/package.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index f15c339424..9e990c6b49 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -260,7 +260,7 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): msg='Cannot build Trilinos with STK as a shared library on Darwin.' ) conflicts('+adios2', when='@:12.14.1') - conflicts('cxxstd=11', when='@master:') + conflicts('cxxstd=11', when='@13.2:') conflicts('cxxstd=17', when='@:12') conflicts('cxxstd=11', when='+wrapper ^cuda@6.5.14') conflicts('cxxstd=14', when='+wrapper ^cuda@6.5.14:8.0.61') @@ -456,7 +456,6 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): options.extend([ define('Trilinos_VERBOSE_CONFIGURE', False), define_from_variant('BUILD_SHARED_LIBS', 'shared'), - define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd'), define_trilinos_enable('ALL_OPTIONAL_PACKAGES', False), define_trilinos_enable('ALL_PACKAGES', False), define_trilinos_enable('CXX11', True), @@ -470,6 +469,18 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): 'explicit_template_instantiation') ]) + if spec.version >= Version('13'): + options.append(define_from_variant('CMAKE_CXX_STANDARD', 'cxxstd')) + else: + # Prior to version 13, Trilinos would erroneously inject + # '-std=c++11' regardless of CMAKE_CXX_STANDARD value + options.append(define( + 'Trilinos_CXX11_FLAGS', + self.compiler.cxx14_flag + if spec.variants['cxxstd'].value == '14' + else self.compiler.cxx11_flag + )) + # ################## Trilinos Packages ##################### options.extend([ @@ -524,10 +535,6 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage): define_from_variant('Amesos2_ENABLE_LAPACK', 'amesos2'), ]) - if spec.version < Version('13'): - # Suppress TriBITS flags in favor of CMake's built-in flags - options.append(define('Trilinos_CXX11_FLAGS', ' ')) - if '+dtk' in spec: options.extend([ define('Trilinos_EXTRA_REPOSITORIES', 'DataTransferKit'), -- cgit v1.2.3-70-g09d2