summaryrefslogtreecommitdiff
path: root/sdk/update.go
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/update.go')
-rw-r--r--sdk/update.go32
1 files changed, 25 insertions, 7 deletions
diff --git a/sdk/update.go b/sdk/update.go
index b8d73c63f..25d50d217 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -323,19 +323,37 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro
// Add properties common to all os types.
s.addMemberPropertiesToPropertySet(builder, snapshotModule, commonDynamicMemberProperties)
+ // Optimize other per-variant properties, besides the dynamic member lists.
+ type variantProperties struct {
+ Compile_multilib string `android:"arch_variant"`
+ }
+ var variantPropertiesContainers []propertiesContainer
+ variantToProperties := make(map[*sdk]*variantProperties)
+ for _, sdkVariant := range sdkVariants {
+ props := &variantProperties{
+ Compile_multilib: sdkVariant.multilibUsages.String(),
+ }
+ variantPropertiesContainers = append(variantPropertiesContainers, &dynamicMemberPropertiesContainer{sdkVariant, props})
+ variantToProperties[sdkVariant] = props
+ }
+ commonVariantProperties := variantProperties{}
+ extractor = newCommonValueExtractor(commonVariantProperties)
+ extractCommonProperties(ctx, extractor, &commonVariantProperties, variantPropertiesContainers)
+ if commonVariantProperties.Compile_multilib != "" && commonVariantProperties.Compile_multilib != "both" {
+ // Compile_multilib defaults to both so only needs to be set when it's
+ // specified and not both.
+ snapshotModule.AddProperty("compile_multilib", commonVariantProperties.Compile_multilib)
+ }
+
// Iterate over the os types in a fixed order.
targetPropertySet := snapshotModule.AddPropertySet("target")
for _, osType := range s.getPossibleOsTypes() {
if sdkVariant, ok := osTypeToMemberProperties[osType]; ok {
osPropertySet := targetPropertySet.AddPropertySet(sdkVariant.Target().Os.Name)
- // Compile_multilib defaults to both and must always be set to both on the
- // device and so only needs to be set when targeted at the host and is neither
- // unspecified or both.
- multilib := sdkVariant.multilibUsages
- if (osType.Class == android.Host || osType.Class == android.HostCross) &&
- multilib != multilibNone && multilib != multilibBoth {
- osPropertySet.AddProperty("compile_multilib", multilib.String())
+ variantProps := variantToProperties[sdkVariant]
+ if variantProps.Compile_multilib != "" && variantProps.Compile_multilib != "both" {
+ osPropertySet.AddProperty("compile_multilib", variantProps.Compile_multilib)
}
s.addMemberPropertiesToPropertySet(builder, osPropertySet, sdkVariant.dynamicMemberTypeListProperties)