Support cc_prebuilt_binary building with Bazel

Bp2build-enable cc_prebuilt_binary -> cc_prebuilt_binary

Bug: 241415823
Test: cc_prebuilt_binary_conversion_test.go
Change-Id: I007deef8d44f68993012f2114314d1cb52cfbb0e
This commit is contained in:
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux
2022-09-01 15:04:04 +00:00
parent a44a4e079f
commit b12ff59f0b
6 changed files with 208 additions and 47 deletions

View File

@@ -33,7 +33,7 @@ func RegisterPrebuiltBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_prebuilt_library_static", PrebuiltStaticLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_test_library_shared", PrebuiltSharedTestLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_object", prebuiltObjectFactory)
ctx.RegisterModuleType("cc_prebuilt_binary", prebuiltBinaryFactory)
ctx.RegisterModuleType("cc_prebuilt_binary", PrebuiltBinaryFactory)
}
type prebuiltLinkerInterface interface {
@@ -668,8 +668,8 @@ func (p *prebuiltBinaryLinker) binary() bool {
}
// cc_prebuilt_binary installs a precompiled executable in srcs property in the
// device's directory.
func prebuiltBinaryFactory() android.Module {
// device's directory, for both the host and device
func PrebuiltBinaryFactory() android.Module {
module, _ := NewPrebuiltBinary(android.HostAndDeviceSupported)
return module.Init()
}
@@ -690,6 +690,30 @@ func NewPrebuiltBinary(hod android.HostOrDeviceSupported) (*Module, *binaryDecor
return module, binary
}
type bazelPrebuiltBinaryAttributes struct {
Src bazel.LabelAttribute
Strip stripAttributes
}
func prebuiltBinaryBp2Build(ctx android.TopDownMutatorContext, module *Module) {
prebuiltAttrs := bp2BuildParsePrebuiltBinaryProps(ctx, module)
var la linkerAttributes
la.convertStripProps(ctx, module)
attrs := &bazelPrebuiltBinaryAttributes{
Src: prebuiltAttrs.Src,
Strip: stripAttrsFromLinkerAttrs(&la),
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "cc_prebuilt_binary",
Bzl_load_location: "//build/bazel/rules/cc:cc_prebuilt_binary.bzl",
}
name := android.RemoveOptionalPrebuiltPrefix(module.Name())
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs)
}
type Sanitized struct {
None struct {
Srcs []string `android:"path,arch_variant"`