Rust rlib vendor snapshot support.
Adds support for snapshotting Rust rlibs. This allows us
vendor-specific code that uses rlib-only linkage until dylib
snapshot support is added.
Bug: 184042776
Test: m nothing # new Soong tests pass
Test: Example test Rust vendor module builds
Test: m dist vendor-snapshot # includes rlibs
Change-Id: I4976d3e1efec0ee778cc97730d45be471dffb678
diff --git a/rust/library.go b/rust/library.go
index 7421817..1a56ef6 100644
--- a/rust/library.go
+++ b/rust/library.go
@@ -124,7 +124,8 @@
setStatic()
setSource()
- // Set libstd linkage
+ // libstd linkage functions
+ rlibStd() bool
setRlibStd()
setDylibStd()
@@ -195,6 +196,10 @@
library.MutatedProperties.VariantIsShared = false
}
+func (library *libraryDecorator) rlibStd() bool {
+ return library.MutatedProperties.VariantIsStaticStd
+}
+
func (library *libraryDecorator) setRlibStd() {
library.MutatedProperties.VariantIsStaticStd = true
}
@@ -680,9 +685,10 @@
dylib := modules[1].(*Module)
rlib.compiler.(libraryInterface).setRlibStd()
dylib.compiler.(libraryInterface).setDylibStd()
- if dylib.ModuleBase.ImageVariation().Variation == android.VendorRamdiskVariation {
+ if dylib.ModuleBase.ImageVariation().Variation == android.VendorRamdiskVariation ||
+ strings.HasPrefix(dylib.ModuleBase.ImageVariation().Variation, cc.VendorVariationPrefix) {
// TODO(b/165791368)
- // Disable rlibs that link against dylib-std on vendor ramdisk variations until those dylib
+ // Disable rlibs that link against dylib-std on vendor and vendor ramdisk variations until those dylib
// variants are properly supported.
dylib.Disable()
}