Allow detection for "-classic" version of CCE (#17256)
* cce: detect modules based on the classic backend * cce: tweaked version checks for clang based options * Added unit test for cce flags
This commit is contained in:
parent
cecd300693
commit
c401c63156
@ -32,9 +32,14 @@ class Cce(Compiler):
|
|||||||
'f77': 'cce/ftn',
|
'f77': 'cce/ftn',
|
||||||
'fc': 'cce/ftn'}
|
'fc': 'cce/ftn'}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_clang_based(self):
|
||||||
|
version = self.version
|
||||||
|
return version >= ver('9.0') and 'classic' not in str(version)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def version_argument(self):
|
def version_argument(self):
|
||||||
if self.version >= ver('9.0'):
|
if self.is_clang_based:
|
||||||
return '--version'
|
return '--version'
|
||||||
return '-V'
|
return '-V'
|
||||||
|
|
||||||
@ -50,19 +55,19 @@ def debug_flags(self):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def openmp_flag(self):
|
def openmp_flag(self):
|
||||||
if self.version >= ver('9.0'):
|
if self.is_clang_based:
|
||||||
return '-fopenmp'
|
return '-fopenmp'
|
||||||
return "-h omp"
|
return "-h omp"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def cxx11_flag(self):
|
def cxx11_flag(self):
|
||||||
if self.version >= ver('9.0'):
|
if self.is_clang_based:
|
||||||
return '-std=c++11'
|
return '-std=c++11'
|
||||||
return "-h std=c++11"
|
return "-h std=c++11"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def c99_flag(self):
|
def c99_flag(self):
|
||||||
if self.version >= ver('9.0'):
|
if self.is_clang_based:
|
||||||
return '-std=c99'
|
return '-std=c99'
|
||||||
elif self.version >= ver('8.4'):
|
elif self.version >= ver('8.4'):
|
||||||
return '-h std=c99,noconform,gnu'
|
return '-h std=c99,noconform,gnu'
|
||||||
@ -75,7 +80,7 @@ def c99_flag(self):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def c11_flag(self):
|
def c11_flag(self):
|
||||||
if self.version >= ver('9.0'):
|
if self.is_clang_based:
|
||||||
return '-std=c11'
|
return '-std=c11'
|
||||||
elif self.version >= ver('8.5'):
|
elif self.version >= ver('8.5'):
|
||||||
return '-h std=c11,noconform,gnu'
|
return '-h std=c11,noconform,gnu'
|
||||||
|
@ -142,7 +142,9 @@ def detect_version(self, detect_version_args):
|
|||||||
compiler_name = detect_version_args.id.compiler_name
|
compiler_name = detect_version_args.id.compiler_name
|
||||||
compiler_cls = spack.compilers.class_for_compiler_name(compiler_name)
|
compiler_cls = spack.compilers.class_for_compiler_name(compiler_name)
|
||||||
output = modulecmd('avail', compiler_cls.PrgEnv_compiler)
|
output = modulecmd('avail', compiler_cls.PrgEnv_compiler)
|
||||||
version_regex = r'(%s)/([\d\.]+[\d])' % compiler_cls.PrgEnv_compiler
|
version_regex = r'({0})/([\d\.]+[\d]-?[\w]*)'.format(
|
||||||
|
compiler_cls.PrgEnv_compiler
|
||||||
|
)
|
||||||
matches = re.findall(version_regex, output)
|
matches = re.findall(version_regex, output)
|
||||||
version = tuple(version for _, version in matches)
|
version = tuple(version for _, version in matches)
|
||||||
compiler_id = detect_version_args.id
|
compiler_id = detect_version_args.id
|
||||||
|
@ -358,12 +358,20 @@ def test_arm_flags():
|
|||||||
|
|
||||||
|
|
||||||
def test_cce_flags():
|
def test_cce_flags():
|
||||||
|
supported_flag_test("version_argument", "--version", "cce@9.0.1")
|
||||||
|
supported_flag_test("version_argument", "-V", "cce@9.0.1-classic")
|
||||||
|
supported_flag_test("openmp_flag", "-fopenmp", "cce@9.0.1")
|
||||||
|
supported_flag_test("openmp_flag", "-h omp", "cce@9.0.1-classic")
|
||||||
supported_flag_test("openmp_flag", "-h omp", "cce@1.0")
|
supported_flag_test("openmp_flag", "-h omp", "cce@1.0")
|
||||||
|
supported_flag_test("cxx11_flag", "-std=c++11", "cce@9.0.1")
|
||||||
|
supported_flag_test("cxx11_flag", "-h std=c++11", "cce@9.0.1-classic")
|
||||||
supported_flag_test("cxx11_flag", "-h std=c++11", "cce@1.0")
|
supported_flag_test("cxx11_flag", "-h std=c++11", "cce@1.0")
|
||||||
unsupported_flag_test("c99_flag", "cce@8.0")
|
unsupported_flag_test("c99_flag", "cce@8.0")
|
||||||
|
supported_flag_test("c99_flag", "-std=c99", "cce@9.0.1")
|
||||||
supported_flag_test("c99_flag", "-h c99,noconform,gnu", "cce@8.1")
|
supported_flag_test("c99_flag", "-h c99,noconform,gnu", "cce@8.1")
|
||||||
supported_flag_test("c99_flag", "-h std=c99,noconform,gnu", "cce@8.4")
|
supported_flag_test("c99_flag", "-h std=c99,noconform,gnu", "cce@8.4")
|
||||||
unsupported_flag_test("c11_flag", "cce@8.4")
|
unsupported_flag_test("c11_flag", "cce@8.4")
|
||||||
|
supported_flag_test("c11_flag", "-std=c11", "cce@9.0.1")
|
||||||
supported_flag_test("c11_flag", "-h std=c11,noconform,gnu", "cce@8.5")
|
supported_flag_test("c11_flag", "-h std=c11,noconform,gnu", "cce@8.5")
|
||||||
supported_flag_test("cc_pic_flag", "-h PIC", "cce@1.0")
|
supported_flag_test("cc_pic_flag", "-h PIC", "cce@1.0")
|
||||||
supported_flag_test("cxx_pic_flag", "-h PIC", "cce@1.0")
|
supported_flag_test("cxx_pic_flag", "-h PIC", "cce@1.0")
|
||||||
|
Loading…
Reference in New Issue
Block a user