Loading cc/cc.go +11 −0 Original line number Original line Diff line number Diff line Loading @@ -390,6 +390,17 @@ type VendorProperties struct { // Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk // Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk Vendor_available *bool Vendor_available *bool // This is the same as the "vendor_available" except that the install path // of the vendor variant is /odm or /vendor/odm. // By replacing "vendor_available: true" with "odm_available: true", the // module will install its vendor variant to the /odm partition or /vendor/odm. // As the modules with "odm_available: true" still create the vendor variants, // they can link to the other vendor modules as the vendor_available modules do. // Also, the vendor modules can link to odm_available modules. // // It may not be used for VNDK modules. Odm_available *bool // whether this module should be allowed to be directly depended by other // whether this module should be allowed to be directly depended by other // modules with `product_specific: true` or `product_available: true`. // modules with `product_specific: true` or `product_available: true`. // If set to true, an additional product variant will be built separately // If set to true, an additional product variant will be built separately Loading cc/genrule.go +3 −2 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ func init() { type GenruleExtraProperties struct { type GenruleExtraProperties struct { Vendor_available *bool Vendor_available *bool Odm_available *bool Product_available *bool Product_available *bool Ramdisk_available *bool Ramdisk_available *bool Vendor_ramdisk_available *bool Vendor_ramdisk_available *bool Loading Loading @@ -63,7 +64,7 @@ func (g *GenruleExtraProperties) CoreVariantNeeded(ctx android.BaseModuleContext return false return false } } return Bool(g.Vendor_available) || Bool(g.Product_available) || !(ctx.SocSpecific() || ctx.DeviceSpecific()) return !(ctx.SocSpecific() || ctx.DeviceSpecific()) } } func (g *GenruleExtraProperties) RamdiskVariantNeeded(ctx android.BaseModuleContext) bool { func (g *GenruleExtraProperties) RamdiskVariantNeeded(ctx android.BaseModuleContext) bool { Loading Loading @@ -92,7 +93,7 @@ func (g *GenruleExtraProperties) ExtraImageVariations(ctx android.BaseModuleCont } } var variants []string var variants []string if Bool(g.Vendor_available) || ctx.SocSpecific() || ctx.DeviceSpecific() { if Bool(g.Vendor_available) || Bool(g.Odm_available) || ctx.SocSpecific() || ctx.DeviceSpecific() { vndkVersion := ctx.DeviceConfig().VndkVersion() vndkVersion := ctx.DeviceConfig().VndkVersion() // If vndkVersion is current, we can always use PlatformVndkVersion. // If vndkVersion is current, we can always use PlatformVndkVersion. // If not, we assume modules under proprietary paths are compatible for // If not, we assume modules under proprietary paths are compatible for Loading cc/image.go +27 −4 Original line number Original line Diff line number Diff line Loading @@ -56,8 +56,14 @@ func (ctx *moduleContext) ProductSpecific() bool { func (ctx *moduleContext) SocSpecific() bool { func (ctx *moduleContext) SocSpecific() bool { // Additionally check if this module is inVendor() that means it is a "vendor" variant of a // Additionally check if this module is inVendor() that means it is a "vendor" variant of a // module. As well as SoC specific modules, vendor variants must be installed to /vendor. // module. As well as SoC specific modules, vendor variants must be installed to /vendor return ctx.ModuleContext.SocSpecific() || ctx.mod.InVendor() // unless they have "odm_available: true". return ctx.ModuleContext.SocSpecific() || (ctx.mod.InVendor() && !ctx.mod.VendorVariantToOdm()) } func (ctx *moduleContext) DeviceSpecific() bool { // Some vendor variants want to be installed to /odm by setting "odm_available: true". return ctx.ModuleContext.DeviceSpecific() || (ctx.mod.InVendor() && ctx.mod.VendorVariantToOdm()) } } func (ctx *moduleContextImpl) inProduct() bool { func (ctx *moduleContextImpl) inProduct() bool { Loading @@ -82,7 +88,13 @@ func (ctx *moduleContextImpl) inRecovery() bool { // Returns true when this module is configured to have core and vendor variants. // Returns true when this module is configured to have core and vendor variants. func (c *Module) HasVendorVariant() bool { func (c *Module) HasVendorVariant() bool { return Bool(c.VendorProperties.Vendor_available) return Bool(c.VendorProperties.Vendor_available) || Bool(c.VendorProperties.Odm_available) } // Returns true when this module creates a vendor variant and wants to install the vendor variant // to the odm partition. func (c *Module) VendorVariantToOdm() bool { return Bool(c.VendorProperties.Odm_available) } } // Returns true when this module is configured to have core and product variants. // Returns true when this module is configured to have core and product variants. Loading Loading @@ -185,6 +197,17 @@ func (m *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf("vendor_available", "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } if Bool(m.VendorProperties.Odm_available) { mctx.PropertyErrorf("vendor_available", "doesn't make sense at the same time as `odm_available: true`") } } if Bool(m.VendorProperties.Odm_available) { if vendorSpecific { mctx.PropertyErrorf("odm_available", "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } } if Bool(m.VendorProperties.Product_available) { if Bool(m.VendorProperties.Product_available) { Loading cc/library_sdk_member.go +4 −0 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,10 @@ func (mt *librarySdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, pbm.AddProperty("vendor_available", true) pbm.AddProperty("vendor_available", true) } } if proptools.Bool(ccModule.VendorProperties.Odm_available) { pbm.AddProperty("odm_available", true) } if proptools.Bool(ccModule.VendorProperties.Product_available) { if proptools.Bool(ccModule.VendorProperties.Product_available) { pbm.AddProperty("product_available", true) pbm.AddProperty("product_available", true) } } Loading rust/image.go +11 −11 Original line number Original line Diff line number Diff line Loading @@ -68,11 +68,7 @@ func (mod *Module) OnlyInVendorRamdisk() bool { // Returns true when this module is configured to have core and vendor variants. // Returns true when this module is configured to have core and vendor variants. func (mod *Module) HasVendorVariant() bool { func (mod *Module) HasVendorVariant() bool { return mod.IsVndk() || Bool(mod.VendorProperties.Vendor_available) return Bool(mod.VendorProperties.Vendor_available) || Bool(mod.VendorProperties.Odm_available) } func (c *Module) VendorAvailable() bool { return Bool(c.VendorProperties.Vendor_available) } } func (c *Module) InProduct() bool { func (c *Module) InProduct() bool { Loading Loading @@ -114,9 +110,14 @@ func (mod *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { coreVariantNeeded := true coreVariantNeeded := true var vendorVariants []string var vendorVariants []string if Bool(mod.VendorProperties.Vendor_available) { if mod.HasVendorVariant() { prop := "vendor_available" if Bool(mod.VendorProperties.Odm_available) { prop = "odm_available" } if vendorSpecific { if vendorSpecific { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf(prop, "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } Loading @@ -128,9 +129,8 @@ func (mod *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { // We can't check shared() here because image mutator is called before the library mutator, so we need to // We can't check shared() here because image mutator is called before the library mutator, so we need to // check buildShared() // check buildShared() if lib.buildShared() { if lib.buildShared() { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf(prop, "can only be set for rust_ffi_static modules.") "vendor_available can only be set for rust_ffi_static modules.") } else { } else if Bool(mod.VendorProperties.Vendor_available) == true { vendorVariants = append(vendorVariants, platformVndkVersion) vendorVariants = append(vendorVariants, platformVndkVersion) } } } } Loading Loading
cc/cc.go +11 −0 Original line number Original line Diff line number Diff line Loading @@ -390,6 +390,17 @@ type VendorProperties struct { // Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk // Nothing happens if BOARD_VNDK_VERSION isn't set in the BoardConfig.mk Vendor_available *bool Vendor_available *bool // This is the same as the "vendor_available" except that the install path // of the vendor variant is /odm or /vendor/odm. // By replacing "vendor_available: true" with "odm_available: true", the // module will install its vendor variant to the /odm partition or /vendor/odm. // As the modules with "odm_available: true" still create the vendor variants, // they can link to the other vendor modules as the vendor_available modules do. // Also, the vendor modules can link to odm_available modules. // // It may not be used for VNDK modules. Odm_available *bool // whether this module should be allowed to be directly depended by other // whether this module should be allowed to be directly depended by other // modules with `product_specific: true` or `product_available: true`. // modules with `product_specific: true` or `product_available: true`. // If set to true, an additional product variant will be built separately // If set to true, an additional product variant will be built separately Loading
cc/genrule.go +3 −2 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,7 @@ func init() { type GenruleExtraProperties struct { type GenruleExtraProperties struct { Vendor_available *bool Vendor_available *bool Odm_available *bool Product_available *bool Product_available *bool Ramdisk_available *bool Ramdisk_available *bool Vendor_ramdisk_available *bool Vendor_ramdisk_available *bool Loading Loading @@ -63,7 +64,7 @@ func (g *GenruleExtraProperties) CoreVariantNeeded(ctx android.BaseModuleContext return false return false } } return Bool(g.Vendor_available) || Bool(g.Product_available) || !(ctx.SocSpecific() || ctx.DeviceSpecific()) return !(ctx.SocSpecific() || ctx.DeviceSpecific()) } } func (g *GenruleExtraProperties) RamdiskVariantNeeded(ctx android.BaseModuleContext) bool { func (g *GenruleExtraProperties) RamdiskVariantNeeded(ctx android.BaseModuleContext) bool { Loading Loading @@ -92,7 +93,7 @@ func (g *GenruleExtraProperties) ExtraImageVariations(ctx android.BaseModuleCont } } var variants []string var variants []string if Bool(g.Vendor_available) || ctx.SocSpecific() || ctx.DeviceSpecific() { if Bool(g.Vendor_available) || Bool(g.Odm_available) || ctx.SocSpecific() || ctx.DeviceSpecific() { vndkVersion := ctx.DeviceConfig().VndkVersion() vndkVersion := ctx.DeviceConfig().VndkVersion() // If vndkVersion is current, we can always use PlatformVndkVersion. // If vndkVersion is current, we can always use PlatformVndkVersion. // If not, we assume modules under proprietary paths are compatible for // If not, we assume modules under proprietary paths are compatible for Loading
cc/image.go +27 −4 Original line number Original line Diff line number Diff line Loading @@ -56,8 +56,14 @@ func (ctx *moduleContext) ProductSpecific() bool { func (ctx *moduleContext) SocSpecific() bool { func (ctx *moduleContext) SocSpecific() bool { // Additionally check if this module is inVendor() that means it is a "vendor" variant of a // Additionally check if this module is inVendor() that means it is a "vendor" variant of a // module. As well as SoC specific modules, vendor variants must be installed to /vendor. // module. As well as SoC specific modules, vendor variants must be installed to /vendor return ctx.ModuleContext.SocSpecific() || ctx.mod.InVendor() // unless they have "odm_available: true". return ctx.ModuleContext.SocSpecific() || (ctx.mod.InVendor() && !ctx.mod.VendorVariantToOdm()) } func (ctx *moduleContext) DeviceSpecific() bool { // Some vendor variants want to be installed to /odm by setting "odm_available: true". return ctx.ModuleContext.DeviceSpecific() || (ctx.mod.InVendor() && ctx.mod.VendorVariantToOdm()) } } func (ctx *moduleContextImpl) inProduct() bool { func (ctx *moduleContextImpl) inProduct() bool { Loading @@ -82,7 +88,13 @@ func (ctx *moduleContextImpl) inRecovery() bool { // Returns true when this module is configured to have core and vendor variants. // Returns true when this module is configured to have core and vendor variants. func (c *Module) HasVendorVariant() bool { func (c *Module) HasVendorVariant() bool { return Bool(c.VendorProperties.Vendor_available) return Bool(c.VendorProperties.Vendor_available) || Bool(c.VendorProperties.Odm_available) } // Returns true when this module creates a vendor variant and wants to install the vendor variant // to the odm partition. func (c *Module) VendorVariantToOdm() bool { return Bool(c.VendorProperties.Odm_available) } } // Returns true when this module is configured to have core and product variants. // Returns true when this module is configured to have core and product variants. Loading Loading @@ -185,6 +197,17 @@ func (m *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf("vendor_available", "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } if Bool(m.VendorProperties.Odm_available) { mctx.PropertyErrorf("vendor_available", "doesn't make sense at the same time as `odm_available: true`") } } if Bool(m.VendorProperties.Odm_available) { if vendorSpecific { mctx.PropertyErrorf("odm_available", "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } } if Bool(m.VendorProperties.Product_available) { if Bool(m.VendorProperties.Product_available) { Loading
cc/library_sdk_member.go +4 −0 Original line number Original line Diff line number Diff line Loading @@ -130,6 +130,10 @@ func (mt *librarySdkMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, pbm.AddProperty("vendor_available", true) pbm.AddProperty("vendor_available", true) } } if proptools.Bool(ccModule.VendorProperties.Odm_available) { pbm.AddProperty("odm_available", true) } if proptools.Bool(ccModule.VendorProperties.Product_available) { if proptools.Bool(ccModule.VendorProperties.Product_available) { pbm.AddProperty("product_available", true) pbm.AddProperty("product_available", true) } } Loading
rust/image.go +11 −11 Original line number Original line Diff line number Diff line Loading @@ -68,11 +68,7 @@ func (mod *Module) OnlyInVendorRamdisk() bool { // Returns true when this module is configured to have core and vendor variants. // Returns true when this module is configured to have core and vendor variants. func (mod *Module) HasVendorVariant() bool { func (mod *Module) HasVendorVariant() bool { return mod.IsVndk() || Bool(mod.VendorProperties.Vendor_available) return Bool(mod.VendorProperties.Vendor_available) || Bool(mod.VendorProperties.Odm_available) } func (c *Module) VendorAvailable() bool { return Bool(c.VendorProperties.Vendor_available) } } func (c *Module) InProduct() bool { func (c *Module) InProduct() bool { Loading Loading @@ -114,9 +110,14 @@ func (mod *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { coreVariantNeeded := true coreVariantNeeded := true var vendorVariants []string var vendorVariants []string if Bool(mod.VendorProperties.Vendor_available) { if mod.HasVendorVariant() { prop := "vendor_available" if Bool(mod.VendorProperties.Odm_available) { prop = "odm_available" } if vendorSpecific { if vendorSpecific { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf(prop, "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") "doesn't make sense at the same time as `vendor: true`, `proprietary: true`, or `device_specific: true`") } } Loading @@ -128,9 +129,8 @@ func (mod *Module) ImageMutatorBegin(mctx android.BaseModuleContext) { // We can't check shared() here because image mutator is called before the library mutator, so we need to // We can't check shared() here because image mutator is called before the library mutator, so we need to // check buildShared() // check buildShared() if lib.buildShared() { if lib.buildShared() { mctx.PropertyErrorf("vendor_available", mctx.PropertyErrorf(prop, "can only be set for rust_ffi_static modules.") "vendor_available can only be set for rust_ffi_static modules.") } else { } else if Bool(mod.VendorProperties.Vendor_available) == true { vendorVariants = append(vendorVariants, platformVndkVersion) vendorVariants = append(vendorVariants, platformVndkVersion) } } } } Loading