Source code for spack.compilers.rocmcc

# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

import re

import llnl.util.lang

import spack.compilers.clang


[docs] class Rocmcc(spack.compilers.clang.Clang): # Subclasses use possible names of C compiler cc_names = ["amdclang"] # Subclasses use possible names of C++ compiler cxx_names = ["amdclang++"] # Subclasses use possible names of Fortran 77 compiler f77_names = ["amdflang"] # Subclasses use possible names of Fortran 90 compiler fc_names = ["amdflang"] PrgEnv = "PrgEnv-amd" PrgEnv_compiler = "amd" @property def link_paths(self): link_paths = { "cc": "rocmcc/amdclang", "cxx": "rocmcc/amdclang++", "f77": "rocmcc/amdflang", "fc": "rocmcc/amdflang", } return link_paths @property def cxx11_flag(self): return "-std=c++11" @property def cxx14_flag(self): return "-std=c++14" @property def cxx17_flag(self): return "-std=c++17" @property def c99_flag(self): return "-std=c99" @property def c11_flag(self): return "-std=c11"
[docs] @classmethod @llnl.util.lang.memoized def extract_version_from_output(cls, output): match = re.search(r"llvm-project roc-(\d+)[._](\d+)[._](\d+)", output) if match: return ".".join(match.groups())
[docs] @classmethod def fc_version(cls, fortran_compiler): return cls.default_version(fortran_compiler)
[docs] @classmethod def f77_version(cls, f77): return cls.fc_version(f77)
@property def stdcxx_libs(self): return ("-lstdc++",)