Merge changes I59b7a32a,Ida7bc75a
* changes: Only request image and version variations for device SDK dependencies Create os and arch variants for GoBinaryTool modules
This commit is contained in:
@@ -23,6 +23,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/google/blueprint"
|
"github.com/google/blueprint"
|
||||||
|
"github.com/google/blueprint/bootstrap"
|
||||||
"github.com/google/blueprint/proptools"
|
"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 module Module
|
||||||
var ok bool
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
base := module.base()
|
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() {
|
if !base.ArchSpecific() {
|
||||||
return
|
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,
|
// 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().
|
// 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 module Module
|
||||||
var ok bool
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
base := module.base()
|
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() {
|
if !base.ArchSpecific() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -903,7 +922,7 @@ func archMutator(mctx BottomUpMutatorContext) {
|
|||||||
modules := mctx.CreateVariations(targetNames...)
|
modules := mctx.CreateVariations(targetNames...)
|
||||||
for i, m := range modules {
|
for i, m := range modules {
|
||||||
addTargetProperties(m, targets[i], multiTargets, i == 0)
|
addTargetProperties(m, targets[i], multiTargets, i == 0)
|
||||||
m.(Module).base().setArchProperties(mctx)
|
m.base().setArchProperties(mctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -75,6 +75,7 @@ type registerMutatorsContext struct {
|
|||||||
type RegisterMutatorsContext interface {
|
type RegisterMutatorsContext interface {
|
||||||
TopDown(name string, m TopDownMutator) MutatorHandle
|
TopDown(name string, m TopDownMutator) MutatorHandle
|
||||||
BottomUp(name string, m BottomUpMutator) MutatorHandle
|
BottomUp(name string, m BottomUpMutator) MutatorHandle
|
||||||
|
BottomUpBlueprint(name string, m blueprint.BottomUpMutator) MutatorHandle
|
||||||
}
|
}
|
||||||
|
|
||||||
type RegisterMutatorFunc func(RegisterMutatorsContext)
|
type RegisterMutatorFunc func(RegisterMutatorsContext)
|
||||||
@@ -143,9 +144,9 @@ var preArch = []RegisterMutatorFunc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
func registerArchMutator(ctx RegisterMutatorsContext) {
|
func registerArchMutator(ctx RegisterMutatorsContext) {
|
||||||
ctx.BottomUp("os", osMutator).Parallel()
|
ctx.BottomUpBlueprint("os", osMutator).Parallel()
|
||||||
ctx.BottomUp("image", imageMutator).Parallel()
|
ctx.BottomUp("image", imageMutator).Parallel()
|
||||||
ctx.BottomUp("arch", archMutator).Parallel()
|
ctx.BottomUpBlueprint("arch", archMutator).Parallel()
|
||||||
}
|
}
|
||||||
|
|
||||||
var preDeps = []RegisterMutatorFunc{
|
var preDeps = []RegisterMutatorFunc{
|
||||||
@@ -225,16 +226,21 @@ type bottomUpMutatorContext struct {
|
|||||||
finalPhase bool
|
finalPhase bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func bottomUpMutatorContextFactory(ctx blueprint.BottomUpMutatorContext, a Module,
|
||||||
|
finalPhase bool) BottomUpMutatorContext {
|
||||||
|
|
||||||
|
return &bottomUpMutatorContext{
|
||||||
|
bp: ctx,
|
||||||
|
baseModuleContext: a.base().baseModuleContextFactory(ctx),
|
||||||
|
finalPhase: finalPhase,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) MutatorHandle {
|
func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) MutatorHandle {
|
||||||
finalPhase := x.finalPhase
|
finalPhase := x.finalPhase
|
||||||
f := func(ctx blueprint.BottomUpMutatorContext) {
|
f := func(ctx blueprint.BottomUpMutatorContext) {
|
||||||
if a, ok := ctx.Module().(Module); ok {
|
if a, ok := ctx.Module().(Module); ok {
|
||||||
actx := &bottomUpMutatorContext{
|
m(bottomUpMutatorContextFactory(ctx, a, finalPhase))
|
||||||
bp: ctx,
|
|
||||||
baseModuleContext: a.base().baseModuleContextFactory(ctx),
|
|
||||||
finalPhase: finalPhase,
|
|
||||||
}
|
|
||||||
m(actx)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mutator := &mutator{name: name, bottomUpMutator: f}
|
mutator := &mutator{name: name, bottomUpMutator: f}
|
||||||
@@ -242,6 +248,12 @@ func (x *registerMutatorsContext) BottomUp(name string, m BottomUpMutator) Mutat
|
|||||||
return mutator
|
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 {
|
func (x *registerMutatorsContext) TopDown(name string, m TopDownMutator) MutatorHandle {
|
||||||
f := func(ctx blueprint.TopDownMutatorContext) {
|
f := func(ctx blueprint.TopDownMutatorContext) {
|
||||||
if a, ok := ctx.Module().(Module); ok {
|
if a, ok := ctx.Module().(Module); ok {
|
||||||
|
38
apex/apex.go
38
apex/apex.go
@@ -1336,26 +1336,30 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext,
|
|||||||
// conflicting variations with this module. This is required since
|
// conflicting variations with this module. This is required since
|
||||||
// arch variant of an APEX bundle is 'common' but it is 'arm' or 'arm64'
|
// arch variant of an APEX bundle is 'common' but it is 'arm' or 'arm64'
|
||||||
// for native shared libs.
|
// 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{
|
binVariations := target.Variations()
|
||||||
{Mutator: "image", Variation: imageVariation},
|
libVariations := append(target.Variations(),
|
||||||
{Mutator: "link", Variation: "shared"},
|
blueprint.Variation{Mutator: "link", Variation: "shared"})
|
||||||
{Mutator: "version", Variation: ""}, // "" is the non-stub variant
|
testVariations := append(target.Variations(),
|
||||||
}...), jniLibTag, nativeModules.Jni_libs...)
|
blueprint.Variation{Mutator: "test_per_src", Variation: ""}) // "" is the all-tests variant
|
||||||
|
|
||||||
ctx.AddFarVariationDependencies(append(target.Variations(),
|
if ctx.Device() {
|
||||||
blueprint.Variation{Mutator: "image", Variation: imageVariation}),
|
binVariations = append(binVariations,
|
||||||
executableTag, nativeModules.Binaries...)
|
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{
|
ctx.AddFarVariationDependencies(libVariations, sharedLibTag, nativeModules.Native_shared_libs...)
|
||||||
{Mutator: "image", Variation: imageVariation},
|
|
||||||
{Mutator: "test_per_src", Variation: ""}, // "" is the all-tests variant
|
ctx.AddFarVariationDependencies(libVariations, jniLibTag, nativeModules.Jni_libs...)
|
||||||
}...), testTag, nativeModules.Tests...)
|
|
||||||
|
ctx.AddFarVariationDependencies(binVariations, executableTag, nativeModules.Binaries...)
|
||||||
|
|
||||||
|
ctx.AddFarVariationDependencies(testVariations, testTag, nativeModules.Tests...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
|
func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
|
||||||
|
@@ -46,9 +46,13 @@ func (mt *binarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorConte
|
|||||||
if version == "" {
|
if version == "" {
|
||||||
version = LatestStubsVersionFor(mctx.Config(), name)
|
version = LatestStubsVersionFor(mctx.Config(), name)
|
||||||
}
|
}
|
||||||
mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
|
variations := target.Variations()
|
||||||
{Mutator: "version", Variation: version},
|
if mctx.Device() {
|
||||||
}...), dependencyTag, name)
|
variations = append(variations,
|
||||||
|
blueprint.Variation{Mutator: "image", Variation: android.CoreVariation},
|
||||||
|
blueprint.Variation{Mutator: "version", Variation: version})
|
||||||
|
}
|
||||||
|
mctx.AddFarVariationDependencies(variations, dependencyTag, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -82,18 +82,19 @@ func (mt *librarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorCont
|
|||||||
if version == "" {
|
if version == "" {
|
||||||
version = LatestStubsVersionFor(mctx.Config(), name)
|
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 {
|
if mt.linkTypes == nil {
|
||||||
mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
|
mctx.AddFarVariationDependencies(variations, dependencyTag, name)
|
||||||
{Mutator: "image", Variation: android.CoreVariation},
|
|
||||||
{Mutator: "version", Variation: version},
|
|
||||||
}...), dependencyTag, name)
|
|
||||||
} else {
|
} else {
|
||||||
for _, linkType := range mt.linkTypes {
|
for _, linkType := range mt.linkTypes {
|
||||||
mctx.AddFarVariationDependencies(append(target.Variations(), []blueprint.Variation{
|
libVariations := append(variations,
|
||||||
{Mutator: "image", Variation: android.CoreVariation},
|
blueprint.Variation{Mutator: "link", Variation: linkType})
|
||||||
{Mutator: "link", Variation: linkType},
|
mctx.AddFarVariationDependencies(libVariations, dependencyTag, name)
|
||||||
{Mutator: "version", Variation: version},
|
|
||||||
}...), dependencyTag, name)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1011,10 +1011,12 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
|
|
||||||
// static executable gets static runtime libs
|
// static executable gets static runtime libs
|
||||||
depTag := libraryDependencyTag{Kind: staticLibraryDependency}
|
depTag := libraryDependencyTag{Kind: staticLibraryDependency}
|
||||||
mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
|
variations := append(mctx.Target().Variations(),
|
||||||
{Mutator: "link", Variation: "static"},
|
blueprint.Variation{Mutator: "link", Variation: "static"})
|
||||||
c.ImageVariation(),
|
if c.Device() {
|
||||||
}...), depTag, deps...)
|
variations = append(variations, c.ImageVariation())
|
||||||
|
}
|
||||||
|
mctx.AddFarVariationDependencies(variations, depTag, deps...)
|
||||||
} else if !c.static() && !c.header() {
|
} else if !c.static() && !c.header() {
|
||||||
// If we're using snapshots and in vendor, redirect to snapshot whenever possible
|
// If we're using snapshots and in vendor, redirect to snapshot whenever possible
|
||||||
if c.VndkVersion() == mctx.DeviceConfig().VndkVersion() {
|
if c.VndkVersion() == mctx.DeviceConfig().VndkVersion() {
|
||||||
@@ -1026,10 +1028,12 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
|
|||||||
|
|
||||||
// dynamic executable and shared libs get shared runtime libs
|
// dynamic executable and shared libs get shared runtime libs
|
||||||
depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: earlyLibraryDependency}
|
depTag := libraryDependencyTag{Kind: sharedLibraryDependency, Order: earlyLibraryDependency}
|
||||||
mctx.AddFarVariationDependencies(append(mctx.Target().Variations(), []blueprint.Variation{
|
variations := append(mctx.Target().Variations(),
|
||||||
{Mutator: "link", Variation: "shared"},
|
blueprint.Variation{Mutator: "link", Variation: "shared"})
|
||||||
c.ImageVariation(),
|
if c.Device() {
|
||||||
}...), depTag, runtimeLibrary)
|
variations = append(variations, c.ImageVariation())
|
||||||
|
}
|
||||||
|
mctx.AddFarVariationDependencies(variations, depTag, runtimeLibrary)
|
||||||
}
|
}
|
||||||
// static lib does not have dependency to the runtime library. The
|
// static lib does not have dependency to the runtime library. The
|
||||||
// dependency will be added to the executables or shared libs using
|
// dependency will be added to the executables or shared libs using
|
||||||
|
Reference in New Issue
Block a user