bp2build: arch-configurable selects for label list attrs.

This CL adds the configurable LabelListAttribute support to bp2build.

Test: go test
Change-Id: I2ef9e385d9cf1b1845988128eca1d8cda1ecb5e8
This commit is contained in:
Jingwen Chen
2021-03-15 06:02:43 -04:00
parent 053520a86a
commit 0702791a99
12 changed files with 226 additions and 80 deletions

View File

@@ -2029,7 +2029,7 @@ func maybeInjectBoringSSLHash(ctx android.ModuleContext, outputFile android.Modu
return outputFile
}
func Bp2BuildParseHeaderLibs(ctx android.TopDownMutatorContext, module *Module) bazel.LabelList {
func Bp2BuildParseHeaderLibs(ctx android.TopDownMutatorContext, module *Module) bazel.LabelListAttribute {
var headerLibs []string
for _, linkerProps := range module.linker.linkerProps() {
if baseLinkerProps, ok := linkerProps.(*BaseLinkerProperties); ok {
@@ -2038,12 +2038,11 @@ func Bp2BuildParseHeaderLibs(ctx android.TopDownMutatorContext, module *Module)
break
}
}
headerLibsLabels := android.BazelLabelForModuleDeps(ctx, headerLibs)
headerLibsLabels := bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, headerLibs))
return headerLibsLabels
}
func Bp2BuildParseExportedIncludes(ctx android.TopDownMutatorContext, module *Module) (bazel.LabelList, bazel.LabelList) {
func Bp2BuildParseExportedIncludes(ctx android.TopDownMutatorContext, module *Module) (bazel.LabelListAttribute, bazel.LabelListAttribute) {
libraryDecorator := module.linker.(*libraryDecorator)
includeDirs := libraryDecorator.flagExporter.Properties.Export_system_include_dirs
@@ -2059,17 +2058,16 @@ func Bp2BuildParseExportedIncludes(ctx android.TopDownMutatorContext, module *Mo
}
headersLabels := android.BazelLabelForModuleSrc(ctx, includeDirGlobs)
return includeDirsLabels, headersLabels
return bazel.MakeLabelListAttribute(includeDirsLabels), bazel.MakeLabelListAttribute(headersLabels)
}
type bazelCcLibraryStaticAttributes struct {
Copts []string
Srcs bazel.LabelList
Deps bazel.LabelList
Srcs bazel.LabelListAttribute
Deps bazel.LabelListAttribute
Linkstatic bool
Includes bazel.LabelList
Hdrs bazel.LabelList
Includes bazel.LabelListAttribute
Hdrs bazel.LabelListAttribute
}
type bazelCcLibraryStatic struct {
@@ -2110,7 +2108,7 @@ func CcLibraryStaticBp2Build(ctx android.TopDownMutatorContext) {
break
}
}
srcsLabels := android.BazelLabelForModuleSrc(ctx, srcs)
srcsLabels := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, srcs))
var staticLibs []string
var wholeStaticLibs []string
@@ -2135,18 +2133,18 @@ func CcLibraryStaticBp2Build(ctx android.TopDownMutatorContext) {
includesLabels := android.BazelLabelForModuleSrc(ctx, allIncludes)
exportedIncludesLabels, exportedIncludesHeadersLabels := Bp2BuildParseExportedIncludes(ctx, module)
includesLabels.Append(exportedIncludesLabels)
includesLabels.Append(exportedIncludesLabels.Value)
headerLibsLabels := Bp2BuildParseHeaderLibs(ctx, module)
depsLabels.Append(headerLibsLabels)
depsLabels.Append(headerLibsLabels.Value)
attrs := &bazelCcLibraryStaticAttributes{
Copts: copts,
Srcs: bazel.UniqueBazelLabelList(srcsLabels),
Deps: bazel.UniqueBazelLabelList(depsLabels),
Srcs: srcsLabels,
Deps: bazel.MakeLabelListAttribute(depsLabels),
Linkstatic: true,
Includes: bazel.UniqueBazelLabelList(includesLabels),
Hdrs: bazel.UniqueBazelLabelList(exportedIncludesHeadersLabels),
Includes: bazel.MakeLabelListAttribute(includesLabels),
Hdrs: exportedIncludesHeadersLabels,
}
props := bazel.BazelTargetModuleProperties{