Merge "Make native_coverage clause work with ClangCoverage" am: c9ef6ee1b7
am: e1dd7bf4ec
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1340832 Change-Id: I02b9d4f8fea3facdd4c41d633d49bd2006718fe5
This commit is contained in:
@@ -406,6 +406,14 @@ func NewConfig(srcDir, buildDir string) (Config, error) {
|
|||||||
return Config{}, err
|
return Config{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if Bool(config.productVariables.GcovCoverage) && Bool(config.productVariables.ClangCoverage) {
|
||||||
|
return Config{}, fmt.Errorf("GcovCoverage and ClangCoverage cannot both be set")
|
||||||
|
}
|
||||||
|
|
||||||
|
config.productVariables.Native_coverage = proptools.BoolPtr(
|
||||||
|
Bool(config.productVariables.GcovCoverage) ||
|
||||||
|
Bool(config.productVariables.ClangCoverage))
|
||||||
|
|
||||||
return Config{config}, nil
|
return Config{config}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1057,18 +1065,20 @@ func (c *deviceConfig) JavaCoverageEnabledForPath(path string) bool {
|
|||||||
return coverage
|
return coverage
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *config) NativeLineCoverage() bool {
|
// Returns true if gcov or clang coverage is enabled.
|
||||||
return Bool(c.productVariables.NativeLineCoverage)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *deviceConfig) NativeCoverageEnabled() bool {
|
func (c *deviceConfig) NativeCoverageEnabled() bool {
|
||||||
return Bool(c.config.productVariables.Native_coverage) || Bool(c.config.productVariables.NativeLineCoverage)
|
return Bool(c.config.productVariables.GcovCoverage) ||
|
||||||
|
Bool(c.config.productVariables.ClangCoverage)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *deviceConfig) ClangCoverageEnabled() bool {
|
func (c *deviceConfig) ClangCoverageEnabled() bool {
|
||||||
return Bool(c.config.productVariables.ClangCoverage)
|
return Bool(c.config.productVariables.ClangCoverage)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *deviceConfig) GcovCoverageEnabled() bool {
|
||||||
|
return Bool(c.config.productVariables.GcovCoverage)
|
||||||
|
}
|
||||||
|
|
||||||
// NativeCoverageEnabledForPath returns whether (GCOV- or Clang-based) native
|
// NativeCoverageEnabledForPath returns whether (GCOV- or Clang-based) native
|
||||||
// code coverage is enabled for path. By default, coverage is not enabled for a
|
// code coverage is enabled for path. By default, coverage is not enabled for a
|
||||||
// given path unless it is part of the NativeCoveragePaths product variable (and
|
// given path unless it is part of the NativeCoveragePaths product variable (and
|
||||||
|
@@ -270,12 +270,14 @@ type productVariables struct {
|
|||||||
JavaCoveragePaths []string `json:",omitempty"`
|
JavaCoveragePaths []string `json:",omitempty"`
|
||||||
JavaCoverageExcludePaths []string `json:",omitempty"`
|
JavaCoverageExcludePaths []string `json:",omitempty"`
|
||||||
|
|
||||||
NativeLineCoverage *bool `json:",omitempty"`
|
GcovCoverage *bool `json:",omitempty"`
|
||||||
Native_coverage *bool `json:",omitempty"`
|
|
||||||
ClangCoverage *bool `json:",omitempty"`
|
ClangCoverage *bool `json:",omitempty"`
|
||||||
NativeCoveragePaths []string `json:",omitempty"`
|
NativeCoveragePaths []string `json:",omitempty"`
|
||||||
NativeCoverageExcludePaths []string `json:",omitempty"`
|
NativeCoverageExcludePaths []string `json:",omitempty"`
|
||||||
|
|
||||||
|
// Set by NewConfig
|
||||||
|
Native_coverage *bool
|
||||||
|
|
||||||
SanitizeHost []string `json:",omitempty"`
|
SanitizeHost []string `json:",omitempty"`
|
||||||
SanitizeDevice []string `json:",omitempty"`
|
SanitizeDevice []string `json:",omitempty"`
|
||||||
SanitizeDeviceDiag []string `json:",omitempty"`
|
SanitizeDeviceDiag []string `json:",omitempty"`
|
||||||
|
@@ -1658,7 +1658,7 @@ func (a *apexBundle) AddSanitizerDependencies(ctx android.BottomUpMutatorContext
|
|||||||
var _ cc.Coverage = (*apexBundle)(nil)
|
var _ cc.Coverage = (*apexBundle)(nil)
|
||||||
|
|
||||||
func (a *apexBundle) IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool {
|
func (a *apexBundle) IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool {
|
||||||
return ctx.Device() && (ctx.DeviceConfig().NativeCoverageEnabled() || ctx.DeviceConfig().ClangCoverageEnabled())
|
return ctx.Device() && ctx.DeviceConfig().NativeCoverageEnabled()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *apexBundle) PreventInstall() {
|
func (a *apexBundle) PreventInstall() {
|
||||||
|
@@ -118,6 +118,7 @@ func TestVndkApexUsesVendorVariant(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("VNDK APEX supports coverage variants", func(t *testing.T) {
|
t.Run("VNDK APEX supports coverage variants", func(t *testing.T) {
|
||||||
ctx, _ := testApex(t, bp, func(fs map[string][]byte, config android.Config) {
|
ctx, _ := testApex(t, bp, func(fs map[string][]byte, config android.Config) {
|
||||||
|
config.TestProductVariables.GcovCoverage = proptools.BoolPtr(true)
|
||||||
config.TestProductVariables.Native_coverage = proptools.BoolPtr(true)
|
config.TestProductVariables.Native_coverage = proptools.BoolPtr(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -74,8 +74,8 @@ func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) {
|
func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) {
|
||||||
gcovCoverage := ctx.DeviceConfig().NativeCoverageEnabled()
|
|
||||||
clangCoverage := ctx.DeviceConfig().ClangCoverageEnabled()
|
clangCoverage := ctx.DeviceConfig().ClangCoverageEnabled()
|
||||||
|
gcovCoverage := ctx.DeviceConfig().GcovCoverageEnabled()
|
||||||
|
|
||||||
if !gcovCoverage && !clangCoverage {
|
if !gcovCoverage && !clangCoverage {
|
||||||
return flags, deps
|
return flags, deps
|
||||||
@@ -161,7 +161,7 @@ func (cov *coverage) begin(ctx BaseModuleContext) {
|
|||||||
func SetCoverageProperties(ctx android.BaseModuleContext, properties CoverageProperties, moduleTypeHasCoverage bool,
|
func SetCoverageProperties(ctx android.BaseModuleContext, properties CoverageProperties, moduleTypeHasCoverage bool,
|
||||||
useSdk bool, sdkVersion string) CoverageProperties {
|
useSdk bool, sdkVersion string) CoverageProperties {
|
||||||
// Coverage is disabled globally
|
// Coverage is disabled globally
|
||||||
if !ctx.DeviceConfig().NativeCoverageEnabled() && !ctx.DeviceConfig().ClangCoverageEnabled() {
|
if !ctx.DeviceConfig().NativeCoverageEnabled() {
|
||||||
return properties
|
return properties
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -952,7 +952,7 @@ func (a *AndroidApp) Privileged() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *AndroidApp) IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool {
|
func (a *AndroidApp) IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool {
|
||||||
return ctx.Device() && (ctx.DeviceConfig().NativeCoverageEnabled() || ctx.DeviceConfig().ClangCoverageEnabled())
|
return ctx.Device() && ctx.DeviceConfig().NativeCoverageEnabled()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AndroidApp) PreventInstall() {
|
func (a *AndroidApp) PreventInstall() {
|
||||||
|
@@ -45,7 +45,7 @@ func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps {
|
|||||||
|
|
||||||
func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) {
|
func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) {
|
||||||
|
|
||||||
if !ctx.DeviceConfig().NativeCoverageEnabled() && !ctx.DeviceConfig().ClangCoverageEnabled() {
|
if !ctx.DeviceConfig().NativeCoverageEnabled() {
|
||||||
return flags, deps
|
return flags, deps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -88,6 +88,7 @@ func testRustContext(t *testing.T, bp string, coverage bool) *android.TestContex
|
|||||||
config := testConfig(bp)
|
config := testConfig(bp)
|
||||||
|
|
||||||
if coverage {
|
if coverage {
|
||||||
|
config.TestProductVariables.GcovCoverage = proptools.BoolPtr(true)
|
||||||
config.TestProductVariables.Native_coverage = proptools.BoolPtr(true)
|
config.TestProductVariables.Native_coverage = proptools.BoolPtr(true)
|
||||||
config.TestProductVariables.NativeCoveragePaths = []string{"*"}
|
config.TestProductVariables.NativeCoveragePaths = []string{"*"}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user