Support mixed building for cc_prebuilt_binary

Enable cc_prebuilt_binary to also take part in mixed builds.

Bug: 241415823
Test: TestPrebuiltBinaryWithBazel
Test: mixed_droid yields stats-log-api-gen under bazel-out/
Change-Id: I18b2906c91ea90370ab851a1287c2890546d633f
This commit is contained in:
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux
2022-10-04 18:24:58 +00:00
parent b12ff59f0b
commit 256e3b4597
2 changed files with 54 additions and 1 deletions

View File

@@ -674,9 +674,15 @@ func PrebuiltBinaryFactory() android.Module {
return module.Init()
}
type prebuiltBinaryBazelHandler struct {
module *Module
decorator *binaryDecorator
}
func NewPrebuiltBinary(hod android.HostOrDeviceSupported) (*Module, *binaryDecorator) {
module, binary := newBinary(hod, false)
module, binary := newBinary(hod, true)
module.compiler = nil
module.bazelHandler = &prebuiltBinaryBazelHandler{module, binary}
prebuilt := &prebuiltBinaryLinker{
binaryDecorator: binary,
@@ -690,6 +696,29 @@ func NewPrebuiltBinary(hod android.HostOrDeviceSupported) (*Module, *binaryDecor
return module, binary
}
var _ BazelHandler = (*prebuiltBinaryBazelHandler)(nil)
func (h *prebuiltBinaryBazelHandler) QueueBazelCall(ctx android.BaseModuleContext, label string) {
bazelCtx := ctx.Config().BazelContext
bazelCtx.QueueBazelRequest(label, cquery.GetOutputFiles, android.GetConfigKey(ctx))
}
func (h *prebuiltBinaryBazelHandler) ProcessBazelQueryResponse(ctx android.ModuleContext, label string) {
bazelCtx := ctx.Config().BazelContext
outputs, err := bazelCtx.GetOutputFiles(label, android.GetConfigKey(ctx))
if err != nil {
ctx.ModuleErrorf(err.Error())
return
}
if len(outputs) != 1 {
ctx.ModuleErrorf("Expected a single output for `%s`, but got:\n%v", label, outputs)
return
}
out := android.PathForBazelOut(ctx, outputs[0])
h.module.outputFile = android.OptionalPathForPath(out)
h.module.maybeUnhideFromMake()
}
type bazelPrebuiltBinaryAttributes struct {
Src bazel.LabelAttribute
Strip stripAttributes