diff options
Diffstat (limited to 'rust/library.go')
| -rw-r--r-- | rust/library.go | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/rust/library.go b/rust/library.go index 87e816dba..8aa033c0f 100644 --- a/rust/library.go +++ b/rust/library.go @@ -75,11 +75,12 @@ type LibraryMutatedProperties struct { type libraryDecorator struct { *baseCompiler - Properties LibraryCompilerProperties - MutatedProperties LibraryMutatedProperties - distFile android.OptionalPath - unstrippedOutputFile android.Path - includeDirs android.Paths + Properties LibraryCompilerProperties + MutatedProperties LibraryMutatedProperties + distFile android.OptionalPath + coverageOutputZipFile android.OptionalPath + unstrippedOutputFile android.Path + includeDirs android.Paths } type libraryInterface interface { @@ -107,6 +108,10 @@ type libraryInterface interface { BuildOnlyShared() } +func (library *libraryDecorator) nativeCoverage() bool { + return true +} + func (library *libraryDecorator) exportedDirs() []string { return library.linkDirs } @@ -351,23 +356,36 @@ func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps Pa fileName := library.getStem(ctx) + ctx.toolchain().RlibSuffix() outputFile = android.PathForModuleOut(ctx, fileName) - TransformSrctoRlib(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + outputs := TransformSrctoRlib(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + library.coverageFile = outputs.coverageFile } else if library.dylib() { fileName := library.getStem(ctx) + ctx.toolchain().DylibSuffix() outputFile = android.PathForModuleOut(ctx, fileName) - TransformSrctoDylib(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + outputs := TransformSrctoDylib(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + library.coverageFile = outputs.coverageFile } else if library.static() { fileName := library.getStem(ctx) + ctx.toolchain().StaticLibSuffix() outputFile = android.PathForModuleOut(ctx, fileName) - TransformSrctoStatic(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + outputs := TransformSrctoStatic(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + library.coverageFile = outputs.coverageFile } else if library.shared() { fileName := library.getStem(ctx) + ctx.toolchain().SharedLibSuffix() outputFile = android.PathForModuleOut(ctx, fileName) - TransformSrctoShared(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + outputs := TransformSrctoShared(ctx, srcPath, deps, flags, outputFile, deps.linkDirs) + library.coverageFile = outputs.coverageFile + } + + var coverageFiles android.Paths + if library.coverageFile != nil { + coverageFiles = append(coverageFiles, library.coverageFile) + } + if len(deps.coverageFiles) > 0 { + coverageFiles = append(coverageFiles, deps.coverageFiles...) } + library.coverageOutputZipFile = TransformCoverageFilesToZip(ctx, coverageFiles, library.getStem(ctx)) if library.rlib() || library.dylib() { library.reexportDirs(deps.linkDirs...) |