summaryrefslogtreecommitdiff
path: root/lib/spack/spack/compilers/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/spack/compilers/__init__.py')
-rw-r--r--lib/spack/spack/compilers/__init__.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/spack/spack/compilers/__init__.py b/lib/spack/spack/compilers/__init__.py
index decb98970a..b2be6d84fd 100644
--- a/lib/spack/spack/compilers/__init__.py
+++ b/lib/spack/spack/compilers/__init__.py
@@ -28,6 +28,17 @@ _cache_config_file = []
#: cache of compilers constructed from config data, keyed by config entry id.
_compiler_cache = {}
+_compiler_to_pkg = {
+ 'clang': 'llvm+clang'
+}
+
+
+def pkg_spec_for_compiler(cspec):
+ """Return the spec of the package that provides the compiler."""
+ spec_str = '%s@%s' % (_compiler_to_pkg.get(cspec.name, cspec.name),
+ cspec.versions)
+ return spack.spec.Spec(spec_str)
+
def _auto_compiler_spec(function):
def converter(cspec_like, *args, **kwargs):
@@ -203,6 +214,17 @@ def find(compiler_spec, scope=None, init_config=True):
if c.satisfies(compiler_spec)]
+@_auto_compiler_spec
+def find_specs_by_arch(compiler_spec, arch_spec, scope=None, init_config=True):
+ """Return specs of available compilers that match the supplied
+ compiler spec. Return an empty list if nothing found."""
+ return [c.spec for c in compilers_for_spec(compiler_spec,
+ arch_spec,
+ scope,
+ True,
+ init_config)]
+
+
def all_compilers(scope=None):
config = get_compiler_config(scope)
compilers = list()