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

Commit c8f2f186 authored by Paul Duffin's avatar Paul Duffin
Browse files

Extract common behavior between Module and Import

Although the duplication being eliminated here is minimal follow up
changes will add more functionality that is common to Module and
Import.

Test: m nothing
Bug: 156723295
Merged-In: I1733405526764272beba63470a9bc8a958d41024
Change-Id: I1733405526764272beba63470a9bc8a958d41024
(cherry picked from commit 0d3c2e13)
parent c5d954a4
Loading
Loading
Loading
Loading
+24 −10
Original line number Original line Diff line number Diff line
@@ -354,6 +354,22 @@ func (me *CompilerDeviceProperties) EffectiveOptimizeEnabled() bool {
	return BoolDefault(me.Optimize.Enabled, me.Optimize.EnabledByDefault)
	return BoolDefault(me.Optimize.Enabled, me.Optimize.EnabledByDefault)
}
}


// Functionality common to Module and Import
type embeddableInModuleAndImport struct {
}

// Module/Import's DepIsInSameApex(...) delegates to this method.
//
// This cannot implement DepIsInSameApex(...) directly as that leads to ambiguity with
// the one provided by ApexModuleBase.
func (e *embeddableInModuleAndImport) depIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
	// dependencies other than the static linkage are all considered crossing APEX boundary
	if staticLibTag == ctx.OtherModuleDependencyTag(dep) {
		return true
	}
	return false
}

// Module contains the properties and members used by all java module types
// Module contains the properties and members used by all java module types
type Module struct {
type Module struct {
	android.ModuleBase
	android.ModuleBase
@@ -361,6 +377,9 @@ type Module struct {
	android.ApexModuleBase
	android.ApexModuleBase
	android.SdkBase
	android.SdkBase


	// Functionality common to Module and Import.
	embeddableInModuleAndImport

	properties       CompilerProperties
	properties       CompilerProperties
	protoProperties  android.ProtoProperties
	protoProperties  android.ProtoProperties
	deviceProperties CompilerDeviceProperties
	deviceProperties CompilerDeviceProperties
@@ -1765,11 +1784,7 @@ func (j *Module) hasCode(ctx android.ModuleContext) bool {
}
}


func (j *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
func (j *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
	// Dependencies other than the static linkage are all considered crossing APEX boundary
	return j.depIsInSameApex(ctx, dep)
	if staticLibTag == ctx.OtherModuleDependencyTag(dep) {
		return true
	}
	return false
}
}


func (j *Module) Stem() string {
func (j *Module) Stem() string {
@@ -2377,6 +2392,9 @@ type Import struct {
	prebuilt android.Prebuilt
	prebuilt android.Prebuilt
	android.SdkBase
	android.SdkBase


	// Functionality common to Module and Import.
	embeddableInModuleAndImport

	properties ImportProperties
	properties ImportProperties


	combinedClasspathFile android.Path
	combinedClasspathFile android.Path
@@ -2508,11 +2526,7 @@ func (j *Import) SrcJarArgs() ([]string, android.Paths) {
}
}


func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
	// dependencies other than the static linkage are all considered crossing APEX boundary
	return j.depIsInSameApex(ctx, dep)
	if staticLibTag == ctx.OtherModuleDependencyTag(dep) {
		return true
	}
	return false
}
}


// Add compile time check for interface implementation
// Add compile time check for interface implementation