diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/build.py | 2 | ||||
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 9a87225..c58447b 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1474,7 +1474,7 @@ class BuildTarget(Target): links_with_rust_abi = isinstance(t, BuildTarget) and t.uses_rust_abi() if not self.uses_rust() and links_with_rust_abi: raise InvalidArguments(f'Try to link Rust ABI library {t.name!r} with a non-Rust target {self.name!r}') - if self.for_machine is not t.for_machine: + if self.for_machine is not t.for_machine and (not links_with_rust_abi or t.rust_crate_type != 'proc-macro'): msg = f'Tried to mix libraries for machines {self.for_machine} and {t.for_machine} in target {self.name!r}' if self.environment.is_cross_build(): raise InvalidArguments(msg + ' This is not possible in a cross build.') diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 1c02c5f..464ebea 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -3247,6 +3247,10 @@ class Interpreter(InterpreterBase, HoldableObject): name, sources = args for_machine = self.machine_from_native_kwarg(kwargs) + if kwargs.get('rust_crate_type') == 'proc-macro': + # Silently force to native because that's the only sensible value + # and rust_crate_type is deprecated any way. + for_machine = MachineChoice.BUILD if 'sources' in kwargs: sources += listify(kwargs['sources']) if any(isinstance(s, build.BuildTarget) for s in sources): |