Merge "Allow sdk snapshot to contain source module type" am: f08e7c444c
am: 5a0a87eb16
am: b212748ee6
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1702366 Change-Id: I05f85743062ac39549d9a730b93f30da0f467f34
This commit is contained in:
commit
a6b712cae4
|
@ -405,6 +405,10 @@ type SdkMemberType interface {
|
|||
// the module is not allowed in whichever sdk property it was added.
|
||||
IsInstance(module Module) bool
|
||||
|
||||
// UsesSourceModuleTypeInSnapshot returns true when the AddPrebuiltModule() method returns a
|
||||
// source module type.
|
||||
UsesSourceModuleTypeInSnapshot() bool
|
||||
|
||||
// Add a prebuilt module that the sdk will populate.
|
||||
//
|
||||
// The sdk module code generates the snapshot as follows:
|
||||
|
@ -451,6 +455,11 @@ type SdkMemberTypeBase struct {
|
|||
PropertyName string
|
||||
SupportsSdk bool
|
||||
HostOsDependent bool
|
||||
|
||||
// When set to true UseSourceModuleTypeInSnapshot indicates that the member type creates a source
|
||||
// module type in its SdkMemberType.AddPrebuiltModule() method. That prevents the sdk snapshot
|
||||
// code from automatically adding a prefer: true flag.
|
||||
UseSourceModuleTypeInSnapshot bool
|
||||
}
|
||||
|
||||
func (b *SdkMemberTypeBase) SdkPropertyName() string {
|
||||
|
@ -465,6 +474,10 @@ func (b *SdkMemberTypeBase) IsHostOsDependent() bool {
|
|||
return b.HostOsDependent
|
||||
}
|
||||
|
||||
func (b *SdkMemberTypeBase) UsesSourceModuleTypeInSnapshot() bool {
|
||||
return b.UseSourceModuleTypeInSnapshot
|
||||
}
|
||||
|
||||
// Encapsulates the information about registered SdkMemberTypes.
|
||||
type SdkMemberTypesRegistry struct {
|
||||
// The list of types sorted by property name.
|
||||
|
|
|
@ -1370,17 +1370,20 @@ func (s *sdk) createMemberSnapshot(ctx *memberContext, member *sdkMember, bpModu
|
|||
|
||||
memberType := member.memberType
|
||||
|
||||
// Set the prefer based on the environment variable. This is a temporary work around to allow a
|
||||
// snapshot to be created that sets prefer: true.
|
||||
// TODO(b/174997203): Remove once the ability to select the modules to prefer can be done
|
||||
// dynamically at build time not at snapshot generation time.
|
||||
prefer := ctx.sdkMemberContext.Config().IsEnvTrue("SOONG_SDK_SNAPSHOT_PREFER")
|
||||
// Do not add the prefer property if the member snapshot module is a source module type.
|
||||
if !memberType.UsesSourceModuleTypeInSnapshot() {
|
||||
// Set the prefer based on the environment variable. This is a temporary work around to allow a
|
||||
// snapshot to be created that sets prefer: true.
|
||||
// TODO(b/174997203): Remove once the ability to select the modules to prefer can be done
|
||||
// dynamically at build time not at snapshot generation time.
|
||||
prefer := ctx.sdkMemberContext.Config().IsEnvTrue("SOONG_SDK_SNAPSHOT_PREFER")
|
||||
|
||||
// Set prefer. Setting this to false is not strictly required as that is the default but it does
|
||||
// provide a convenient hook to post-process the generated Android.bp file, e.g. in tests to
|
||||
// check the behavior when a prebuilt is preferred. It also makes it explicit what the default
|
||||
// behavior is for the module.
|
||||
bpModule.insertAfter("name", "prefer", prefer)
|
||||
// Set prefer. Setting this to false is not strictly required as that is the default but it does
|
||||
// provide a convenient hook to post-process the generated Android.bp file, e.g. in tests to
|
||||
// check the behavior when a prebuilt is preferred. It also makes it explicit what the default
|
||||
// behavior is for the module.
|
||||
bpModule.insertAfter("name", "prefer", prefer)
|
||||
}
|
||||
|
||||
// Group the variants by os type.
|
||||
variantsByOsType := make(map[android.OsType][]android.Module)
|
||||
|
|
Loading…
Reference in New Issue