Enable code coverage for cc shared library

Bug: None
Test: Manual and unit tests
Change-Id: I5064e4407d3451ff172ab203256f3c073cc0ad1b
This commit is contained in:
Yu Liu
2022-12-07 15:45:30 -08:00
parent 841fc797c1
commit f01a0f0ca9
4 changed files with 24 additions and 7 deletions

View File

@@ -1031,19 +1031,20 @@ func TestCcLibraryFeatures(t *testing.T) {
"features": `[ "features": `[
"disable_pack_relocations", "disable_pack_relocations",
"-no_undefined_symbols", "-no_undefined_symbols",
"-coverage",
]`, ]`,
"srcs": `["a.cpp"]`, "native_coverage": `False`,
"srcs": `["a.cpp"]`,
})...) })...)
expected_targets = append(expected_targets, makeCcLibraryTargets("b", AttrNameToString{ expected_targets = append(expected_targets, makeCcLibraryTargets("b", AttrNameToString{
"features": `["-coverage"] + select({ "features": `select({
"//build/bazel/platforms/arch:x86_64": [ "//build/bazel/platforms/arch:x86_64": [
"disable_pack_relocations", "disable_pack_relocations",
"-no_undefined_symbols", "-no_undefined_symbols",
], ],
"//conditions:default": [], "//conditions:default": [],
})`, })`,
"srcs": `["b.cpp"]`, "native_coverage": `False`,
"srcs": `["b.cpp"]`,
})...) })...)
expected_targets = append(expected_targets, makeCcLibraryTargets("c", AttrNameToString{ expected_targets = append(expected_targets, makeCcLibraryTargets("c", AttrNameToString{
"features": `select({ "features": `select({

View File

@@ -644,6 +644,8 @@ func binaryBp2buildAttrs(ctx android.TopDownMutatorContext, m *Module) binaryAtt
Features: baseAttrs.features, Features: baseAttrs.features,
sdkAttributes: bp2BuildParseSdkAttributes(m), sdkAttributes: bp2BuildParseSdkAttributes(m),
Native_coverage: baseAttrs.Native_coverage,
} }
m.convertTidyAttributes(ctx, &attrs.tidyAttributes) m.convertTidyAttributes(ctx, &attrs.tidyAttributes)
@@ -703,4 +705,6 @@ type binaryAttributes struct {
sdkAttributes sdkAttributes
tidyAttributes tidyAttributes
Native_coverage *bool
} }

View File

@@ -63,7 +63,7 @@ type staticOrSharedAttributes struct {
Enabled bazel.BoolAttribute Enabled bazel.BoolAttribute
Native_coverage bazel.BoolAttribute Native_coverage *bool
sdkAttributes sdkAttributes
@@ -358,6 +358,7 @@ type baseAttributes struct {
features bazel.StringListAttribute features bazel.StringListAttribute
protoDependency *bazel.LabelAttribute protoDependency *bazel.LabelAttribute
aidlDependency *bazel.LabelAttribute aidlDependency *bazel.LabelAttribute
Native_coverage *bool
} }
// Convenience struct to hold all attributes parsed from compiler properties. // Convenience struct to hold all attributes parsed from compiler properties.
@@ -753,10 +754,10 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
compilerAttrs.convertStlProps(ctx, module) compilerAttrs.convertStlProps(ctx, module)
(&linkerAttrs).convertStripProps(ctx, module) (&linkerAttrs).convertStripProps(ctx, module)
var nativeCoverage *bool
if module.coverage != nil && module.coverage.Properties.Native_coverage != nil && if module.coverage != nil && module.coverage.Properties.Native_coverage != nil &&
!Bool(module.coverage.Properties.Native_coverage) { !Bool(module.coverage.Properties.Native_coverage) {
// Native_coverage is arch neutral nativeCoverage = BoolPtr(false)
(&linkerAttrs).features.Append(bazel.MakeStringListAttribute([]string{"-coverage"}))
} }
productVariableProps := android.ProductVariableProperties(ctx) productVariableProps := android.ProductVariableProperties(ctx)
@@ -812,6 +813,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
*features, *features,
protoDep.protoDep, protoDep.protoDep,
aidlDep, aidlDep,
nativeCoverage,
} }
} }

View File

@@ -351,6 +351,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(staticAttrs.System_dynamic_deps), System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(staticAttrs.System_dynamic_deps),
Runtime_deps: linkerAttrs.runtimeDeps, Runtime_deps: linkerAttrs.runtimeDeps,
sdkAttributes: bp2BuildParseSdkAttributes(m), sdkAttributes: bp2BuildParseSdkAttributes(m),
Native_coverage: baseAttributes.Native_coverage,
} }
sharedCommonAttrs := staticOrSharedAttributes{ sharedCommonAttrs := staticOrSharedAttributes{
@@ -369,6 +370,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(sharedAttrs.System_dynamic_deps), System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(sharedAttrs.System_dynamic_deps),
Runtime_deps: linkerAttrs.runtimeDeps, Runtime_deps: linkerAttrs.runtimeDeps,
sdkAttributes: bp2BuildParseSdkAttributes(m), sdkAttributes: bp2BuildParseSdkAttributes(m),
Native_coverage: baseAttributes.Native_coverage,
} }
staticTargetAttrs := &bazelCcLibraryStaticAttributes{ staticTargetAttrs := &bazelCcLibraryStaticAttributes{
@@ -2869,6 +2871,7 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
System_dynamic_deps: linkerAttrs.systemDynamicDeps, System_dynamic_deps: linkerAttrs.systemDynamicDeps,
sdkAttributes: bp2BuildParseSdkAttributes(module), sdkAttributes: bp2BuildParseSdkAttributes(module),
Runtime_deps: linkerAttrs.runtimeDeps, Runtime_deps: linkerAttrs.runtimeDeps,
Native_coverage: baseAttributes.Native_coverage,
} }
module.convertTidyAttributes(ctx, &commonAttrs.tidyAttributes) module.convertTidyAttributes(ctx, &commonAttrs.tidyAttributes)
@@ -2956,6 +2959,13 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
} }
tags := android.ApexAvailableTags(module) tags := android.ApexAvailableTags(module)
// This lib needs some special handling in bazel, so add this tag to the build
// file.
if module.Name() == "libprofile-clang-extras" {
tags.Append(bazel.MakeStringListAttribute([]string{"NO_EXPORTING"}))
}
ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name(), Tags: tags}, attrs) ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name(), Tags: tags}, attrs)
} }