Create config_setting per apex_name

These are created by bp2build in /build/bazel/rules/apex. Eventually
these config_settings should likely be colocated with the source apex
definition.

Another alternative was to make Bazel's apex a macro that generates a
config_setting. I did not pursue this further for now since it requires the
apex_available of every allowlisted cc_library to also be allowlisted.
This might not always be true (e.g. com.android.runtime)

Test: go test ./bp2build
Change-Id: Ibbb14b0d9c1491b3c79b7634a18d9d35b03922c1
This commit is contained in:
Spandan Das
2023-04-19 22:31:54 +00:00
parent 6a448ec1a3
commit 4242f10462
3 changed files with 100 additions and 4 deletions

View File

@@ -4454,3 +4454,32 @@ cc_library {
},
})
}
// Test that a config_setting specific to an apex is created by cc_library.
func TestCcLibraryCreatesInApexConfigSetting(t *testing.T) {
runCcLibraryTestCase(t, Bp2buildTestCase{
Description: "cc_library creates a config_setting for each apex in apex_available",
ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory,
Dir: "build/bazel/rules/apex",
Blueprint: `
cc_library {
name: "foo",
apex_available: [
"//apex_available:platform", // This will be skipped, since it is equivalent to //build/bazel/rules/apex:android-non_apex
"myapex"
],
}`,
ExpectedBazelTargets: []string{
MakeBazelTargetNoRestrictions(
"config_setting",
"android-in_myapex",
AttrNameToString{
"flag_values": `{
"//build/bazel/rules/apex:apex_name": "myapex",
}`,
},
),
},
})
}