bp2build: support strip properties.

This CL adds support to bp2build for generating all strip-related
properties into a strip dictionary as a parameter in the cc_library
macro.

With the dictionary, it's easy to organize related attributes and
directly expand into a stripped_shared_library's attributes.

Test: //build/bazel/tests/bionic:compare_libc_stripping
Test: TH
Fixes: b/187928597
Change-Id: Ifea68d48fe295e71a43b12876cb168c475a62187
This commit is contained in:
Jingwen Chen
2021-06-09 07:18:37 +00:00
parent a4d9b86c8b
commit 3d383bbeb9
5 changed files with 238 additions and 7 deletions

View File

@@ -1231,3 +1231,173 @@ cc_library {
}),
)`}})
}
func TestCcLibraryStrip(t *testing.T) {
runCcLibraryTestCase(t, bp2buildTestCase{
description: "cc_library strip args",
moduleTypeUnderTest: "cc_library",
moduleTypeUnderTestFactory: cc.LibraryFactory,
moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build},
dir: "foo/bar",
filesystem: map[string]string{
"foo/bar/Android.bp": `
cc_library {
name: "nothing",
bazel_module: { bp2build_available: true },
}
cc_library {
name: "keep_symbols",
bazel_module: { bp2build_available: true },
strip: {
keep_symbols: true,
}
}
cc_library {
name: "keep_symbols_and_debug_frame",
bazel_module: { bp2build_available: true },
strip: {
keep_symbols_and_debug_frame: true,
}
}
cc_library {
name: "none",
bazel_module: { bp2build_available: true },
strip: {
none: true,
}
}
cc_library {
name: "keep_symbols_list",
bazel_module: { bp2build_available: true },
strip: {
keep_symbols_list: ["symbol"],
}
}
cc_library {
name: "all",
bazel_module: { bp2build_available: true },
strip: {
all: true,
}
}
`,
},
blueprint: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "all",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"all": True,
},
)`, `cc_library(
name = "keep_symbols",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"keep_symbols": True,
},
)`, `cc_library(
name = "keep_symbols_and_debug_frame",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"keep_symbols_and_debug_frame": True,
},
)`, `cc_library(
name = "keep_symbols_list",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"keep_symbols_list": ["symbol"],
},
)`, `cc_library(
name = "none",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"none": True,
},
)`, `cc_library(
name = "nothing",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
)`},
})
}
func TestCcLibraryStripWithArch(t *testing.T) {
runCcLibraryTestCase(t, bp2buildTestCase{
description: "cc_library strip args",
moduleTypeUnderTest: "cc_library",
moduleTypeUnderTestFactory: cc.LibraryFactory,
moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build,
depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build},
dir: "foo/bar",
filesystem: map[string]string{
"foo/bar/Android.bp": `
cc_library {
name: "multi-arch",
bazel_module: { bp2build_available: true },
target: {
darwin: {
strip: {
keep_symbols_list: ["foo", "bar"]
}
},
},
arch: {
arm: {
strip: {
keep_symbols_and_debug_frame: true,
},
},
arm64: {
strip: {
keep_symbols: true,
},
},
}
}
`,
},
blueprint: soongCcLibraryPreamble,
expectedBazelTargets: []string{`cc_library(
name = "multi-arch",
copts = [
"-Ifoo/bar",
"-I$(BINDIR)/foo/bar",
],
strip = {
"keep_symbols": select({
"//build/bazel/platforms/arch:arm64": True,
"//conditions:default": None,
}),
"keep_symbols_and_debug_frame": select({
"//build/bazel/platforms/arch:arm": True,
"//conditions:default": None,
}),
"keep_symbols_list": select({
"//build/bazel/platforms/os:darwin": [
"foo",
"bar",
],
"//conditions:default": [],
}),
},
)`},
})
}