aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2020-06-16 17:51:46 -0700
committerOliver Nguyen <olivernguyen@google.com>2020-07-02 11:21:36 -0700
commit72cabc625599fafc1f1f56c74938a8b11946d7ca (patch)
treec8cfb5bad2e27565738d893970eb4182de92d2ca
parent583691a0603940c114b882543089bd56790d25a3 (diff)
downloadbuild_soong-72cabc625599fafc1f1f56c74938a8b11946d7ca.tar.gz
build_soong-72cabc625599fafc1f1f56c74938a8b11946d7ca.tar.bz2
build_soong-72cabc625599fafc1f1f56c74938a8b11946d7ca.zip
Make native_coverage clause work with ClangCoverage
Make uses NATIVE_COVERAGE to enable gcov coverage and CLANG_COVERAGE to enable clang coverage. NATIVE_COVERAGE is translated to the Soong Native_coverage product variable which triggers the native_coverage clause in Android.bp files. The clause also needs to be triggered for CLANG_COVERAGE. Rename the existing Native_coverage product variable to GcovCoverage, and regenerate Native_coverage when either GcovCoverage or ClangCoverage are set. Also remove NativeLineCoverage, it wasn't doing anything differently than Native_coverage. Bug: 159059537 Test: m checkbuild Merged-In: I215124a9b35a2ad50ad562079d392e3d33da11f4 Change-Id: I215124a9b35a2ad50ad562079d392e3d33da11f4
-rw-r--r--android/config.go20
-rw-r--r--android/variable.go6
-rw-r--r--apex/apex.go2
-rw-r--r--apex/vndk_test.go1
-rw-r--r--cc/coverage.go4
-rwxr-xr-xjava/app.go2
6 files changed, 24 insertions, 11 deletions
diff --git a/android/config.go b/android/config.go
index 40347e76..b6ef2684 100644
--- a/android/config.go
+++ b/android/config.go
@@ -406,6 +406,14 @@ func NewConfig(srcDir, buildDir string) (Config, error) {
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
}
@@ -1058,18 +1066,20 @@ func (c *deviceConfig) JavaCoverageEnabledForPath(path string) bool {
return coverage
}
-func (c *config) NativeLineCoverage() bool {
- return Bool(c.productVariables.NativeLineCoverage)
-}
-
+// Returns true if gcov or clang coverage is enabled.
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 {
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
// 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
diff --git a/android/variable.go b/android/variable.go
index fadfebcb..983c2356 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -256,12 +256,14 @@ type productVariables struct {
JavaCoveragePaths []string `json:",omitempty"`
JavaCoverageExcludePaths []string `json:",omitempty"`
- NativeLineCoverage *bool `json:",omitempty"`
- Native_coverage *bool `json:",omitempty"`
+ GcovCoverage *bool `json:",omitempty"`
ClangCoverage *bool `json:",omitempty"`
NativeCoveragePaths []string `json:",omitempty"`
NativeCoverageExcludePaths []string `json:",omitempty"`
+ // Set by NewConfig
+ Native_coverage *bool
+
DevicePrefer32BitApps *bool `json:",omitempty"`
DevicePrefer32BitExecutables *bool `json:",omitempty"`
HostPrefer32BitExecutables *bool `json:",omitempty"`
diff --git a/apex/apex.go b/apex/apex.go
index a63a8d60..f9c9b87f 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1660,7 +1660,7 @@ func (a *apexBundle) IsSanitizerEnabled(ctx android.BaseModuleContext, sanitizer
}
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() {
diff --git a/apex/vndk_test.go b/apex/vndk_test.go
index 523ac263..8557faee 100644
--- a/apex/vndk_test.go
+++ b/apex/vndk_test.go
@@ -155,6 +155,7 @@ func TestVndkApexUsesVendorVariant(t *testing.T) {
sdk_version: "current",
}
`, func(fs map[string][]byte, config android.Config) {
+ config.TestProductVariables.GcovCoverage = proptools.BoolPtr(true)
config.TestProductVariables.Native_coverage = proptools.BoolPtr(true)
})
diff --git a/cc/coverage.go b/cc/coverage.go
index 7e1bfa41..4431757d 100644
--- a/cc/coverage.go
+++ b/cc/coverage.go
@@ -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) {
- gcovCoverage := ctx.DeviceConfig().NativeCoverageEnabled()
clangCoverage := ctx.DeviceConfig().ClangCoverageEnabled()
+ gcovCoverage := ctx.DeviceConfig().GcovCoverageEnabled()
if !gcovCoverage && !clangCoverage {
return flags, deps
@@ -151,7 +151,7 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags
func (cov *coverage) begin(ctx BaseModuleContext) {
// Coverage is disabled globally
- if !ctx.DeviceConfig().NativeCoverageEnabled() && !ctx.DeviceConfig().ClangCoverageEnabled() {
+ if !ctx.DeviceConfig().NativeCoverageEnabled() {
return
}
diff --git a/java/app.go b/java/app.go
index e2e3a53d..eaac2091 100755
--- a/java/app.go
+++ b/java/app.go
@@ -947,7 +947,7 @@ func (a *AndroidApp) Privileged() 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() {