diff options
Diffstat (limited to 'cc/coverage.go')
| -rw-r--r-- | cc/coverage.go | 44 | 
1 files changed, 22 insertions, 22 deletions
| diff --git a/cc/coverage.go b/cc/coverage.go index 9dc7f06b0..c189398a9 100644 --- a/cc/coverage.go +++ b/cc/coverage.go @@ -17,6 +17,8 @@ package cc  import (  	"strconv" +	"github.com/google/blueprint" +  	"android/soong/android"  ) @@ -41,30 +43,28 @@ func (cov *coverage) props() []interface{} {  	return []interface{}{&cov.Properties}  } -func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps { -	if cov.Properties.NeedCoverageBuild { -		// Link libprofile-extras/libprofile-extras_ndk when coverage -		// variant is required.  This is a no-op unless coverage is -		// actually enabled during linking, when -		// '-uinit_profile_extras' is added (in flags()) to force the -		// setup code in libprofile-extras be linked into the -		// binary/library. -		// -		// We cannot narrow it further to only the 'cov' variant since -		// the mutator hasn't run (and we don't have the 'cov' variant -		// yet). -		if !ctx.useSdk() { -			deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras") -		} else { -			deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras_ndk") -		} +func getProfileLibraryName(ctx ModuleContextIntf) string { +	// This function should only ever be called for a cc.Module, so the +	// following statement should always succeed. +	if ctx.useSdk() { +		return "libprofile-extras_ndk" +	} else { +		return "libprofile-extras" +	} +} + +func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps { +	if cov.Properties.NeedCoverageVariant { +		ctx.AddVariationDependencies([]blueprint.Variation{ +			{Mutator: "link", Variation: "static"}, +		}, coverageDepTag, getProfileLibraryName(ctx))  	}  	return deps  } -func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags { +func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags, PathDeps) {  	if !ctx.DeviceConfig().NativeCoverageEnabled() { -		return flags +		return flags, deps  	}  	if cov.Properties.CoverageEnabled { @@ -114,11 +114,11 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags {  	if cov.linkCoverage {  		flags.LdFlags = append(flags.LdFlags, "--coverage") -		// Force linking of constructor/setup code in libprofile-extras -		flags.LdFlags = append(flags.LdFlags, "-uinit_profile_extras") +		coverage := ctx.GetDirectDepWithTag(getProfileLibraryName(ctx), coverageDepTag).(*Module) +		deps.WholeStaticLibs = append(deps.WholeStaticLibs, coverage.OutputFile().Path())  	} -	return flags +	return flags, deps  }  func (cov *coverage) begin(ctx BaseModuleContext) { |