diff --git a/android/bazel_handler.go b/android/bazel_handler.go index 341d500d7..b272daa53 100644 --- a/android/bazel_handler.go +++ b/android/bazel_handler.go @@ -57,6 +57,17 @@ type cqueryKey struct { archType ArchType } +// bazelHandler is the interface for a helper object related to deferring to Bazel for +// processing a module (during Bazel mixed builds). Individual module types should define +// their own bazel handler if they support deferring to Bazel. +type BazelHandler interface { + // Issue query to Bazel to retrieve information about Bazel's view of the current module. + // If Bazel returns this information, set module properties on the current module to reflect + // the returned information. + // Returns true if information was available from Bazel, false if bazel invocation still needs to occur. + GenerateBazelBuildActions(ctx ModuleContext, label string) bool +} + type BazelContext interface { // The below methods involve queuing cquery requests to be later invoked // by bazel. If any of these methods return (_, false), then the request diff --git a/android/filegroup.go b/android/filegroup.go index e2074127e..97dd136a0 100644 --- a/android/filegroup.go +++ b/android/filegroup.go @@ -15,8 +15,9 @@ package android import ( - "android/soong/bazel" "strings" + + "android/soong/bazel" ) func init() { @@ -108,7 +109,7 @@ func FileGroupFactory() Module { return module } -func (fg *fileGroup) generateBazelBuildActions(ctx ModuleContext) bool { +func (fg *fileGroup) GenerateBazelBuildActions(ctx ModuleContext) bool { if !fg.MixedBuildsEnabled(ctx) { return false } @@ -131,7 +132,7 @@ func (fg *fileGroup) generateBazelBuildActions(ctx ModuleContext) bool { } func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) { - if fg.generateBazelBuildActions(ctx) { + if fg.GenerateBazelBuildActions(ctx) { return } diff --git a/cc/cc.go b/cc/cc.go index 39d89e595..e4f4761c2 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -589,17 +589,6 @@ type installer interface { installInRoot() bool } -// bazelHandler is the interface for a helper object related to deferring to Bazel for -// processing a module (during Bazel mixed builds). Individual module types should define -// their own bazel handler if they support deferring to Bazel. -type bazelHandler interface { - // Issue query to Bazel to retrieve information about Bazel's view of the current module. - // If Bazel returns this information, set module properties on the current module to reflect - // the returned information. - // Returns true if information was available from Bazel, false if bazel invocation still needs to occur. - generateBazelBuildActions(ctx android.ModuleContext, label string) bool -} - type xref interface { XrefCcFiles() android.Paths } @@ -796,7 +785,7 @@ type Module struct { compiler compiler linker linker installer installer - bazelHandler bazelHandler + bazelHandler android.BazelHandler features []feature stl *stl @@ -1696,7 +1685,7 @@ func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool { bazelModuleLabel := c.GetBazelLabel(actx, c) bazelActionsUsed := false if c.MixedBuildsEnabled(actx) && c.bazelHandler != nil { - bazelActionsUsed = c.bazelHandler.generateBazelBuildActions(actx, bazelModuleLabel) + bazelActionsUsed = c.bazelHandler.GenerateBazelBuildActions(actx, bazelModuleLabel) } return bazelActionsUsed } diff --git a/cc/library.go b/cc/library.go index 51cba208e..b2360e9da 100644 --- a/cc/library.go +++ b/cc/library.go @@ -556,7 +556,7 @@ type libraryDecorator struct { } type ccLibraryBazelHandler struct { - bazelHandler + android.BazelHandler module *Module } @@ -642,7 +642,7 @@ func getTocFile(ctx android.ModuleContext, label string, outputFiles []string) a return android.OptionalPathForPath(android.PathForBazelOut(ctx, tocFile)) } -func (handler *ccLibraryBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool { +func (handler *ccLibraryBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool { bazelCtx := ctx.Config().BazelContext ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType) if err != nil { diff --git a/cc/library_headers.go b/cc/library_headers.go index e596ff7a8..1a276f44f 100644 --- a/cc/library_headers.go +++ b/cc/library_headers.go @@ -44,13 +44,13 @@ func RegisterLibraryHeadersBuildComponents(ctx android.RegistrationContext) { } type libraryHeaderBazelHander struct { - bazelHandler + android.BazelHandler module *Module library *libraryDecorator } -func (h *libraryHeaderBazelHander) generateBazelBuildActions(ctx android.ModuleContext, label string) bool { +func (h *libraryHeaderBazelHander) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool { bazelCtx := ctx.Config().BazelContext ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType) if err != nil { diff --git a/cc/object.go b/cc/object.go index bd9f22827..5952f1eea 100644 --- a/cc/object.go +++ b/cc/object.go @@ -47,12 +47,12 @@ type objectLinker struct { } type objectBazelHandler struct { - bazelHandler + android.BazelHandler module *Module } -func (handler *objectBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool { +func (handler *objectBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool { bazelCtx := ctx.Config().BazelContext objPaths, ok := bazelCtx.GetOutputFiles(label, ctx.Arch().ArchType) if ok { diff --git a/cc/prebuilt.go b/cc/prebuilt.go index f7154ecd1..d324241e0 100644 --- a/cc/prebuilt.go +++ b/cc/prebuilt.go @@ -15,9 +15,10 @@ package cc import ( - "android/soong/android" "path/filepath" "strings" + + "android/soong/android" ) func init() { @@ -321,13 +322,13 @@ type prebuiltObjectLinker struct { } type prebuiltStaticLibraryBazelHandler struct { - bazelHandler + android.BazelHandler module *Module library *libraryDecorator } -func (h *prebuiltStaticLibraryBazelHandler) generateBazelBuildActions(ctx android.ModuleContext, label string) bool { +func (h *prebuiltStaticLibraryBazelHandler) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool { bazelCtx := ctx.Config().BazelContext ccInfo, ok, err := bazelCtx.GetCcInfo(label, ctx.Arch().ArchType) if err != nil { diff --git a/genrule/genrule.go b/genrule/genrule.go index 71a878088..fdb3618e9 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -240,7 +240,7 @@ func toolDepsMutator(ctx android.BottomUpMutatorContext) { } // Returns true if information was available from Bazel, false if bazel invocation still needs to occur. -func (c *Module) generateBazelBuildActions(ctx android.ModuleContext, label string) bool { +func (c *Module) GenerateBazelBuildActions(ctx android.ModuleContext, label string) bool { bazelCtx := ctx.Config().BazelContext filePaths, ok := bazelCtx.GetOutputFiles(label, ctx.Arch().ArchType) if ok { @@ -560,7 +560,7 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { bazelModuleLabel := g.GetBazelLabel(ctx, g) bazelActionsUsed := false if g.MixedBuildsEnabled(ctx) { - bazelActionsUsed = g.generateBazelBuildActions(ctx, bazelModuleLabel) + bazelActionsUsed = g.GenerateBazelBuildActions(ctx, bazelModuleLabel) } if !bazelActionsUsed { // For <= 6 outputs, just embed those directly in the users. Right now, that covers >90% of