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

Commit 0329f239 authored by Colin Cross's avatar Colin Cross Committed by Gerrit Code Review
Browse files

Merge changes I59b7a32a,Ida7bc75a

* changes:
  Only request image and version variations for device SDK dependencies
  Create os and arch variants for GoBinaryTool modules
parents 3652018b 42507337
Loading
Loading
Loading
Loading
+24 −5
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import (
	"strings"

	"github.com/google/blueprint"
	"github.com/google/blueprint/bootstrap"
	"github.com/google/blueprint/proptools"
)

@@ -689,15 +690,24 @@ func (target Target) Variations() []blueprint.Variation {
	}
}

func osMutator(mctx BottomUpMutatorContext) {
func osMutator(bpctx blueprint.BottomUpMutatorContext) {
	var module Module
	var ok bool
	if module, ok = mctx.Module().(Module); !ok {
	if module, ok = bpctx.Module().(Module); !ok {
		if _, ok := bpctx.Module().(bootstrap.GoBinaryTool); ok {
			// Go tools are always build OS tools.
			bpctx.CreateVariations(bpctx.Config().(Config).BuildOSTarget.OsVariation())
		}
		return
	}

	base := module.base()

	// GoBinaryTool support above requires this mutator to be a blueprint.BottomUpMutatorContext
	// because android.BottomUpMutatorContext filters out non-Soong modules.  Now that we've
	// handled them, create a normal android.BottomUpMutatorContext.
	mctx := bottomUpMutatorContextFactory(bpctx, module, false)

	if !base.ArchSpecific() {
		return
	}
@@ -819,15 +829,24 @@ func GetOsSpecificVariantsOfCommonOSVariant(mctx BaseModuleContext) []Module {
//
// Modules can be initialized with InitAndroidMultiTargetsArchModule, in which case they will be split by OsClass,
// but will have a common Target that is expected to handle all other selected Targets via ctx.MultiTargets().
func archMutator(mctx BottomUpMutatorContext) {
func archMutator(bpctx blueprint.BottomUpMutatorContext) {
	var module Module
	var ok bool
	if module, ok = mctx.Module().(Module); !ok {
	if module, ok = bpctx.Module().(Module); !ok {
		if _, ok := bpctx.Module().(bootstrap.GoBinaryTool); ok {
			// Go tools are always build OS tools.
			bpctx.CreateVariations(bpctx.Config().(Config).BuildOSTarget.ArchVariation())
		}
		return
	}

	base := module.base()

	// GoBinaryTool support above requires this mutator to be a blueprint.BottomUpMutatorContext
	// because android.BottomUpMutatorContext filters out non-Soong modules.  Now that we've
	// handled them, create a normal android.BottomUpMutatorContext.
	mctx := bottomUpMutatorContextFactory(bpctx, module, false)

	if !base.ArchSpecific() {
		return
	}
@@ -903,7 +922,7 @@ func archMutator(mctx BottomUpMutatorContext) {
	modules := mctx.CreateVariations(targetNames...)
	for i, m := range modules {
		addTargetProperties(m, targets[i], multiTargets, i == 0)
		m.(Module).base().setArchProperties(mctx)
		m.base().setArchProperties(mctx)
	}
}

+20 −8
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ type registerMutatorsContext struct {
type RegisterMutatorsContext interface {
	TopDown(name string, m TopDownMutator) MutatorHandle
	BottomUp(name string, m BottomUpMutator) MutatorHandle
	BottomUpBlueprint(name string, m blueprint.BottomUpMutator) MutatorHandle
}

type RegisterMutatorFunc func(RegisterMutatorsContext)
@@ -143,9 +144,9 @@ var preArch = []RegisterMutatorFunc{
}

func registerArchMutator(ctx RegisterMutatorsContext) {
	ctx.BottomUp("os", osMutator).Parallel()
	ctx.BottomUpBlueprint("os", osMutator).Parallel()
	ctx.BottomUp("image", imageMutator).Parallel()
	ctx.BottomUp("arch", archMutator).Parallel()
	ctx.BottomUpBlueprint("arch", archMutator).Parallel()
}

var preDeps = []RegisterMutatorFunc{
@@ -225,16 +226,21 @@ type bottomUpMutatorContext struct {
	finalPhase bool
}

func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) MutatorHandle {
	finalPhase := x.finalPhase
	f := func(ctx blueprint.BottomUpMutatorContext) {
		if a, ok := ctx.Module().(Module); ok {
			actx := &bottomUpMutatorContext{
func bottomUpMutatorContextFactory(ctx blueprint.BottomUpMutatorContext, a Module,
	finalPhase bool) BottomUpMutatorContext {

	return &bottomUpMutatorContext{
		bp:                ctx,
		baseModuleContext: a.base().baseModuleContextFactory(ctx),
		finalPhase:        finalPhase,
	}
			m(actx)
}

func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) MutatorHandle {
	finalPhase := x.finalPhase
	f := func(ctx blueprint.BottomUpMutatorContext) {
		if a, ok := ctx.Module().(Module); ok {
			m(bottomUpMutatorContextFactory(ctx, a, finalPhase))
		}
	}
	mutator := &mutator{name: name, bottomUpMutator: f}
@@ -242,6 +248,12 @@ func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) Mutat
	return mutator
}

func (x *registerMutatorsContext) BottomUpBlueprint(name string, m blueprint.BottomUpMutator) MutatorHandle {
	mutator := &mutator{name: name, bottomUpMutator: m}
	x.mutators = append(x.mutators, mutator)
	return mutator
}

func (x *registerMutatorsContext) TopDown(name string, m TopDownMutator) MutatorHandle {
	f := func(ctx blueprint.TopDownMutatorContext) {
		if a, ok := ctx.Module().(Module); ok {
+24 −20
Original line number Diff line number Diff line
@@ -1336,26 +1336,30 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext,
	// conflicting variations with this module. This is required since
	// arch variant of an APEX bundle is 'common' but it is 'arm' or 'arm64'
	// for native shared libs.
	ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
		{Mutator: "image", Variation: imageVariation},
		{Mutator: "link", Variation: "shared"},
		{Mutator: "version", Variation: ""}, // "" is the non-stub variant
	}...), sharedLibTag, nativeModules.Native_shared_libs...)

	ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
		{Mutator: "image", Variation: imageVariation},
		{Mutator: "link", Variation: "shared"},
		{Mutator: "version", Variation: ""}, // "" is the non-stub variant
	}...), jniLibTag, nativeModules.Jni_libs...)
	binVariations := target.Variations()
	libVariations := append(target.Variations(),
		blueprint.Variation{Mutator: "link", Variation: "shared"})
	testVariations := append(target.Variations(),
		blueprint.Variation{Mutator: "test_per_src", Variation: ""}) // "" is the all-tests variant

	ctx.AddFarVariationDependencies(append(target.Variations(),
		blueprint.Variation{Mutator: "image", Variation: imageVariation}),
		executableTag, nativeModules.Binaries...)
	if ctx.Device() {
		binVariations = append(binVariations,
			blueprint.Variation{Mutator: "image", Variation: imageVariation})
		libVariations = append(libVariations,
			blueprint.Variation{Mutator: "image", Variation: imageVariation},
			blueprint.Variation{Mutator: "version", Variation: ""}) // "" is the non-stub variant
		testVariations = append(testVariations,
			blueprint.Variation{Mutator: "image", Variation: imageVariation})
	}

	ctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
		{Mutator: "image", Variation: imageVariation},
		{Mutator: "test_per_src", Variation: ""}, // "" is the all-tests variant
	}...), testTag, nativeModules.Tests...)
	ctx.AddFarVariationDependencies(libVariations, sharedLibTag, nativeModules.Native_shared_libs...)

	ctx.AddFarVariationDependencies(libVariations, jniLibTag, nativeModules.Jni_libs...)

	ctx.AddFarVariationDependencies(binVariations, executableTag, nativeModules.Binaries...)

	ctx.AddFarVariationDependencies(testVariations, testTag, nativeModules.Tests...)
}

func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
+7 −3
Original line number Diff line number Diff line
@@ -46,9 +46,13 @@ func (mt *binarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorConte
			if version == "" {
				version = LatestStubsVersionFor(mctx.Config(), name)
			}
			mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
				{Mutator: "version", Variation: version},
			}...), dependencyTag, name)
			variations := target.Variations()
			if mctx.Device() {
				variations = append(variations,
					blueprint.Variation{Mutator: "image", Variation: android.CoreVariation},
					blueprint.Variation{Mutator: "version", Variation: version})
			}
			mctx.AddFarVariationDependencies(variations, dependencyTag, name)
		}
	}
}
+10 −9
Original line number Diff line number Diff line
@@ -82,18 +82,19 @@ func (mt *librarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorCont
			if version == "" {
				version = LatestStubsVersionFor(mctx.Config(), name)
			}
			variations := target.Variations()
			if mctx.Device() {
				variations = append(variations,
					blueprint.Variation{Mutator: "image", Variation: android.CoreVariation},
					blueprint.Variation{Mutator: "version", Variation: version})
			}
			if mt.linkTypes == nil {
				mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
					{Mutator: "image", Variation: android.CoreVariation},
					{Mutator: "version", Variation: version},
				}...), dependencyTag, name)
				mctx.AddFarVariationDependencies(variations, dependencyTag, name)
			} else {
				for _, linkType := range mt.linkTypes {
					mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
						{Mutator: "image", Variation: android.CoreVariation},
						{Mutator: "link", Variation: linkType},
						{Mutator: "version", Variation: version},
					}...), dependencyTag, name)
					libVariations := append(variations,
						blueprint.Variation{Mutator: "link", Variation: linkType})
					mctx.AddFarVariationDependencies(libVariations, dependencyTag, name)
				}
			}
		}
Loading