Select stub/impl per apex variant
Create a select statement for every api_domain a library could be included in. The stub/impl selection heuristics per apex domain are 1. If dep has stubs and the api domain appears in dep's apex_available, use impl 2. If dep has stubs and the api domain does not appear in dep's apex_available, use stubs (Category 3: If dep does not have stubs and the apex does not appear in dep's apex_available, then a separate apex_available validation in Bazel will emit an error). Platform variants have been special-cased for now to use equality of apex_available for stub/impl selection Test: go test ./bp2build Bug: 272378496 Change-Id: Ibd29efd763c8863c7e6d2a9af0da30bbde07175d
This commit is contained in:
@@ -3042,7 +3042,8 @@ cc_library {
|
||||
}`,
|
||||
ExpectedBazelTargets: makeCcLibraryTargets("foolib", AttrNameToString{
|
||||
"implementation_dynamic_deps": `select({
|
||||
"//build/bazel/rules/apex:android-in_apex": ["@api_surfaces//module-libapi/current:barlib"],
|
||||
"//build/bazel/rules/apex:foo": ["@api_surfaces//module-libapi/current:barlib"],
|
||||
"//build/bazel/rules/apex:system": ["@api_surfaces//module-libapi/current:barlib"],
|
||||
"//conditions:default": [":barlib"],
|
||||
})`,
|
||||
"local_includes": `["."]`,
|
||||
@@ -3096,7 +3097,11 @@ cc_library {
|
||||
"//build/bazel/platforms/os:linux_glibc": [":quxlib"],
|
||||
"//build/bazel/platforms/os:linux_musl": [":quxlib"],
|
||||
"//build/bazel/platforms/os:windows": [":quxlib"],
|
||||
"//build/bazel/rules/apex:android-in_apex": [
|
||||
"//build/bazel/rules/apex:foo": [
|
||||
"@api_surfaces//module-libapi/current:barlib",
|
||||
"@api_surfaces//module-libapi/current:quxlib",
|
||||
],
|
||||
"//build/bazel/rules/apex:system": [
|
||||
"@api_surfaces//module-libapi/current:barlib",
|
||||
"@api_surfaces//module-libapi/current:quxlib",
|
||||
],
|
||||
@@ -4139,44 +4144,34 @@ cc_library {
|
||||
name: "barlib",
|
||||
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
|
||||
bazel_module: { bp2build_available: false },
|
||||
apex_available: ["//apex_available:platform",],
|
||||
}
|
||||
cc_library {
|
||||
name: "bazlib",
|
||||
stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] },
|
||||
bazel_module: { bp2build_available: false },
|
||||
apex_available: ["//apex_available:platform",],
|
||||
}
|
||||
cc_library {
|
||||
name: "foo",
|
||||
shared_libs: ["barlib", "bazlib"],
|
||||
export_shared_lib_headers: ["bazlib"],
|
||||
apex_available: [
|
||||
"apex_available:platform",
|
||||
"//apex_available:platform",
|
||||
],
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"implementation_dynamic_deps": `select({
|
||||
"//build/bazel/rules/apex:android-in_apex": ["@api_surfaces//module-libapi/current:barlib"],
|
||||
"//conditions:default": [":barlib"],
|
||||
})`,
|
||||
"dynamic_deps": `select({
|
||||
"//build/bazel/rules/apex:android-in_apex": ["@api_surfaces//module-libapi/current:bazlib"],
|
||||
"//conditions:default": [":bazlib"],
|
||||
})`,
|
||||
"local_includes": `["."]`,
|
||||
"tags": `["apex_available=apex_available:platform"]`,
|
||||
"implementation_dynamic_deps": `[":barlib"]`,
|
||||
"dynamic_deps": `[":bazlib"]`,
|
||||
"local_includes": `["."]`,
|
||||
"tags": `["apex_available=//apex_available:platform"]`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"implementation_dynamic_deps": `select({
|
||||
"//build/bazel/rules/apex:android-in_apex": ["@api_surfaces//module-libapi/current:barlib"],
|
||||
"//conditions:default": [":barlib"],
|
||||
})`,
|
||||
"dynamic_deps": `select({
|
||||
"//build/bazel/rules/apex:android-in_apex": ["@api_surfaces//module-libapi/current:bazlib"],
|
||||
"//conditions:default": [":bazlib"],
|
||||
})`,
|
||||
"local_includes": `["."]`,
|
||||
"tags": `["apex_available=apex_available:platform"]`,
|
||||
"implementation_dynamic_deps": `[":barlib"]`,
|
||||
"dynamic_deps": `[":bazlib"]`,
|
||||
"local_includes": `["."]`,
|
||||
"tags": `["apex_available=//apex_available:platform"]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
|
Reference in New Issue
Block a user