diff options
Diffstat (limited to 'rust/coverage.go')
| -rw-r--r-- | rust/coverage.go | 25 | 
1 files changed, 18 insertions, 7 deletions
diff --git a/rust/coverage.go b/rust/coverage.go index 381fcf1b4..798b21d78 100644 --- a/rust/coverage.go +++ b/rust/coverage.go @@ -15,12 +15,13 @@  package rust  import ( +	"android/soong/android" +  	"github.com/google/blueprint"  	"android/soong/cc"  ) -var CovLibraryName = "libprofile-clang-extras"  var ProfilerBuiltins = "libprofiler_builtins.rust_sysroot"  // Add '%c' to default specifier after we resolve http://b/210012154 @@ -37,12 +38,20 @@ func (cov *coverage) props() []interface{} {  	return []interface{}{&cov.Properties}  } +func getClangProfileLibraryName(ctx ModuleContextIntf) string { +	if ctx.RustModule().UseSdk() { +		return "libprofile-clang-extras_ndk" +	} else { +		return "libprofile-clang-extras" +	} +} +  func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps {  	if cov.Properties.NeedCoverageVariant {  		if ctx.Device() {  			ctx.AddVariationDependencies([]blueprint.Variation{  				{Mutator: "link", Variation: "static"}, -			}, cc.CoverageDepTag, CovLibraryName) +			}, cc.CoverageDepTag, getClangProfileLibraryName(ctx))  		}  		// no_std modules are missing libprofiler_builtins which provides coverage, so we need to add it as a dependency. @@ -65,16 +74,18 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags  		flags.RustFlags = append(flags.RustFlags,  			"-C instrument-coverage", "-g")  		if ctx.Device() { -			coverage := ctx.GetDirectDepWithTag(CovLibraryName, cc.CoverageDepTag).(cc.LinkableInterface) +			m := ctx.GetDirectDepProxyWithTag(getClangProfileLibraryName(ctx), cc.CoverageDepTag) +			coverage := android.OtherModuleProviderOrDefault(ctx, m, cc.LinkableInfoProvider)  			flags.LinkFlags = append(flags.LinkFlags, -				profileInstrFlag, "-g", coverage.OutputFile().Path().String(), "-Wl,--wrap,open") -			deps.StaticLibs = append(deps.StaticLibs, coverage.OutputFile().Path()) +				profileInstrFlag, "-g", coverage.OutputFile.Path().String(), "-Wl,--wrap,open") +			deps.StaticLibs = append(deps.StaticLibs, coverage.OutputFile.Path())  		}  		// no_std modules are missing libprofiler_builtins which provides coverage, so we need to add it as a dependency.  		if rustModule, ok := ctx.Module().(*Module); ok && rustModule.compiler.noStdlibs() { -			profiler_builtins := ctx.GetDirectDepWithTag(ProfilerBuiltins, rlibDepTag).(*Module) -			deps.RLibs = append(deps.RLibs, RustLibrary{Path: profiler_builtins.OutputFile().Path(), CrateName: profiler_builtins.CrateName()}) +			m := ctx.GetDirectDepProxyWithTag(ProfilerBuiltins, rlibDepTag) +			profiler_builtins := android.OtherModuleProviderOrDefault(ctx, m, cc.LinkableInfoProvider) +			deps.RLibs = append(deps.RLibs, RustLibrary{Path: profiler_builtins.OutputFile.Path(), CrateName: profiler_builtins.CrateName})  		}  		if cc.EnableContinuousCoverage(ctx) {  |