convert hidden visibility flag to feature

in bp2build. The context here is that `-fvisibility=default` should
only be added for CFI if `-fvisibility=hidden` is not already
specified. This will be achieved using toolchain features. Note
that Soong itself never adds `-fvisibility=hidden`. This is only
ever added in the `cflags` property of a bp file.

Bug: 261733820
Test: Unit tests
Change-Id: Ib821e8c30a9cd03d2929b4bd2e771bec7b33fa66
This commit is contained in:
Trevor Radcliffe
2023-04-14 18:25:24 +00:00
parent e5eb5786e2
commit a8b441613a
6 changed files with 287 additions and 6 deletions

View File

@@ -2032,3 +2032,44 @@ cc_library_static {
},
})
}
func TestCcLibraryStaticHiddenVisibilityConvertedToFeature(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static changes hidden visibility flag to feature",
Blueprint: `
cc_library_static {
name: "foo",
cflags: ["-fvisibility=hidden"],
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"features": `["visibility_hidden"]`,
"local_includes": `["."]`,
}),
},
})
}
func TestCcLibraryStaticHiddenVisibilityConvertedToFeatureOsSpecific(t *testing.T) {
runCcLibraryStaticTestCase(t, Bp2buildTestCase{
Description: "cc_library_static changes hidden visibility flag to feature for specific os",
Blueprint: `
cc_library_static {
name: "foo",
target: {
android: {
cflags: ["-fvisibility=hidden"],
},
},
}`,
ExpectedBazelTargets: []string{
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"features": `select({
"//build/bazel/platforms/os:android": ["visibility_hidden"],
"//conditions:default": [],
})`,
"local_includes": `["."]`,
}),
},
})
}