Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65a54a8e authored by Matthew Maurer's avatar Matthew Maurer
Browse files

rust: Set android_vendor and android_product cfg

Add `android_vendor` and `android_product` cfgs, similar to
__ANDROID_VENDOR__ and __ANDROID_PRODUCT__ defines for C++

Bug: 270718001
Test: m nothing with added test
Change-Id: Ibeabe2983d1454e5a2ec0bb2f43e793b8f32a5c2
parent 5fba88bb
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -269,6 +269,11 @@ func (compiler *baseCompiler) featureFlags(ctx ModuleContext, flags Flags) Flags
func (compiler *baseCompiler) cfgFlags(ctx ModuleContext, flags Flags) Flags {
	if ctx.RustModule().UseVndk() {
		compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vndk")
		if ctx.RustModule().InVendor() {
			compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vendor")
		} else if ctx.RustModule().InProduct() {
			compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_product")
		}
	}

	flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...)
+30 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ func TestImageVndkCfgFlag(t *testing.T) {
				crate_name: "foo",
				srcs: ["foo.rs"],
				vendor_available: true,
				product_available: true,
			}
		`)

@@ -61,6 +62,35 @@ func TestImageVndkCfgFlag(t *testing.T) {
	if !strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_vndk'") {
		t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
	}
	if !strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_vendor'") {
		t.Errorf("missing \"--cfg 'android_vendor'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
	}
	if strings.Contains(vendor.Args["rustcFlags"], "--cfg 'android_product'") {
		t.Errorf("unexpected \"--cfg 'android_product'\" for libfoo vendor variant, rustcFlags: %#v", vendor.Args["rustcFlags"])
	}

	product := ctx.ModuleForTests("libfoo", "android_product.29_arm64_armv8-a_static").Rule("rustc")
	if !strings.Contains(product.Args["rustcFlags"], "--cfg 'android_vndk'") {
		t.Errorf("missing \"--cfg 'android_vndk'\" for libfoo product variant, rustcFlags: %#v", product.Args["rustcFlags"])
	}
	if strings.Contains(product.Args["rustcFlags"], "--cfg 'android_vendor'") {
		t.Errorf("unexpected \"--cfg 'android_vendor'\" for libfoo product variant, rustcFlags: %#v", product.Args["rustcFlags"])
	}
	if !strings.Contains(product.Args["rustcFlags"], "--cfg 'android_product'") {
		t.Errorf("missing \"--cfg 'android_product'\" for libfoo product variant, rustcFlags: %#v", product.Args["rustcFlags"])
	}

	system := ctx.ModuleForTests("libfoo", "android_arm64_armv8-a_static").Rule("rustc")
	if strings.Contains(system.Args["rustcFlags"], "--cfg 'android_vndk'") {
		t.Errorf("unexpected \"--cfg 'android_vndk'\" for libfoo system variant, rustcFlags: %#v", system.Args["rustcFlags"])
	}
	if strings.Contains(system.Args["rustcFlags"], "--cfg 'android_vendor'") {
		t.Errorf("unexpected \"--cfg 'android_vendor'\" for libfoo system variant, rustcFlags: %#v", system.Args["rustcFlags"])
	}
	if strings.Contains(system.Args["rustcFlags"], "--cfg 'android_product'") {
		t.Errorf("unexpected \"--cfg 'android_product'\" for libfoo system variant, rustcFlags: %#v", product.Args["rustcFlags"])
	}

}

// Test that cc modules can link against vendor_ramdisk_available rust_ffi_static libraries.