diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-09-28 17:32:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-28 17:32:44 +0300 |
commit | fa47d8dab048f8880091f24b77eb192b82a35e9e (patch) | |
tree | 764b54a18eb49003e334fe2fbb7fc0b4025d6bac /mesonbuild/interpreter/compiler.py | |
parent | 5fa0fd3b473f792bd7333cf6ae6e2f4c851b6108 (diff) | |
parent | 32dbdff3b2d37d1ec7ef976c0b4f30d1d0472e70 (diff) | |
download | meson-fa47d8dab048f8880091f24b77eb192b82a35e9e.zip meson-fa47d8dab048f8880091f24b77eb192b82a35e9e.tar.gz meson-fa47d8dab048f8880091f24b77eb192b82a35e9e.tar.bz2 |
Merge pull request #9014 from bonzini/mixed-language-link
Use appropriate compiler for the source file for "links" tests with file argument
Diffstat (limited to 'mesonbuild/interpreter/compiler.py')
-rw-r--r-- | mesonbuild/interpreter/compiler.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py index 54f4bee..b76e7f8 100644 --- a/mesonbuild/interpreter/compiler.py +++ b/mesonbuild/interpreter/compiler.py @@ -11,6 +11,7 @@ from .. import coredata from .. import dependencies from .. import mesonlib from .. import mlog +from ..compilers import SUFFIX_TO_LANG from ..compilers.compilers import CompileCheckMode from ..interpreterbase import (ObjectHolder, noPosargs, noKwargs, FeatureNew, disablerIfNotFound, @@ -454,13 +455,27 @@ class CompilerHolder(ObjectHolder['Compiler']): @typed_kwargs('compiler.links', *_COMPILES_KWS) def links_method(self, args: T.Tuple['mesonlib.FileOrString'], kwargs: 'CompileKW') -> bool: code = args[0] + compiler = None if isinstance(code, mesonlib.File): code = mesonlib.File.from_absolute_file( code.rel_to_builddir(self.environment.source_dir)) + suffix = code.suffix + if suffix not in self.compiler.file_suffixes: + for_machine = self.compiler.for_machine + clist = self.interpreter.coredata.compilers[for_machine] + if suffix not in SUFFIX_TO_LANG: + # just pass it to the compiler driver + mlog.warning(f'Unknown suffix for test file {code}') + elif SUFFIX_TO_LANG[suffix] not in clist: + mlog.warning(f'Passed {SUFFIX_TO_LANG[suffix]} source to links method, not specified for {for_machine.get_lower_case_name()} machine.') + else: + compiler = clist[SUFFIX_TO_LANG[suffix]] + testname = kwargs['name'] extra_args = functools.partial(self._determine_args, kwargs['no_builtin_args'], kwargs['include_directories'], kwargs['args']) deps, msg = self._determine_dependencies(kwargs['dependencies']) result, cached = self.compiler.links(code, self.environment, + compiler=compiler, extra_args=extra_args, dependencies=deps) cached_msg = mlog.blue('(cached)') if cached else '' |