diff options
Diffstat (limited to 'java')
| -rw-r--r-- | java/boot_image.go | 82 | ||||
| -rw-r--r-- | java/boot_image_test.go | 9 |
2 files changed, 90 insertions, 1 deletions
diff --git a/java/boot_image.go b/java/boot_image.go index 8a1e3c957..12e287459 100644 --- a/java/boot_image.go +++ b/java/boot_image.go @@ -25,10 +25,18 @@ import ( func init() { RegisterBootImageBuildComponents(android.InitRegistrationContext) + + android.RegisterSdkMemberType(&bootImageMemberType{ + SdkMemberTypeBase: android.SdkMemberTypeBase{ + PropertyName: "boot_images", + SupportsSdk: true, + }, + }) } func RegisterBootImageBuildComponents(ctx android.RegistrationContext) { ctx.RegisterModuleType("boot_image", bootImageFactory) + ctx.RegisterModuleType("prebuilt_boot_image", prebuiltBootImageFactory) } type bootImageProperties struct { @@ -41,7 +49,7 @@ type bootImageProperties struct { type BootImageModule struct { android.ModuleBase android.ApexModuleBase - + android.SdkBase properties bootImageProperties } @@ -50,6 +58,7 @@ func bootImageFactory() android.Module { m.AddProperties(&m.properties) android.InitAndroidArchModule(m, android.HostAndDeviceSupported, android.MultilibCommon) android.InitApexModule(m) + android.InitSdkAwareModule(m) return m } @@ -138,3 +147,74 @@ func (b *BootImageModule) GenerateAndroidBuildActions(ctx android.ModuleContext) // Make it available for other modules. ctx.SetProvider(BootImageInfoProvider, info) } + +type bootImageMemberType struct { + android.SdkMemberTypeBase +} + +func (b *bootImageMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { + mctx.AddVariationDependencies(nil, dependencyTag, names...) +} + +func (b *bootImageMemberType) IsInstance(module android.Module) bool { + _, ok := module.(*BootImageModule) + return ok +} + +func (b *bootImageMemberType) AddPrebuiltModule(ctx android.SdkMemberContext, member android.SdkMember) android.BpModule { + return ctx.SnapshotBuilder().AddPrebuiltModule(member, "prebuilt_boot_image") +} + +func (b *bootImageMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties { + return &bootImageSdkMemberProperties{} +} + +type bootImageSdkMemberProperties struct { + android.SdkMemberPropertiesBase + + Image_name string +} + +func (b *bootImageSdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) { + module := variant.(*BootImageModule) + + b.Image_name = module.properties.Image_name +} + +func (b *bootImageSdkMemberProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) { + if b.Image_name != "" { + propertySet.AddProperty("image_name", b.Image_name) + } +} + +var _ android.SdkMemberType = (*bootImageMemberType)(nil) + +// A prebuilt version of the boot image module. +// +// At the moment this is basically just a boot image module that can be used as a prebuilt. +// Eventually as more functionality is migrated into the boot image module from the singleton then +// this will diverge. +type prebuiltBootImageModule struct { + BootImageModule + prebuilt android.Prebuilt +} + +func (module *prebuiltBootImageModule) Prebuilt() *android.Prebuilt { + return &module.prebuilt +} + +func (module *prebuiltBootImageModule) Name() string { + return module.prebuilt.Name(module.ModuleBase.Name()) +} + +func prebuiltBootImageFactory() android.Module { + m := &prebuiltBootImageModule{} + m.AddProperties(&m.properties) + android.InitAndroidArchModule(m, android.HostAndDeviceSupported, android.MultilibCommon) + // This doesn't actually have any prebuilt files of its own so pass a placeholder for the srcs + // array. + android.InitPrebuiltModule(m, &[]string{"placeholder"}) + android.InitApexModule(m) + android.InitSdkAwareModule(m) + return m +} diff --git a/java/boot_image_test.go b/java/boot_image_test.go index a29578292..65e590d86 100644 --- a/java/boot_image_test.go +++ b/java/boot_image_test.go @@ -29,3 +29,12 @@ func TestUnknownBootImage(t *testing.T) { } `) } + +func TestUnknownPrebuiltBootImage(t *testing.T) { + testJavaError(t, "image_name: Unknown image name \\\"unknown\\\", expected one of art, boot", ` + prebuilt_boot_image { + name: "unknown-boot-image", + image_name: "unknown", + } +`) +} |