diff --git a/android/module.go b/android/module.go index 68008c2cf..a20dc566f 100644 --- a/android/module.go +++ b/android/module.go @@ -492,22 +492,39 @@ type Module interface { TransitivePackagingSpecs() []PackagingSpec } +// BazelTargetModule is a lightweight wrapper interface around Module for +// bp2build conversion purposes. +// +// In bp2build's bootstrap.Main execution, Soong runs an alternate pipeline of +// mutators that creates BazelTargetModules from regular Module objects, +// performing the mapping from Soong properties to Bazel rule attributes in the +// process. This process may optionally create additional BazelTargetModules, +// resulting in a 1:many mapping. +// +// bp2build.Codegen is then responsible for visiting all modules in the graph, +// filtering for BazelTargetModules, and code-generating BUILD targets from +// them. type BazelTargetModule interface { Module BazelTargetModuleProperties() *bazel.BazelTargetModuleProperties } +// InitBazelTargetModule is a wrapper function that decorates BazelTargetModule +// with property structs containing metadata for bp2build conversion. func InitBazelTargetModule(module BazelTargetModule) { module.AddProperties(module.BazelTargetModuleProperties()) InitAndroidModule(module) } +// BazelTargetModuleBase contains the property structs with metadata for +// bp2build conversion. type BazelTargetModuleBase struct { ModuleBase Properties bazel.BazelTargetModuleProperties } +// BazelTargetModuleProperties getter. func (btmb *BazelTargetModuleBase) BazelTargetModuleProperties() *bazel.BazelTargetModuleProperties { return &btmb.Properties }