summaryrefslogtreecommitdiff
path: root/rust/compiler.go
diff options
context:
space:
mode:
authorIvan Lozano <ivanlozano@google.com>2020-04-28 10:10:23 -0400
committerIvan Lozano <ivanlozano@google.com>2020-04-29 15:31:34 -0400
commit9d1df10e2a7aacb4ada52000dc299ce8c187330a (patch)
tree46e467230778530d2ddac2cdcabccc33e1be757b /rust/compiler.go
parent52c0b7b35b5c5b510bac0a0a98d493b7d953a10d (diff)
Provide 32-bit and 64-bit Rust libs by default.
CC libraries which depend on Rust libraries get missing dependency errors when building 32-bit variants dependent on Rust modules which don't explicitly have "multilib: both" declared. Because CC libraries use MultilibBoth by default, Rust should do the same. This also fixes a bug where the ARM32 toolchain incorrectly embedded toolchain64Bit instead of toolchain32Bit. Bug: 154730212 Test: Rust libraries provide both variants by default. Change-Id: Ia545fe069d3c6b77c3d18f4f10267e2c72ee0bab
Diffstat (limited to 'rust/compiler.go')
-rw-r--r--rust/compiler.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/rust/compiler.go b/rust/compiler.go
index 81b258c1e..74997761b 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -183,8 +183,8 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps {
if !Bool(compiler.Properties.No_stdlibs) {
for _, stdlib := range config.Stdlibs {
- // If we're building for host, use the compiler's stdlibs
- if ctx.Host() {
+ // If we're building for the primary host target, use the compiler's stdlibs
+ if ctx.Host() && ctx.TargetPrimary() {
stdlib = stdlib + "_" + ctx.toolchain().RustTriple()
}
@@ -192,9 +192,12 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps {
// static linking is the default, if one of our static
// dependencies uses a dynamic library, we need to dynamically
// link the stdlib as well.
- if (len(deps.Dylibs) > 0) || (!ctx.Host()) {
+ if (len(deps.Dylibs) > 0) || ctx.Device() {
// Dynamically linked stdlib
deps.Dylibs = append(deps.Dylibs, stdlib)
+ } else if ctx.Host() && !ctx.TargetPrimary() {
+ // Otherwise use the static in-tree stdlib for host secondary arch
+ deps.Rlibs = append(deps.Rlibs, stdlib+".static")
}
}
}