LTO Bp2build
Bug: 261733821 Test: Unit Tests Change-Id: I8c3721d35c464e296012145b2e95a7f0866aac37
This commit is contained in:
@@ -4137,3 +4137,172 @@ cc_library {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithThinLto(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_library has correct features when thin LTO is enabled",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
lto: {
|
||||
thin: true,
|
||||
},
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"features": `["android_thin_lto"]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"features": `["android_thin_lto"]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithLtoNever(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_library has correct features when LTO is explicitly disabled",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
lto: {
|
||||
never: true,
|
||||
},
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"features": `["-android_thin_lto"]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"features": `["-android_thin_lto"]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithThinLtoArchSpecific(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_library has correct features when LTO differs across arch and os variants",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
target: {
|
||||
android: {
|
||||
lto: {
|
||||
thin: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
arch: {
|
||||
riscv64: {
|
||||
lto: {
|
||||
thin: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"local_includes": `["."]`,
|
||||
"features": `select({
|
||||
"//build/bazel/platforms/os_arch:android_arm": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_arm64": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_riscv64": ["-android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_x86": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_x86_64": ["android_thin_lto"],
|
||||
"//conditions:default": [],
|
||||
})`}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"local_includes": `["."]`,
|
||||
"features": `select({
|
||||
"//build/bazel/platforms/os_arch:android_arm": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_arm64": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_riscv64": ["-android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_x86": ["android_thin_lto"],
|
||||
"//build/bazel/platforms/os_arch:android_x86_64": ["android_thin_lto"],
|
||||
"//conditions:default": [],
|
||||
})`}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithThinLtoDisabledDefaultEnabledVariant(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_library has correct features when LTO disabled by default but enabled on a particular variant",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
lto: {
|
||||
never: true,
|
||||
},
|
||||
target: {
|
||||
android: {
|
||||
lto: {
|
||||
thin: true,
|
||||
never: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"local_includes": `["."]`,
|
||||
"features": `select({
|
||||
"//build/bazel/platforms/os:android": ["android_thin_lto"],
|
||||
"//conditions:default": ["-android_thin_lto"],
|
||||
})`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"local_includes": `["."]`,
|
||||
"features": `select({
|
||||
"//build/bazel/platforms/os:android": ["android_thin_lto"],
|
||||
"//conditions:default": ["-android_thin_lto"],
|
||||
})`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithThinLtoWholeProgramVtables(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_library has correct features when thin LTO is enabled with whole_program_vtables",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library {
|
||||
name: "foo",
|
||||
lto: {
|
||||
thin: true,
|
||||
},
|
||||
whole_program_vtables: true,
|
||||
}`,
|
||||
ExpectedBazelTargets: []string{
|
||||
MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{
|
||||
"features": `[
|
||||
"android_thin_lto",
|
||||
"android_thin_lto_whole_program_vtables",
|
||||
]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
|
||||
"features": `[
|
||||
"android_thin_lto",
|
||||
"android_thin_lto_whole_program_vtables",
|
||||
]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user