cc_prebuilt_library_shared converted via bp2build

Bug: b/203699063
Test: bp2build/cc_prebuilt_library_shared_test.go
Test: USE_BAZEL_ANALYSIS=1 m nothing
Test: mixed_{libc,droid}.sh
Change-Id: I4c58224e88c31507a4b285f8c55bdc066bd47232
This commit is contained in:
Alex Márquez Pérez Muñíz Díaz Púras Thaureaux
2021-10-25 10:28:33 -04:00
parent 2a524318e4
commit 7fa0696eb7
2 changed files with 104 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
package bp2build
import (
"testing"
"android/soong/cc"
)
func TestSharedPrebuiltLibrary(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library shared simple",
moduleTypeUnderTest: "cc_prebuilt_library_shared",
moduleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
moduleTypeUnderTestBp2BuildMutator: cc.PrebuiltLibrarySharedBp2Build,
filesystem: map[string]string{
"libf.so": "",
},
blueprint: `
cc_prebuilt_library_shared {
name: "libtest",
srcs: ["libf.so"],
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
`prebuilt_library_shared(
name = "libtest",
shared_library = "libf.so",
)`,
},
})
}
func TestSharedPrebuiltLibraryWithArchVariance(t *testing.T) {
runBp2BuildTestCaseSimple(t,
bp2buildTestCase{
description: "prebuilt library shared with arch variance",
moduleTypeUnderTest: "cc_prebuilt_library_shared",
moduleTypeUnderTestFactory: cc.PrebuiltSharedLibraryFactory,
moduleTypeUnderTestBp2BuildMutator: cc.PrebuiltLibrarySharedBp2Build,
filesystem: map[string]string{
"libf.so": "",
"libg.so": "",
},
blueprint: `
cc_prebuilt_library_shared {
name: "libtest",
arch: {
arm64: { srcs: ["libf.so"], },
arm: { srcs: ["libg.so"], },
},
bazel_module: { bp2build_available: true },
}`,
expectedBazelTargets: []string{
`prebuilt_library_shared(
name = "libtest",
shared_library = select({
"//build/bazel/platforms/arch:arm": "libg.so",
"//build/bazel/platforms/arch:arm64": "libf.so",
"//conditions:default": None,
}),
)`,
},
})
}

View File

@@ -18,6 +18,7 @@ import (
"path/filepath"
"android/soong/android"
"android/soong/bazel"
)
func init() {
@@ -31,6 +32,8 @@ func RegisterPrebuiltBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("cc_prebuilt_test_library_shared", PrebuiltSharedTestLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_object", prebuiltObjectFactory)
ctx.RegisterModuleType("cc_prebuilt_binary", prebuiltBinaryFactory)
android.RegisterBp2BuildMutator("cc_prebuilt_library_shared", PrebuiltLibrarySharedBp2Build)
}
type prebuiltLinkerInterface interface {
@@ -309,6 +312,42 @@ func NewPrebuiltStaticLibrary(hod android.HostOrDeviceSupported) (*Module, *libr
return module, library
}
type bazelPrebuiltLibrarySharedAttributes struct {
Shared_library bazel.LabelAttribute
}
func PrebuiltLibrarySharedBp2Build(ctx android.TopDownMutatorContext) {
module, ok := ctx.Module().(*Module)
if !ok {
// Not a cc module
return
}
if !module.ConvertWithBp2build(ctx) {
return
}
if ctx.ModuleType() != "cc_prebuilt_library_shared" {
return
}
prebuiltLibrarySharedBp2BuildInternal(ctx, module)
}
func prebuiltLibrarySharedBp2BuildInternal(ctx android.TopDownMutatorContext, module *Module) {
prebuiltAttrs := Bp2BuildParsePrebuiltLibraryProps(ctx, module)
attrs := &bazelPrebuiltLibrarySharedAttributes{
Shared_library: prebuiltAttrs.Src,
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "prebuilt_library_shared",
Bzl_load_location: "//build/bazel/rules:prebuilt_library_shared.bzl",
}
name := android.RemoveOptionalPrebuiltPrefix(module.Name())
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs)
}
type prebuiltObjectProperties struct {
Srcs []string `android:"path,arch_variant"`
}