Refactor libprofile-extras to be added as a whole static library am: 2363a2b162

Change-Id: Ic7b0c632eed10248906eb5a36a40f7afa1c659ce
This commit is contained in:
Automerger Merge Worker
2020-02-03 19:13:58 +00:00
2 changed files with 24 additions and 23 deletions

View File

@@ -360,6 +360,7 @@ var (
ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true} ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true}
vndkExtDepTag = dependencyTag{name: "vndk extends", library: true} vndkExtDepTag = dependencyTag{name: "vndk extends", library: true}
runtimeDepTag = dependencyTag{name: "runtime lib"} runtimeDepTag = dependencyTag{name: "runtime lib"}
coverageDepTag = dependencyTag{name: "coverage"}
) )
// Module contains the properties and members used by all C/C++ module types, and implements // Module contains the properties and members used by all C/C++ module types, and implements
@@ -955,7 +956,7 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
flags = c.sanitize.flags(ctx, flags) flags = c.sanitize.flags(ctx, flags)
} }
if c.coverage != nil { if c.coverage != nil {
flags = c.coverage.flags(ctx, flags) flags, deps = c.coverage.flags(ctx, flags, deps)
} }
if c.lto != nil { if c.lto != nil {
flags = c.lto.flags(ctx, flags) flags = c.lto.flags(ctx, flags)

View File

@@ -17,6 +17,8 @@ package cc
import ( import (
"strconv" "strconv"
"github.com/google/blueprint"
"android/soong/android" "android/soong/android"
) )
@@ -41,30 +43,28 @@ func (cov *coverage) props() []interface{} {
return []interface{}{&cov.Properties} return []interface{}{&cov.Properties}
} }
func (cov *coverage) deps(ctx BaseModuleContext, deps Deps) Deps { func getProfileLibraryName(ctx ModuleContextIntf) string {
if cov.Properties.NeedCoverageBuild { // This function should only ever be called for a cc.Module, so the
// Link libprofile-extras/libprofile-extras_ndk when coverage // following statement should always succeed.
// variant is required. This is a no-op unless coverage is if ctx.useSdk() {
// actually enabled during linking, when return "libprofile-extras_ndk"
// '-uinit_profile_extras' is added (in flags()) to force the } else {
// setup code in libprofile-extras be linked into the return "libprofile-extras"
// 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 func (cov *coverage) deps(ctx DepsContext, deps Deps) Deps {
// yet). if cov.Properties.NeedCoverageVariant {
if !ctx.useSdk() { ctx.AddVariationDependencies([]blueprint.Variation{
deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras") {Mutator: "link", Variation: "static"},
} else { }, coverageDepTag, getProfileLibraryName(ctx))
deps.LateStaticLibs = append(deps.LateStaticLibs, "libprofile-extras_ndk")
}
} }
return deps 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() { if !ctx.DeviceConfig().NativeCoverageEnabled() {
return flags return flags, deps
} }
if cov.Properties.CoverageEnabled { if cov.Properties.CoverageEnabled {
@@ -114,11 +114,11 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags) Flags {
if cov.linkCoverage { if cov.linkCoverage {
flags.LdFlags = append(flags.LdFlags, "--coverage") flags.LdFlags = append(flags.LdFlags, "--coverage")
// Force linking of constructor/setup code in libprofile-extras coverage := ctx.GetDirectDepWithTag(getProfileLibraryName(ctx), coverageDepTag).(*Module)
flags.LdFlags = append(flags.LdFlags, "-uinit_profile_extras") deps.WholeStaticLibs = append(deps.WholeStaticLibs, coverage.OutputFile().Path())
} }
return flags return flags, deps
} }
func (cov *coverage) begin(ctx BaseModuleContext) { func (cov *coverage) begin(ctx BaseModuleContext) {