summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/rust.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2025-11-28 23:20:50 +0100
committerDylan Baker <dylan@pnwbakers.com>2025-12-01 09:37:23 -0800
commit5d89529c64ebb6fab4d26ff18b0ad86b09a0f31c (patch)
tree71c7e23ff019becf5ced3dae7b754a0713a8307a /mesonbuild/compilers/rust.py
parent2e14cdd18efb15845d42ba458dce65fcaa533e39 (diff)
downloadmeson-5d89529c64ebb6fab4d26ff18b0ad86b09a0f31c.tar.gz
rust: Rust-ABI dynamic libraries do not support LTO
Attempting to use LTO on e.g. a procedural macro crate fails with error: lto cannot be used for proc-macro crate type without -Zdylib-lto Do not return -Clto for such crate types. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/compilers/rust.py')
-rw-r--r--mesonbuild/compilers/rust.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py
index b09522f37..ab0706d26 100644
--- a/mesonbuild/compilers/rust.py
+++ b/mesonbuild/compilers/rust.py
@@ -367,6 +367,9 @@ class RustCompiler(Compiler):
def get_lto_compile_args(self, *, target: T.Optional[BuildTarget] = None, threads: int = 0,
mode: str = 'default') -> T.List[str]:
+ if target.rust_crate_type in {'dylib', 'proc-macro'}:
+ return []
+
# TODO: what about -Clinker-plugin-lto?
rustc_lto = 'lto=thin' if mode == 'thin' else 'lto'
return ['-C', rustc_lto]