diff options
author | 2024-12-11 21:38:53 +0000 | |
---|---|---|
committer | 2024-12-13 19:53:20 +0000 | |
commit | 806efd3885d6eecfa1b1bd1697431c0ab073a76a (patch) | |
tree | a63dc4cae01bd6371745cdcce8fc979250fff654 /rust/compiler.go | |
parent | f7bbd2fe40e43f7fda7e08d08eeb9c2a93552ad9 (diff) |
rust: Alias rust_ffi_rlib to rust_library_rlib
With the new transition mutators, the distinctions between rust_ffi_rlib
and rust_library_rlib are not necessary. This CL removes the remaining
distinctions to allow an unusual use case where a rust_library and a
rust_ffi_rlib would otherwise be created from the same source. This
would allow defining a single rust_library_rlib that works for both rust
modules and cc modules.
One key change is that rust_ffi_rlibs only produced an rlib-std variant
previously, and now produce dylib-std variants as well.This surfaced an
issue where a libstd linkage mismatch would cause rustc to throw a
consufing missing crate error. We instead add logic to catch this in
Soong and provide a more useful error message.
Bug: 383552450
Test: m rust
Test: m blueprint_tests
Change-Id: I611ca46934059735d06229952cfd8e0ab7050486
Diffstat (limited to 'rust/compiler.go')
-rw-r--r-- | rust/compiler.go | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/rust/compiler.go b/rust/compiler.go index fd869174c..b93019b30 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -30,9 +30,8 @@ import ( type RustLinkage int const ( - DefaultLinkage RustLinkage = iota + DylibLinkage RustLinkage = iota RlibLinkage - DylibLinkage ) type compiler interface { @@ -69,7 +68,7 @@ type compiler interface { Disabled() bool SetDisabled() - stdLinkage(ctx *depsContext) RustLinkage + stdLinkage(device bool) RustLinkage noStdlibs() bool unstrippedOutputFilePath() android.Path @@ -316,11 +315,11 @@ func (compiler *baseCompiler) Aliases() map[string]string { return aliases } -func (compiler *baseCompiler) stdLinkage(ctx *depsContext) RustLinkage { +func (compiler *baseCompiler) stdLinkage(device bool) RustLinkage { // For devices, we always link stdlibs in as dylibs by default. if compiler.preferRlib() { return RlibLinkage - } else if ctx.Device() { + } else if device { return DylibLinkage } else { return RlibLinkage |