Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5762dd7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add a property to rust_ffi targets to exclude them from APEXes." into main

parents a6f4b6b1 46e4fad2
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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)
@@ -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)
+9 −0
Original line number Diff line number Diff line
@@ -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 {
@@ -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
@@ -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)
}
+13 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
}