Build native coverage variant of APEXes when needed
When the native coverage is enabled, APEXes (and files there) are built for native coverage as well. Bug: 138952487 Test: make -j NATIVE_COVERAGE=true COVERAGE_PATHS='*' com.android.resolv find out -name "*.gcno" | grep DnsResolver shows files Test: libnetd_resolv.zip is found under $(TARGET_OUT)/apex/com.android.resolv/lib directory Change-Id: I97bcee9bf8ffc0dc71453abbdb613ed56ea2cdb4
This commit is contained in:
@@ -140,7 +140,6 @@ func (cov *coverage) begin(ctx BaseModuleContext) {
|
||||
} else {
|
||||
// Check if Native_coverage is set to false. This property defaults to true.
|
||||
needCoverageVariant = BoolDefault(cov.Properties.Native_coverage, true)
|
||||
|
||||
if sdk_version := ctx.sdkVersion(); ctx.useSdk() && sdk_version != "current" {
|
||||
// Native coverage is not supported for SDK versions < 23
|
||||
if fromApi, err := strconv.Atoi(sdk_version); err == nil && fromApi < 23 {
|
||||
@@ -158,6 +157,14 @@ func (cov *coverage) begin(ctx BaseModuleContext) {
|
||||
cov.Properties.NeedCoverageVariant = needCoverageVariant
|
||||
}
|
||||
|
||||
// Coverage is an interface for non-CC modules to implement to be mutated for coverage
|
||||
type Coverage interface {
|
||||
android.Module
|
||||
IsNativeCoverageNeeded(ctx android.BaseModuleContext) bool
|
||||
PreventInstall()
|
||||
HideFromMake()
|
||||
}
|
||||
|
||||
func coverageMutator(mctx android.BottomUpMutatorContext) {
|
||||
if c, ok := mctx.Module().(*Module); ok && c.coverage != nil {
|
||||
needCoverageVariant := c.coverage.Properties.NeedCoverageVariant
|
||||
@@ -177,5 +184,14 @@ func coverageMutator(mctx android.BottomUpMutatorContext) {
|
||||
m[1].(*Module).coverage.Properties.CoverageEnabled = needCoverageBuild
|
||||
m[1].(*Module).coverage.Properties.IsCoverageVariant = true
|
||||
}
|
||||
} else if cov, ok := mctx.Module().(Coverage); ok && cov.IsNativeCoverageNeeded(mctx) {
|
||||
// APEX modules fall here
|
||||
|
||||
// Note: variant "" is also created because an APEX can be depended on by another
|
||||
// module which are split into "" and "cov" variants. e.g. when cc_test refers
|
||||
// to an APEX via 'data' property.
|
||||
m := mctx.CreateVariations("", "cov")
|
||||
m[0].(Coverage).PreventInstall()
|
||||
m[0].(Coverage).HideFromMake()
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user