Loading bazel/properties.go +36 −0 Original line number Diff line number Diff line Loading @@ -1296,6 +1296,42 @@ func (sla StringListAttribute) IsEmpty() bool { return len(sla.Value) == 0 && !sla.HasConfigurableValues() } // RemoveFromAllConfigs removes all instances of the specified value from all configurations // of the givenStringListAttribute func (sla *StringListAttribute) RemoveFromAllConfigs(toRemove string) { if removed, removalResult := removeFromList(toRemove, sla.Value); removed { if len(removalResult) > 0 { sla.Value = removalResult } else { sla.Value = nil } } for axis, slsv := range sla.ConfigurableValues { for config, sl := range slsv { if removed, removalResult := removeFromList(toRemove, sl); removed { if len(removalResult) > 0 { sla.SetSelectValue(axis, config, removalResult) } else { sla.SetSelectValue(axis, config, nil) } } } } } func removeFromList(s string, list []string) (bool, []string) { result := make([]string, 0, len(list)) var removed bool for _, item := range list { if item != s { result = append(result, item) } else { removed = true } } return removed, result } type configurableStringLists map[ConfigurationAxis]stringListSelectValues func (csl configurableStringLists) Append(other configurableStringLists) { Loading bp2build/cc_library_conversion_test.go +1 −9 Original line number Diff line number Diff line Loading @@ -4593,7 +4593,6 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `["android_cfi"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading Loading @@ -4622,10 +4621,6 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `select({ "//build/bazel/platforms/os:android": ["android_cfi"], "//conditions:default": [], })`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading Loading @@ -4656,10 +4651,7 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", ]`, "features": `["android_cfi_assembly_support"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading bp2build/cc_library_shared_conversion_test.go +2 −2 Original line number Diff line number Diff line Loading @@ -1519,7 +1519,7 @@ func TestCcLibrarySharedWithCfiAndCfiAssemblySupport(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when cfi is enabled with cfi assembly support", Blueprint: ` cc_library_static { cc_library_shared { name: "foo", sanitize: { cfi: true, Loading @@ -1529,7 +1529,7 @@ cc_library_static { }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", Loading bp2build/cc_library_static_conversion_test.go +5 −13 Original line number Diff line number Diff line Loading @@ -2134,9 +2134,9 @@ cc_library_static { }) } func TestCcLibraryStaticWithCfi(t *testing.T) { func TestCcLibraryStaticNoCfi(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled", Description: "cc_library_static never explicitly enables CFI", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2146,7 +2146,6 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `["android_cfi"]`, "local_includes": `["."]`, }), }, Loading @@ -2155,7 +2154,7 @@ cc_library_static { func TestCcLibraryStaticWithCfiOsSpecific(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled for specific variants", Description: "cc_library_static never explicitly enables CFI even for specific variants", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2169,10 +2168,6 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `select({ "//build/bazel/platforms/os:android": ["android_cfi"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, Loading @@ -2181,7 +2176,7 @@ cc_library_static { func TestCcLibraryStaticWithCfiAndCfiAssemblySupport(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled with cfi_assembly_support", Description: "cc_library_static will specify cfi_assembly_support feature but not cfi feature", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2194,10 +2189,7 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", ]`, "features": `["android_cfi_assembly_support"]`, "local_includes": `["."]`, }), }, Loading cc/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ bootstrap_go_package { "cc.go", "ccdeps.go", "check.go", "constants.go", "coverage.go", "gen.go", "generated_cc_library.go", Loading Loading
bazel/properties.go +36 −0 Original line number Diff line number Diff line Loading @@ -1296,6 +1296,42 @@ func (sla StringListAttribute) IsEmpty() bool { return len(sla.Value) == 0 && !sla.HasConfigurableValues() } // RemoveFromAllConfigs removes all instances of the specified value from all configurations // of the givenStringListAttribute func (sla *StringListAttribute) RemoveFromAllConfigs(toRemove string) { if removed, removalResult := removeFromList(toRemove, sla.Value); removed { if len(removalResult) > 0 { sla.Value = removalResult } else { sla.Value = nil } } for axis, slsv := range sla.ConfigurableValues { for config, sl := range slsv { if removed, removalResult := removeFromList(toRemove, sl); removed { if len(removalResult) > 0 { sla.SetSelectValue(axis, config, removalResult) } else { sla.SetSelectValue(axis, config, nil) } } } } } func removeFromList(s string, list []string) (bool, []string) { result := make([]string, 0, len(list)) var removed bool for _, item := range list { if item != s { result = append(result, item) } else { removed = true } } return removed, result } type configurableStringLists map[ConfigurationAxis]stringListSelectValues func (csl configurableStringLists) Append(other configurableStringLists) { Loading
bp2build/cc_library_conversion_test.go +1 −9 Original line number Diff line number Diff line Loading @@ -4593,7 +4593,6 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `["android_cfi"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading Loading @@ -4622,10 +4621,6 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `select({ "//build/bazel/platforms/os:android": ["android_cfi"], "//conditions:default": [], })`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading Loading @@ -4656,10 +4651,7 @@ cc_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", ]`, "features": `["android_cfi_assembly_support"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ Loading
bp2build/cc_library_shared_conversion_test.go +2 −2 Original line number Diff line number Diff line Loading @@ -1519,7 +1519,7 @@ func TestCcLibrarySharedWithCfiAndCfiAssemblySupport(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ Description: "cc_library_shared has correct features when cfi is enabled with cfi assembly support", Blueprint: ` cc_library_static { cc_library_shared { name: "foo", sanitize: { cfi: true, Loading @@ -1529,7 +1529,7 @@ cc_library_static { }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", Loading
bp2build/cc_library_static_conversion_test.go +5 −13 Original line number Diff line number Diff line Loading @@ -2134,9 +2134,9 @@ cc_library_static { }) } func TestCcLibraryStaticWithCfi(t *testing.T) { func TestCcLibraryStaticNoCfi(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled", Description: "cc_library_static never explicitly enables CFI", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2146,7 +2146,6 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `["android_cfi"]`, "local_includes": `["."]`, }), }, Loading @@ -2155,7 +2154,7 @@ cc_library_static { func TestCcLibraryStaticWithCfiOsSpecific(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled for specific variants", Description: "cc_library_static never explicitly enables CFI even for specific variants", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2169,10 +2168,6 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `select({ "//build/bazel/platforms/os:android": ["android_cfi"], "//conditions:default": [], })`, "local_includes": `["."]`, }), }, Loading @@ -2181,7 +2176,7 @@ cc_library_static { func TestCcLibraryStaticWithCfiAndCfiAssemblySupport(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static has correct features when cfi is enabled with cfi_assembly_support", Description: "cc_library_static will specify cfi_assembly_support feature but not cfi feature", Blueprint: ` cc_library_static { name: "foo", Loading @@ -2194,10 +2189,7 @@ cc_library_static { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ "features": `[ "android_cfi", "android_cfi_assembly_support", ]`, "features": `["android_cfi_assembly_support"]`, "local_includes": `["."]`, }), }, Loading
cc/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ bootstrap_go_package { "cc.go", "ccdeps.go", "check.go", "constants.go", "coverage.go", "gen.go", "generated_cc_library.go", Loading