Refactor coverage support am: ee30d5e132 am: 312b5f4407

am: 2bccc05cbf

Change-Id: Ie2a491d4865015f7d3c062e0390a03de0ca14bc8
This commit is contained in:
Pirama Arumuga Nainar
2019-03-29 09:31:24 -07:00
committed by android-build-merger

View File

@@ -23,6 +23,9 @@ import (
type CoverageProperties struct { type CoverageProperties struct {
Native_coverage *bool Native_coverage *bool
NeedCoverageVariant bool `blueprint:"mutated"`
NeedCoverageBuild bool `blueprint:"mutated"`
CoverageEnabled bool `blueprint:"mutated"` CoverageEnabled bool `blueprint:"mutated"`
IsCoverageVariant bool `blueprint:"mutated"` IsCoverageVariant bool `blueprint:"mutated"`
} }
@@ -38,8 +41,6 @@ func (cov *coverage) props() []interface{} {
return []interface{}{&cov.Properties} return []interface{}{&cov.Properties}
} }
func (cov *coverage) begin(ctx BaseModuleContext) {}
func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps { func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps {
return deps return deps
} }
@@ -100,28 +101,27 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags {
return flags return flags
} }
func coverageMutator(mctx android.BottomUpMutatorContext) { func (cov *coverage) begin(ctx BaseModuleContext) {
// Coverage is disabled globally // Coverage is disabled globally
if !mctx.DeviceConfig().NativeCoverageEnabled() { if !ctx.DeviceConfig().NativeCoverageEnabled() {
return return
} }
if c, ok := mctx.Module().(*Module); ok {
var needCoverageVariant bool var needCoverageVariant bool
var needCoverageBuild bool var needCoverageBuild bool
if mctx.Host() { if ctx.Host() {
// TODO(dwillemsen): because of -nodefaultlibs, we must depend on libclang_rt.profile-*.a // TODO(dwillemsen): because of -nodefaultlibs, we must depend on libclang_rt.profile-*.a
// Just turn off for now. // Just turn off for now.
} else if c.IsStubs() { } else if ctx.isStubs() {
// Do not enable coverage for platform stub libraries // Do not enable coverage for platform stub libraries
} else if c.isNDKStubLibrary() { } else if ctx.isNDKStubLibrary() {
// Do not enable coverage for NDK stub libraries // Do not enable coverage for NDK stub libraries
} else if c.coverage != nil { } else {
// Check if Native_coverage is set to false. This property defaults to true. // Check if Native_coverage is set to false. This property defaults to true.
needCoverageVariant = BoolDefault(c.coverage.Properties.Native_coverage, true) needCoverageVariant = BoolDefault(cov.Properties.Native_coverage, true)
if sdk_version := String(c.Properties.Sdk_version); sdk_version != "current" { if sdk_version := ctx.sdkVersion(); ctx.useSdk() && sdk_version != "current" {
// Native coverage is not supported for SDK versions < 23 // Native coverage is not supported for SDK versions < 23
if fromApi, err := strconv.Atoi(sdk_version); err == nil && fromApi < 23 { if fromApi, err := strconv.Atoi(sdk_version); err == nil && fromApi < 23 {
needCoverageVariant = false needCoverageVariant = false
@@ -130,10 +130,18 @@ func coverageMutator(mctx android.BottomUpMutatorContext) {
if needCoverageVariant { if needCoverageVariant {
// Coverage variant is actually built with coverage if enabled for its module path // Coverage variant is actually built with coverage if enabled for its module path
needCoverageBuild = mctx.DeviceConfig().CoverageEnabledForPath(mctx.ModuleDir()) needCoverageBuild = ctx.DeviceConfig().CoverageEnabledForPath(ctx.ModuleDir())
} }
} }
cov.Properties.NeedCoverageBuild = needCoverageBuild
cov.Properties.NeedCoverageVariant = needCoverageVariant
}
func coverageMutator(mctx android.BottomUpMutatorContext) {
if c, ok := mctx.Module().(*Module); ok && c.coverage != nil {
needCoverageVariant := c.coverage.Properties.NeedCoverageVariant
needCoverageBuild := c.coverage.Properties.NeedCoverageBuild
if needCoverageVariant { if needCoverageVariant {
m := mctx.CreateVariations("", "cov") m := mctx.CreateVariations("", "cov")