From 7f67c2a665ad7e83852cd53dc39f09187a192ab3 Mon Sep 17 00:00:00 2001 From: Ivan Lozano Date: Mon, 27 Jun 2022 16:00:26 -0400 Subject: [PATCH] rust: Allow rust_ffi_shared in jni_libs Allow listing rust_ffi_shared modules as a jni_libs dependency in conjunction with platform_api: true. This allows inclusion by android_app modules. Bug: 237304791 Test: android_app module builds with a rust_ffi_shared dependency. Change-Id: I3a28e1baa522ad8f9c2aa86f1d23b19ce9f967e1 --- cc/linkable.go | 9 +++++++++ java/app.go | 2 +- rust/rust.go | 13 +++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/cc/linkable.go b/cc/linkable.go index c58bfdfbd..2316d865c 100644 --- a/cc/linkable.go +++ b/cc/linkable.go @@ -106,6 +106,9 @@ type LinkableInterface interface { UnstrippedOutputFile() android.Path CoverageFiles() android.Paths + // CoverageOutputFile returns the output archive of gcno coverage information files. + CoverageOutputFile() android.OptionalPath + NonCcVariants() bool SelectedStl() string @@ -133,6 +136,12 @@ type LinkableInterface interface { UseSdk() bool + // IsNdk returns true if the library is in the configs known NDK list. + IsNdk(config android.Config) bool + + // IsStubs returns true if the this is a stubs library. + IsStubs() bool + // IsLlndk returns true for both LLNDK (public) and LLNDK-private libs. IsLlndk() bool diff --git a/java/app.go b/java/app.go index c5d88e978..42ca7c071 100755 --- a/java/app.go +++ b/java/app.go @@ -731,7 +731,7 @@ func collectAppDeps(ctx android.ModuleContext, app appDepsInterface, tag := ctx.OtherModuleDependencyTag(module) if IsJniDepTag(tag) || cc.IsSharedDepTag(tag) { - if dep, ok := module.(*cc.Module); ok { + if dep, ok := module.(cc.LinkableInterface); ok { if dep.IsNdk(ctx.Config()) || dep.IsStubs() { return false } diff --git a/rust/rust.go b/rust/rust.go index 48419eb8e..d5d492971 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -695,6 +695,19 @@ func (mod *Module) CoverageFiles() android.Paths { panic(fmt.Errorf("CoverageFiles called on non-library module: %q", mod.BaseModuleName())) } +// Rust does not produce gcno files, and therefore does not produce a coverage archive. +func (mod *Module) CoverageOutputFile() android.OptionalPath { + return android.OptionalPath{} +} + +func (mod *Module) IsNdk(config android.Config) bool { + return false +} + +func (mod *Module) IsStubs() bool { + return false +} + func (mod *Module) installable(apexInfo android.ApexInfo) bool { if !proptools.BoolDefault(mod.Installable(), mod.EverInstallable()) { return false