From 69c302f4552d87b7d8a6153b29fde38dada28661 Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Mon, 22 Jul 2019 18:33:40 -0400 Subject: cmake: Move cxx11 flags for fujitsu into the flag_handler method (#12056) * cmake: Move cxx11 flags for fujitsu into the flag_handler method * cmake: sanitization and error checking in flag_handler * cmake: Fix fujitsu flag check from 'fc' to 'fj' --- var/spack/repos/builtin/packages/cmake/package.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 1987b6bf21..5f1b45bc3c 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -111,11 +111,16 @@ class Cmake(Package): phases = ['bootstrap', 'build', 'install'] - def setup_environment(self, spack_env, run_env): - if self.compiler.name == 'fj' \ - and self.compiler.cxx11_flag \ - not in self.spec.compiler_flags['cxxflags']: - spack_env.append_flags('CXXFLAGS', self.compiler.cxx11_flag) + def flag_handler(self, name, flags): + if name == 'cxxflags' and self.compiler.name == 'fj': + cxx11plus_flags = (self.compiler.cxx11_flag, + self.compiler.cxx14_flag) + cxxpre11_flags = (self.cxx98_flags) + if any(f in flags for f in cxxpre11_flags): + raise ValueError('cannot build cmake pre-c++11 standard') + elif not any(f in flags for f in cxx11plus_flags): + flags.append(self.compiler.cxx11_flag) + return (flags, None, None) def bootstrap_args(self): spec = self.spec -- cgit v1.2.3-70-g09d2