Add libraryDependencyTag to track dependencies on static and shared libraries
dependencyTag uses a set of predefined tags to identify different types of dependencies. There are already multiple bits of metadata stored in the dependency tag (Library, Shared, ReexportFlags), and supporting them all requires a combinatorial explosion of predefined tags and causes issues when using equality comparisons if a new bit of metadata is added. Add a new libraryDependencyTag type that will contain the metadata bits, and replace the quality comparisons with checks on the metadata bits. There are 5 TODOs where modifying the checks identified problems with the existing checks. These were left in place to produce identical build output and will be fixed separately. Bug: 162437057 Test: no change to build.ninja or {Android,make_vars,late}-${TARGET_PRODUCT}.mk Change-Id: I72d4207dcf381c07c92e00e5a03968ebb5ed8d30
This commit is contained in:
@@ -103,10 +103,14 @@ func (cov *coverage) flags(ctx ModuleContext, flags Flags, deps PathDeps) (Flags
|
||||
// For static libraries, the only thing that changes our object files
|
||||
// are included whole static libraries, so check to see if any of
|
||||
// those have coverage enabled.
|
||||
ctx.VisitDirectDepsWithTag(wholeStaticDepTag, func(m android.Module) {
|
||||
if cc, ok := m.(*Module); ok && cc.coverage != nil {
|
||||
if cc.coverage.linkCoverage {
|
||||
cov.linkCoverage = true
|
||||
ctx.VisitDirectDeps(func(m android.Module) {
|
||||
if depTag, ok := ctx.OtherModuleDependencyTag(m).(libraryDependencyTag); ok {
|
||||
if depTag.static() && depTag.wholeStatic {
|
||||
if cc, ok := m.(*Module); ok && cc.coverage != nil {
|
||||
if cc.coverage.linkCoverage {
|
||||
cov.linkCoverage = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
Reference in New Issue
Block a user