From f01a0f0ca9df43655a91ec7f7782af19cda8064e Mon Sep 17 00:00:00 2001 From: Yu Liu Date: Wed, 7 Dec 2022 15:45:30 -0800 Subject: [PATCH] Enable code coverage for cc shared library Bug: None Test: Manual and unit tests Change-Id: I5064e4407d3451ff172ab203256f3c073cc0ad1b --- bp2build/cc_library_conversion_test.go | 9 +++++---- cc/binary.go | 4 ++++ cc/bp2build.go | 8 +++++--- cc/library.go | 10 ++++++++++ 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index ee6e5b807..728225ae3 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -1031,19 +1031,20 @@ func TestCcLibraryFeatures(t *testing.T) { "features": `[ "disable_pack_relocations", "-no_undefined_symbols", - "-coverage", ]`, - "srcs": `["a.cpp"]`, + "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": [], })`, - "srcs": `["b.cpp"]`, + "native_coverage": `False`, + "srcs": `["b.cpp"]`, })...) expected_targets = append(expected_targets, makeCcLibraryTargets("c", AttrNameToString{ "features": `select({ diff --git a/cc/binary.go b/cc/binary.go index 998934e17..54c1abccd 100644 --- a/cc/binary.go +++ b/cc/binary.go @@ -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 } diff --git a/cc/bp2build.go b/cc/bp2build.go index 510ecee08..66157aec4 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -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, } } diff --git a/cc/library.go b/cc/library.go index ed0ed01bc..8afc2fe5e 100644 --- a/cc/library.go +++ b/cc/library.go @@ -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) }