From f76cdf7c20d87796324d935e5d5f23605cf2af4f Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Fri, 12 Feb 2021 09:55:06 -0500 Subject: rust: Emit android vndk cfg flag. Pass an "android_vndk" cfg flag that indicates this code targets the vndk. This can be useful in instances where code might need to behave differently. This also includes a fix to make sure our vendor Soong tests are correctly configured. Bug: 179907868 Test: Soong tests pass. Test: Example module emits new cfg flags. Change-Id: I01cdf91f6f9d42cd8a759266d5170479664bf4bc --- rust/image_test.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'rust/image_test.go') diff --git a/rust/image_test.go b/rust/image_test.go index 1515aa264..e40599c3a 100644 --- a/rust/image_test.go +++ b/rust/image_test.go @@ -15,6 +15,7 @@ package rust import ( + "strings" "testing" "android/soong/android" @@ -23,7 +24,7 @@ import ( // Test that cc modules can link against vendor_available rust_ffi_static libraries. func TestVendorLinkage(t *testing.T) { - ctx := testRust(t, ` + ctx := testRustVndk(t, ` cc_binary { name: "fizz_vendor", static_libs: ["libfoo_vendor"], @@ -37,16 +38,34 @@ func TestVendorLinkage(t *testing.T) { } `) - vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_arm64_armv8-a").Module().(*cc.Module) + vendorBinary := ctx.ModuleForTests("fizz_vendor", "android_vendor.VER_arm64_armv8-a").Module().(*cc.Module) if !android.InList("libfoo_vendor", vendorBinary.Properties.AndroidMkStaticLibs) { t.Errorf("vendorBinary should have a dependency on libfoo_vendor") } } +// Test that variants which use the vndk emit the appropriate cfg flag. +func TestImageVndkCfgFlag(t *testing.T) { + ctx := testRustVndk(t, ` + rust_ffi_static { + name: "libfoo", + crate_name: "foo", + srcs: ["foo.rs"], + vendor_available: true, + } + `) + + vendor := ctx.ModuleForTests("libfoo", "android_vendor.VER_arm64_armv8-a_static").Rule("rustc") + + if !strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_vndk'") { + t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"]) + } +} + // Test that cc modules can link against vendor_ramdisk_available rust_ffi_static libraries. func TestVendorRamdiskLinkage(t *testing.T) { - ctx := testRust(t, ` + ctx := testRustVndk(t, ` cc_library_static { name: "libcc_vendor_ramdisk", static_libs: ["libfoo_vendor_ramdisk"], -- cgit v1.2.3-59-g8ed1b