Loading apex/apex.go +8 −0 Original line number Diff line number Diff line Loading @@ -2230,6 +2230,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } else if rm, ok := child.(*rust.Module); ok { if !android.IsDepInSameApex(ctx, am, am) { return false } af := apexFileForRustLibrary(ctx, rm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) Loading @@ -2249,6 +2253,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } } else if rust.IsDylibDepTag(depTag) { if rustm, ok := child.(*rust.Module); ok && rustm.IsInstallableToApex() { if !android.IsDepInSameApex(ctx, am, am) { return false } af := apexFileForRustLibrary(ctx, rustm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) Loading rust/library.go +9 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,10 @@ type LibraryCompilerProperties struct { // Whether this library is part of the Rust toolchain sysroot. Sysroot *bool // Exclude this rust_ffi target from being included in APEXes. // TODO(b/362509506): remove this once stubs are properly supported by rust_ffi targets. Apex_exclude *bool } type LibraryMutatedProperties struct { Loading Loading @@ -122,6 +126,7 @@ type libraryInterface interface { shared() bool sysroot() bool source() bool apexExclude() bool // Returns true if the build options for the module have selected a particular build type buildRlib() bool Loading Loading @@ -186,6 +191,10 @@ func (library *libraryDecorator) source() bool { return library.MutatedProperties.VariantIsSource } func (library *libraryDecorator) apexExclude() bool { return Bool(library.Properties.Apex_exclude) } func (library *libraryDecorator) buildRlib() bool { return library.MutatedProperties.BuildRlib && BoolDefault(library.Properties.Rlib.Enabled, true) } Loading rust/rust.go +13 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,15 @@ func (mod *Module) StaticExecutable() bool { return mod.StaticallyLinked() } func (mod *Module) ApexExclude() bool { if mod.compiler != nil { if library, ok := mod.compiler.(libraryInterface); ok { return library.apexExclude() } } return false } func (mod *Module) Object() bool { // Rust has no modules which produce only object files. return false Loading Loading @@ -1863,6 +1872,10 @@ func (mod *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Mo return false } if rustDep, ok := dep.(*Module); ok && rustDep.ApexExclude() { return false } return true } Loading Loading
apex/apex.go +8 −0 Original line number Diff line number Diff line Loading @@ -2230,6 +2230,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, addAconfigFiles(vctx, ctx, child) return true // track transitive dependencies } else if rm, ok := child.(*rust.Module); ok { if !android.IsDepInSameApex(ctx, am, am) { return false } af := apexFileForRustLibrary(ctx, rm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) Loading @@ -2249,6 +2253,10 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } } else if rust.IsDylibDepTag(depTag) { if rustm, ok := child.(*rust.Module); ok && rustm.IsInstallableToApex() { if !android.IsDepInSameApex(ctx, am, am) { return false } af := apexFileForRustLibrary(ctx, rustm) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) Loading
rust/library.go +9 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,10 @@ type LibraryCompilerProperties struct { // Whether this library is part of the Rust toolchain sysroot. Sysroot *bool // Exclude this rust_ffi target from being included in APEXes. // TODO(b/362509506): remove this once stubs are properly supported by rust_ffi targets. Apex_exclude *bool } type LibraryMutatedProperties struct { Loading Loading @@ -122,6 +126,7 @@ type libraryInterface interface { shared() bool sysroot() bool source() bool apexExclude() bool // Returns true if the build options for the module have selected a particular build type buildRlib() bool Loading Loading @@ -186,6 +191,10 @@ func (library *libraryDecorator) source() bool { return library.MutatedProperties.VariantIsSource } func (library *libraryDecorator) apexExclude() bool { return Bool(library.Properties.Apex_exclude) } func (library *libraryDecorator) buildRlib() bool { return library.MutatedProperties.BuildRlib && BoolDefault(library.Properties.Rlib.Enabled, true) } Loading
rust/rust.go +13 −0 Original line number Diff line number Diff line Loading @@ -294,6 +294,15 @@ func (mod *Module) StaticExecutable() bool { return mod.StaticallyLinked() } func (mod *Module) ApexExclude() bool { if mod.compiler != nil { if library, ok := mod.compiler.(libraryInterface); ok { return library.apexExclude() } } return false } func (mod *Module) Object() bool { // Rust has no modules which produce only object files. return false Loading Loading @@ -1863,6 +1872,10 @@ func (mod *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Mo return false } if rustDep, ok := dep.(*Module); ok && rustDep.ApexExclude() { return false } return true } Loading