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

View File

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

View File

@@ -63,7 +63,7 @@ type staticOrSharedAttributes struct {
Enabled bazel.BoolAttribute
Native_coverage bazel.BoolAttribute
Native_coverage *bool
sdkAttributes
@@ -358,6 +358,7 @@ type baseAttributes struct {
features bazel.StringListAttribute
protoDependency *bazel.LabelAttribute
aidlDependency *bazel.LabelAttribute
Native_coverage *bool
}
// 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)
(&linkerAttrs).convertStripProps(ctx, module)
var nativeCoverage *bool
if module.coverage != nil && module.coverage.Properties.Native_coverage != nil &&
!Bool(module.coverage.Properties.Native_coverage) {
// Native_coverage is arch neutral
(&linkerAttrs).features.Append(bazel.MakeStringListAttribute([]string{"-coverage"}))
nativeCoverage = BoolPtr(false)
}
productVariableProps := android.ProductVariableProperties(ctx)
@@ -812,6 +813,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
*features,
protoDep.protoDep,
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),
Runtime_deps: linkerAttrs.runtimeDeps,
sdkAttributes: bp2BuildParseSdkAttributes(m),
Native_coverage: baseAttributes.Native_coverage,
}
sharedCommonAttrs := staticOrSharedAttributes{
@@ -369,6 +370,7 @@ func libraryBp2Build(ctx android.TopDownMutatorContext, m *Module) {
System_dynamic_deps: *linkerAttrs.systemDynamicDeps.Clone().Append(sharedAttrs.System_dynamic_deps),
Runtime_deps: linkerAttrs.runtimeDeps,
sdkAttributes: bp2BuildParseSdkAttributes(m),
Native_coverage: baseAttributes.Native_coverage,
}
staticTargetAttrs := &bazelCcLibraryStaticAttributes{
@@ -2869,6 +2871,7 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
System_dynamic_deps: linkerAttrs.systemDynamicDeps,
sdkAttributes: bp2BuildParseSdkAttributes(module),
Runtime_deps: linkerAttrs.runtimeDeps,
Native_coverage: baseAttributes.Native_coverage,
}
module.convertTidyAttributes(ctx, &commonAttrs.tidyAttributes)
@@ -2956,6 +2959,13 @@ func sharedOrStaticLibraryBp2Build(ctx android.TopDownMutatorContext, module *Mo
}
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)
}