rust: Add rust_ffi_static vendor ramdisk Support
Similar to our vendor support, this adds support for linking rust static libraries to vendor ramdisk cc modules. A bug fix is also included where a restriction against setting rust_ffi vendor-specific was not being enforced. Bug: 179397942 Test: Example modules link, Soong tests pass. Change-Id: I737cdf0c2f49ab349bcea2a0429e6298ebc1313e
This commit is contained in:
@@ -21,7 +21,7 @@ import (
|
||||
"android/soong/cc"
|
||||
)
|
||||
|
||||
// Test that cc_binaries can link against rust_ffi_static libraries.
|
||||
// Test that cc modules can link against vendor_available rust_ffi_static libraries.
|
||||
func TestVendorLinkage(t *testing.T) {
|
||||
ctx := testRust(t, `
|
||||
cc_binary {
|
||||
@@ -44,9 +44,33 @@ func TestVendorLinkage(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// Test that cc modules can link against vendor_ramdisk_available rust_ffi_static libraries.
|
||||
func TestVendorRamdiskLinkage(t *testing.T) {
|
||||
ctx := testRust(t, `
|
||||
cc_library_static {
|
||||
name: "libcc_vendor_ramdisk",
|
||||
static_libs: ["libfoo_vendor_ramdisk"],
|
||||
system_shared_libs: [],
|
||||
vendor_ramdisk_available: true,
|
||||
}
|
||||
rust_ffi_static {
|
||||
name: "libfoo_vendor_ramdisk",
|
||||
crate_name: "foo",
|
||||
srcs: ["foo.rs"],
|
||||
vendor_ramdisk_available: true,
|
||||
}
|
||||
`)
|
||||
|
||||
vendorRamdiskLibrary := ctx.ModuleForTests("libcc_vendor_ramdisk", "android_vendor_ramdisk_arm64_armv8-a_static").Module().(*cc.Module)
|
||||
|
||||
if !android.InList("libfoo_vendor_ramdisk.vendor_ramdisk", vendorRamdiskLibrary.Properties.AndroidMkStaticLibs) {
|
||||
t.Errorf("libcc_vendor_ramdisk should have a dependency on libfoo_vendor_ramdisk")
|
||||
}
|
||||
}
|
||||
|
||||
// Test that shared libraries cannot be made vendor available until proper support is added.
|
||||
func TestForbiddenVendorLinkage(t *testing.T) {
|
||||
testRustError(t, "can only be set for rust_ffi_static modules", `
|
||||
testRustError(t, "cannot be set for rust_ffi or rust_ffi_shared modules.", `
|
||||
rust_ffi_shared {
|
||||
name: "libfoo_vendor",
|
||||
crate_name: "foo",
|
||||
@@ -54,6 +78,14 @@ func TestForbiddenVendorLinkage(t *testing.T) {
|
||||
vendor_available: true,
|
||||
}
|
||||
`)
|
||||
testRustError(t, "cannot be set for rust_ffi or rust_ffi_shared modules.", `
|
||||
rust_ffi_shared {
|
||||
name: "libfoo_vendor",
|
||||
crate_name: "foo",
|
||||
srcs: ["foo.rs"],
|
||||
vendor_ramdisk_available: true,
|
||||
}
|
||||
`)
|
||||
testRustError(t, "Rust vendor specific modules are currently only supported for rust_ffi_static modules.", `
|
||||
rust_ffi {
|
||||
name: "libfoo_vendor",
|
||||
@@ -70,4 +102,13 @@ func TestForbiddenVendorLinkage(t *testing.T) {
|
||||
vendor: true,
|
||||
}
|
||||
`)
|
||||
testRustError(t, "Rust vendor specific modules are currently only supported for rust_ffi_static modules.", `
|
||||
rust_binary {
|
||||
name: "foo_vendor",
|
||||
crate_name: "foo",
|
||||
srcs: ["foo.rs"],
|
||||
vendor: true,
|
||||
}
|
||||
`)
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user