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
diff --git a/sdk/update.go b/sdk/update.go
index 8b75da2..43ec926 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -130,7 +130,8 @@
// 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 @@
// 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 @@
type sdkMemberVariantDep struct {
memberType android.SdkMemberType
variant android.SdkAware
+ export bool
}
var _ android.SdkMember = (*sdkMember)(nil)