diff options
author | 2024-12-12 14:53:30 -0800 | |
---|---|---|
committer | 2024-12-12 14:55:28 -0800 | |
commit | 8acea3e421fff22567fbbe21f0b91ca85857cf1c (patch) | |
tree | a399740db8807f7d11a217e19298f31d3c4ec31a | |
parent | f7bbd2fe40e43f7fda7e08d08eeb9c2a93552ad9 (diff) |
Simplify cc.IncomingDepIsInSameApex
The libDepTag checks don't need to be in IncomingDepIsInSameApex,
move them back to OutgoingDepIsInSamApex. This also means that
the fromStatic field in libraryDependencyTag is no longer necessary,
as OutgoingDepIsInSameApex can access c.static() directly.
Bug: 372543712
Test: builds
Change-Id: I1d97a02055460445bfa854f3d9b78f185d4a6a15
-rw-r--r-- | cc/cc.go | 48 | ||||
-rw-r--r-- | cc/linkable.go | 4 | ||||
-rw-r--r-- | rust/rust.go | 9 | ||||
-rw-r--r-- | rust/sanitize.go | 4 |
4 files changed, 35 insertions, 30 deletions
@@ -731,9 +731,6 @@ type libraryDependencyTag struct { Kind libraryDependencyKind Order libraryDependencyOrder - // fromStatic is true when the parent module is a static library or binary - fromStatic bool - wholeStatic bool reexportFlags bool @@ -2555,7 +2552,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { } for _, lib := range deps.HeaderLibs { - depTag := libraryDependencyTag{Kind: headerLibraryDependency, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: headerLibraryDependency} if inList(lib, deps.ReexportHeaderLibHeaders) { depTag.reexportFlags = true } @@ -2597,7 +2594,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { } for _, lib := range deps.WholeStaticLibs { - depTag := libraryDependencyTag{Kind: staticLibraryDependency, wholeStatic: true, reexportFlags: true, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: staticLibraryDependency, wholeStatic: true, reexportFlags: true} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "link", Variation: "static"}, @@ -2606,7 +2603,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { for _, lib := range deps.StaticLibs { // Some dependencies listed in static_libs might actually be rust_ffi rlib variants. - depTag := libraryDependencyTag{Kind: staticLibraryDependency, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: staticLibraryDependency} if inList(lib, deps.ReexportStaticLibHeaders) { depTag.reexportFlags = true @@ -2623,7 +2620,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { // so that native libraries/binaries are linked with static unwinder // because Q libc doesn't have unwinder APIs if deps.StaticUnwinderIfLegacy { - depTag := libraryDependencyTag{Kind: staticLibraryDependency, staticUnwinder: true, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: staticLibraryDependency, staticUnwinder: true} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "link", Variation: "static"}, }, depTag, staticUnwinder(actx)) @@ -2633,7 +2630,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { var sharedLibNames []string for _, lib := range deps.SharedLibs { - depTag := libraryDependencyTag{Kind: sharedLibraryDependency, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: sharedLibraryDependency} if inList(lib, deps.ReexportSharedLibHeaders) { depTag.reexportFlags = true } @@ -2654,14 +2651,14 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { } for _, lib := range deps.LateStaticLibs { - depTag := libraryDependencyTag{Kind: staticLibraryDependency, Order: lateLibraryDependency, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: staticLibraryDependency, Order: lateLibraryDependency} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "link", Variation: "static"}, }, depTag, lib) } for _, lib := range deps.UnexportedStaticLibs { - depTag := libraryDependencyTag{Kind: staticLibraryDependency, Order: lateLibraryDependency, unexportedSymbols: true, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: staticLibraryDependency, Order: lateLibraryDependency, unexportedSymbols: true} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "link", Variation: "static"}, }, depTag, lib) @@ -2674,7 +2671,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { // linking against both the stubs lib and the non-stubs lib at the same time. continue } - depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: lateLibraryDependency, fromStatic: c.static()} + depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: lateLibraryDependency} variations := []blueprint.Variation{ {Mutator: "link", Variation: "shared"}, } @@ -2722,7 +2719,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { version := ctx.sdkVersion() - ndkStubDepTag := libraryDependencyTag{Kind: sharedLibraryDependency, ndk: true, makeSuffix: "." + version, fromStatic: c.static()} + ndkStubDepTag := libraryDependencyTag{Kind: sharedLibraryDependency, ndk: true, makeSuffix: "." + version} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "version", Variation: version}, {Mutator: "link", Variation: "shared"}, @@ -2732,7 +2729,7 @@ func (c *Module) DepsMutator(actx android.BottomUpMutatorContext) { {Mutator: "link", Variation: "shared"}, }, ndkStubDepTag, apiNdkLibs...) - ndkLateStubDepTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: lateLibraryDependency, ndk: true, makeSuffix: "." + version, fromStatic: c.static()} + ndkLateStubDepTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: lateLibraryDependency, ndk: true, makeSuffix: "." + version} actx.AddVariationDependencies([]blueprint.Variation{ {Mutator: "version", Variation: version}, {Mutator: "link", Variation: "shared"}, @@ -3772,12 +3769,23 @@ func (c *Module) OutgoingDepIsInSameApex(depTag blueprint.DependencyTag) bool { // APEX. return false } + + libDepTag, isLibDepTag := depTag.(libraryDependencyTag) + if isLibDepTag && c.static() && libDepTag.shared() { + // shared_lib dependency from a static lib is considered as crossing + // the APEX boundary because the dependency doesn't actually is + // linked; the dependency is used only during the compilation phase. + return false + } + + if isLibDepTag && libDepTag.excludeInApex { + return false + } + return true } func (c *Module) IncomingDepIsInSameApex(depTag blueprint.DependencyTag) bool { - libDepTag, isLibDepTag := depTag.(libraryDependencyTag) - if c.HasStubsVariants() { if IsSharedDepTag(depTag) { // dynamic dep to a stubs lib crosses APEX boundary @@ -3794,16 +3802,6 @@ func (c *Module) IncomingDepIsInSameApex(depTag blueprint.DependencyTag) bool { if c.IsLlndk() { return false } - if isLibDepTag && libDepTag.fromStatic && libDepTag.shared() { - // shared_lib dependency from a static lib is considered as crossing - // the APEX boundary because the dependency doesn't actually is - // linked; the dependency is used only during the compilation phase. - return false - } - - if isLibDepTag && libDepTag.excludeInApex { - return false - } return true } diff --git a/cc/linkable.go b/cc/linkable.go index 1fade717a..1a9a9abbc 100644 --- a/cc/linkable.go +++ b/cc/linkable.go @@ -294,8 +294,8 @@ func DepTagMakeSuffix(depTag blueprint.DependencyTag) string { } // SharedDepTag returns the dependency tag for any C++ shared libraries. -func SharedDepTag(fromStatic bool) blueprint.DependencyTag { - return libraryDependencyTag{Kind: sharedLibraryDependency, fromStatic: fromStatic} +func SharedDepTag() blueprint.DependencyTag { + return libraryDependencyTag{Kind: sharedLibraryDependency} } // StaticDepTag returns the dependency tag for any C++ static libraries. diff --git a/rust/rust.go b/rust/rust.go index 64cfa40d2..9586b8ce4 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -1683,7 +1683,7 @@ func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { } for _, lib := range deps.SharedLibs { - depTag := cc.SharedDepTag(mod.Static()) + depTag := cc.SharedDepTag() name, version := cc.StubsLibNameAndVersion(lib) variations := []blueprint.Variation{ @@ -1829,6 +1829,13 @@ func (mod *Module) OutgoingDepIsInSameApex(depTag blueprint.DependencyTag) bool return false } + if mod.Static() && cc.IsSharedDepTag(depTag) { + // shared_lib dependency from a static lib is considered as crossing + // the APEX boundary because the dependency doesn't actually is + // linked; the dependency is used only during the compilation phase. + return false + } + return true } diff --git a/rust/sanitize.go b/rust/sanitize.go index 4c82de5e8..b8f922fe2 100644 --- a/rust/sanitize.go +++ b/rust/sanitize.go @@ -281,7 +281,7 @@ func rustSanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { } else { variations = append(variations, blueprint.Variation{Mutator: "link", Variation: "shared"}) - depTag = cc.SharedDepTag(mod.Static()) + depTag = cc.SharedDepTag() deps = []string{config.LibclangRuntimeLibrary(mod.toolchain(mctx), "asan")} } } else if mod.IsSanitizerEnabled(cc.Hwasan) { @@ -296,7 +296,7 @@ func rustSanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { // library during final link if necessary variations = append(variations, blueprint.Variation{Mutator: "link", Variation: "shared"}) - depTag = cc.SharedDepTag(mod.Static()) + depTag = cc.SharedDepTag() deps = []string{config.LibclangRuntimeLibrary(mod.toolchain(mctx), "hwasan")} } |