bp2build remove "-std" from cflags am: cac7f690eb am: 547bdc5207 am: 7b901cb0fb am: 091e30666e

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1927501

Change-Id: I169b195e9b38333a9184d9df0510510830032277
This commit is contained in:
Liz Kammer
2021-12-21 19:40:29 +00:00
committed by Automerger Merge Worker
3 changed files with 37 additions and 8 deletions

View File

@@ -162,7 +162,7 @@ func bp2buildParseStaticOrSharedProps(ctx android.BazelConversionPathContext, mo
attrs := staticOrSharedAttributes{}
setAttrs := func(axis bazel.ConfigurationAxis, config string, props StaticOrSharedProperties) {
attrs.Copts.SetSelectValue(axis, config, props.Cflags)
attrs.Copts.SetSelectValue(axis, config, parseCommandLineFlags(props.Cflags, filterOutStdFlag))
attrs.Srcs.SetSelectValue(axis, config, android.BazelLabelForModuleSrc(ctx, props.Srcs))
attrs.System_dynamic_deps.SetSelectValue(axis, config, bazelLabelForSharedDeps(ctx, props.System_shared_libs))
@@ -279,9 +279,18 @@ type compilerAttributes struct {
protoSrcs bazel.LabelListAttribute
}
func parseCommandLineFlags(soongFlags []string) []string {
type filterOutFn func(string) bool
func filterOutStdFlag(flag string) bool {
return strings.HasPrefix(flag, "-std=")
}
func parseCommandLineFlags(soongFlags []string, filterOut filterOutFn) []string {
var result []string
for _, flag := range soongFlags {
if filterOut != nil && filterOut(flag) {
continue
}
// Soong's cflags can contain spaces, like `-include header.h`. For
// Bazel's copts, split them up to be compatible with the
// no_copts_tokenization feature.
@@ -308,10 +317,14 @@ func (ca *compilerAttributes) bp2buildForAxisAndConfig(ctx android.BazelConversi
ca.absoluteIncludes.SetSelectValue(axis, config, props.Include_dirs)
ca.localIncludes.SetSelectValue(axis, config, localIncludeDirs)
ca.copts.SetSelectValue(axis, config, parseCommandLineFlags(props.Cflags))
ca.asFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Asflags))
ca.conlyFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Conlyflags))
ca.cppFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Cppflags))
// In Soong, cflags occur on the command line before -std=<val> flag, resulting in the value being
// overridden. In Bazel we always allow overriding, via flags; however, this can cause
// incompatibilities, so we remove "-std=" flags from Cflag properties while leaving it in other
// cases.
ca.copts.SetSelectValue(axis, config, parseCommandLineFlags(props.Cflags, filterOutStdFlag))
ca.asFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Asflags, nil))
ca.conlyFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Conlyflags, nil))
ca.cppFlags.SetSelectValue(axis, config, parseCommandLineFlags(props.Cppflags, nil))
ca.rtti.SetSelectValue(axis, config, props.Rtti)
}