Allow exporting of sdk members to be done per tag
Previously, every module added to an sdk directly through one of the SdkMemberType specific properties, e.g. java_libs, was exported and every module added automatically via a transitive dependencies was not exported. This change allows that behavior to be customized per tag. Bug: 186290299 Test: m art-module-sdk - verify that this change does not affect its contents. Change-Id: I563b5bcd823e61c23cdb706cfcbb13337963d550
This commit is contained in:
19
sdk/sdk.go
19
sdk/sdk.go
@@ -193,7 +193,8 @@ func createDynamicSdkMemberTypes(sdkMemberTypes []android.SdkMemberType) *dynami
|
||||
|
||||
memberType: memberType,
|
||||
|
||||
dependencyTag: android.DependencyTagForSdkMemberType(memberType),
|
||||
// Dependencies added directly from member properties are always exported.
|
||||
dependencyTag: android.DependencyTagForSdkMemberType(memberType, true),
|
||||
}
|
||||
|
||||
listProperties = append(listProperties, memberListProperty)
|
||||
@@ -255,22 +256,6 @@ func (s *sdk) memberListProperties() []*sdkMemberListProperty {
|
||||
return s.dynamicSdkMemberTypes.memberListProperties
|
||||
}
|
||||
|
||||
func (s *sdk) getExportedMembers() map[string]struct{} {
|
||||
// Collect all the exported members.
|
||||
exportedMembers := make(map[string]struct{})
|
||||
|
||||
for _, memberListProperty := range s.memberListProperties() {
|
||||
names := memberListProperty.getter(s.dynamicMemberTypeListProperties)
|
||||
|
||||
// Every member specified explicitly in the properties is exported by the sdk.
|
||||
for _, name := range names {
|
||||
exportedMembers[name] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
return exportedMembers
|
||||
}
|
||||
|
||||
func (s *sdk) snapshot() bool {
|
||||
return s.properties.Snapshot
|
||||
}
|
||||
|
@@ -130,7 +130,8 @@ func (s *sdk) collectMembers(ctx android.ModuleContext) {
|
||||
// Keep track of which multilib variants are used by the sdk.
|
||||
s.multilibUsages = s.multilibUsages.addArchType(child.Target().Arch.ArchType)
|
||||
|
||||
s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{memberType, child.(android.SdkAware)})
|
||||
export := memberTag.ExportMember()
|
||||
s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{memberType, child.(android.SdkAware), export})
|
||||
|
||||
// If the member type supports transitive sdk members then recurse down into
|
||||
// its dependencies, otherwise exit traversal.
|
||||
@@ -226,12 +227,12 @@ func (s *sdk) buildSnapshot(ctx android.ModuleContext, sdkVariants []*sdk) andro
|
||||
// Record the names of all the members, both explicitly specified and implicitly
|
||||
// included.
|
||||
for _, memberVariantDep := range sdkVariant.memberVariantDeps {
|
||||
allMembersByName[memberVariantDep.variant.Name()] = struct{}{}
|
||||
}
|
||||
name := memberVariantDep.variant.Name()
|
||||
allMembersByName[name] = struct{}{}
|
||||
|
||||
// Merge the exported member sets from all sdk variants.
|
||||
for key, _ := range sdkVariant.getExportedMembers() {
|
||||
exportedMembersByName[key] = struct{}{}
|
||||
if memberVariantDep.export {
|
||||
exportedMembersByName[name] = struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -944,6 +945,7 @@ func addSdkMemberPropertiesToSet(ctx *memberContext, memberProperties android.Sd
|
||||
type sdkMemberVariantDep struct {
|
||||
memberType android.SdkMemberType
|
||||
variant android.SdkAware
|
||||
export bool
|
||||
}
|
||||
|
||||
var _ android.SdkMember = (*sdkMember)(nil)
|
||||
|
Reference in New Issue
Block a user