From d8a3c777a62b18d33bbdbca0fd4954399e1ebc04 Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 24 Mar 2020 12:02:14 -0700 Subject: build: Fix link_language selection Currently it does nothing, as the field is read too late, and additional languages have already been considered. As such if the language requested is closer to C (for example you want C but have a C++ source with only extern C functions) then link_langauge is ignored. Fixes #6453 --- mesonbuild/build.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 8cef017b2..4a8e9cc15 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1219,10 +1219,6 @@ You probably should put it in link_with instead.''') ''' langs = [] # type: T.List[str] - # User specified link_language of target (for multi-language targets) - if self.link_language: - return [self.link_language] - # Check if any of the external libraries were written in this language for dep in self.external_deps: if dep.language is None: @@ -1253,6 +1249,12 @@ You probably should put it in link_with instead.''') # Populate list of all compilers, not just those being used to compile # sources in this target all_compilers = self.environment.coredata.compilers[self.for_machine] + + # If the user set the link_language, just return that. + if self.link_language: + comp = all_compilers[self.link_language] + return comp, comp.language_stdlib_only_link_flags() + # Languages used by dependencies dep_langs = self.get_langs_used_by_deps() # Pick a compiler based on the language priority-order -- cgit v1.2.3