diff options
Diffstat (limited to 'lib/spack/spack/compilers/__init__.py')
-rw-r--r-- | lib/spack/spack/compilers/__init__.py | 22 |
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() |