aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-03 19:13:58 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-02-03 19:13:58 +0000
commit1cb0535e41cff3cfdb9549804380c3cf9fffc0a7 (patch)
tree47b0c43124304a32d7bc4e78359cd4e94012666b
parent3756ab846048d0cc0e581ae51706936afd1b6c78 (diff)
parent2363a2b162cac1946ae4a8677a473890da98dc10 (diff)
downloadandroid_build_soong-1cb0535e41cff3cfdb9549804380c3cf9fffc0a7.tar.gz
android_build_soong-1cb0535e41cff3cfdb9549804380c3cf9fffc0a7.tar.bz2
android_build_soong-1cb0535e41cff3cfdb9549804380c3cf9fffc0a7.zip
Refactor libprofile-extras to be added as a whole static library am: 2363a2b162
Change-Id: Ic7b0c632eed10248906eb5a36a40f7afa1c659ce
-rw-r--r--cc/cc.go3
-rw-r--r--cc/coverage.go44
2 files changed, 24 insertions, 23 deletions
diff --git a/cc/cc.go b/cc/cc.go
index ebe6b395..f2a51da3 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -360,6 +360,7 @@ var (
ndkLateStubDepTag = dependencyTag{name: "ndk late stub", library: true}
vndkExtDepTag = dependencyTag{name: "vndk extends", library: true}
runtimeDepTag = dependencyTag{name: "runtime lib"}
+ coverageDepTag = dependencyTag{name: "coverage"}
)
// 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)
}
if c.coverage != nil {
- flags = c.coverage.flags(ctx, flags)
+ flags, deps = c.coverage.flags(ctx, flags, deps)
}
if c.lto != nil {
flags = c.lto.flags(ctx, flags)
diff --git a/cc/coverage.go b/cc/coverage.go
index 9dc7f06b..c189398a 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) {