Merge "Handle product vars *flags props in cc* modules"
This commit is contained in:
@@ -19,6 +19,8 @@ import (
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/bazel"
|
||||
|
||||
"github.com/google/blueprint/proptools"
|
||||
)
|
||||
|
||||
// bp2build functions and helpers for converting cc_* modules to Bazel.
|
||||
@@ -504,18 +506,25 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
|
||||
}
|
||||
}
|
||||
|
||||
productVarPropNameToAttribute := map[string]*bazel.StringListAttribute{
|
||||
"Cflags": &copts,
|
||||
"Asflags": &asFlags,
|
||||
"CppFlags": &cppFlags,
|
||||
}
|
||||
productVariableProps := android.ProductVariableProperties(ctx)
|
||||
if props, exists := productVariableProps["Cflags"]; exists {
|
||||
for _, prop := range props {
|
||||
flags, ok := prop.Property.([]string)
|
||||
if !ok {
|
||||
ctx.ModuleErrorf("Could not convert product variable cflag property")
|
||||
for propName, attr := range productVarPropNameToAttribute {
|
||||
if props, exists := productVariableProps[propName]; exists {
|
||||
for _, prop := range props {
|
||||
flags, ok := prop.Property.([]string)
|
||||
if !ok {
|
||||
ctx.ModuleErrorf("Could not convert product variable %s property", proptools.PropertyNameForField(propName))
|
||||
}
|
||||
newFlags, _ := bazel.TryVariableSubstitutions(flags, prop.ProductConfigVariable)
|
||||
attr.ProductValues = append(attr.ProductValues, bazel.ProductVariableValues{
|
||||
ProductVariable: prop.ProductConfigVariable,
|
||||
Values: newFlags,
|
||||
})
|
||||
}
|
||||
newFlags, _ := bazel.TryVariableSubstitutions(flags, prop.ProductConfigVariable)
|
||||
copts.ProductValues = append(copts.ProductValues, bazel.ProductVariableValues{
|
||||
ProductVariable: prop.ProductConfigVariable,
|
||||
Values: newFlags,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
22
cc/object.go
22
cc/object.go
@@ -157,8 +157,6 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
||||
|
||||
// Set arch-specific configurable attributes
|
||||
compilerAttrs := bp2BuildParseCompilerProps(ctx, m)
|
||||
var asFlags bazel.StringListAttribute
|
||||
|
||||
var deps bazel.LabelListAttribute
|
||||
for _, props := range m.linker.linkerProps() {
|
||||
if objectLinkerProps, ok := props.(*ObjectLinkerProperties); ok {
|
||||
@@ -167,24 +165,6 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
||||
}
|
||||
}
|
||||
|
||||
productVariableProps := android.ProductVariableProperties(ctx)
|
||||
if props, exists := productVariableProps["Asflags"]; exists {
|
||||
// TODO(b/183595873): consider deduplicating handling of product variable properties
|
||||
for _, prop := range props {
|
||||
flags, ok := prop.Property.([]string)
|
||||
if !ok {
|
||||
ctx.ModuleErrorf("Could not convert product variable asflag property")
|
||||
return
|
||||
}
|
||||
newFlags, _ := bazel.TryVariableSubstitutions(flags, prop.ProductConfigVariable)
|
||||
asFlags.ProductValues = append(asFlags.ProductValues, bazel.ProductVariableValues{
|
||||
ProductVariable: prop.ProductConfigVariable,
|
||||
Values: newFlags,
|
||||
})
|
||||
}
|
||||
}
|
||||
// TODO(b/183595872) warn/error if we're not handling product variables
|
||||
|
||||
// Don't split cc_object srcs across languages. Doing so would add complexity,
|
||||
// and this isn't typically done for cc_object.
|
||||
srcs := compilerAttrs.srcs
|
||||
@@ -195,7 +175,7 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
||||
Srcs: srcs,
|
||||
Deps: deps,
|
||||
Copts: compilerAttrs.copts,
|
||||
Asflags: asFlags,
|
||||
Asflags: compilerAttrs.asFlags,
|
||||
}
|
||||
|
||||
props := bazel.BazelTargetModuleProperties{
|
||||
|
Reference in New Issue
Block a user