Rename collectTransitiveHeaderJars and friends to mention R8
collectTransitiveHeaderJarsForR8 visits direct dependencies and collects all transitive libs and static_libs header jars. The semantics of the collected jars are odd (it collects combined jars that contain the static libs, but also the static libs, and it collects transitive libs dependencies of static_libs), so these are only used to expand the --library arguments to R8. Rename the method and all the fields it uses with a "ForR8" suffix to avoid confusion when more transitive header jar collection is added to support transitive classpaths. Bug: 308016794 Test: all soong tests pass Change-Id: I291a86fbbc2e2f088598fb309d1b992080d60941
This commit is contained in:
@@ -993,7 +993,7 @@ type AARImport struct {
|
||||
// Functionality common to Module and Import.
|
||||
embeddableInModuleAndImport
|
||||
|
||||
providesTransitiveHeaderJars
|
||||
providesTransitiveHeaderJarsForR8
|
||||
|
||||
properties AARImportProperties
|
||||
|
||||
@@ -1290,7 +1290,7 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
android.WriteFileRule(ctx, transitiveAaptResourcePackagesFile, strings.Join(transitiveAaptResourcePackages, "\n"))
|
||||
a.transitiveAaptResourcePackagesFile = transitiveAaptResourcePackagesFile
|
||||
|
||||
a.collectTransitiveHeaderJars(ctx)
|
||||
a.collectTransitiveHeaderJarsForR8(ctx)
|
||||
|
||||
a.classLoaderContexts = a.usesLibrary.classLoaderContextForUsesLibDeps(ctx)
|
||||
|
||||
@@ -1360,8 +1360,8 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
|
||||
HeaderJars: android.PathsIfNonNil(a.headerJarFile),
|
||||
ResourceJars: android.PathsIfNonNil(resourceJarFile),
|
||||
TransitiveLibsHeaderJars: a.transitiveLibsHeaderJars,
|
||||
TransitiveStaticLibsHeaderJars: a.transitiveStaticLibsHeaderJars,
|
||||
TransitiveLibsHeaderJarsForR8: a.transitiveLibsHeaderJarsForR8,
|
||||
TransitiveStaticLibsHeaderJarsForR8: a.transitiveStaticLibsHeaderJarsForR8,
|
||||
ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationAndResourcesJarFile),
|
||||
ImplementationJars: android.PathsIfNonNil(a.implementationJarFile),
|
||||
StubsLinkType: Implementation,
|
||||
|
42
java/base.go
42
java/base.go
@@ -1276,8 +1276,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
|
||||
android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
|
||||
HeaderJars: android.PathsIfNonNil(j.headerJarFile),
|
||||
TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars,
|
||||
TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars,
|
||||
TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8,
|
||||
TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8,
|
||||
AidlIncludeDirs: j.exportAidlIncludeDirs,
|
||||
ExportedPlugins: j.exportedPluginJars,
|
||||
ExportedPluginClasses: j.exportedPluginClasses,
|
||||
@@ -1793,8 +1793,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
|
||||
android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
|
||||
HeaderJars: android.PathsIfNonNil(j.headerJarFile),
|
||||
RepackagedHeaderJars: android.PathsIfNonNil(j.repackagedHeaderJarFile),
|
||||
TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars,
|
||||
TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars,
|
||||
TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8,
|
||||
TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8,
|
||||
ImplementationAndResourcesJars: android.PathsIfNonNil(j.implementationAndResourcesJar),
|
||||
ImplementationJars: android.PathsIfNonNil(j.implementationJarFile),
|
||||
ResourceJars: android.PathsIfNonNil(j.resourceJar),
|
||||
@@ -1974,22 +1974,18 @@ func (j *Module) instrument(ctx android.ModuleContext, flags javaBuilderFlags,
|
||||
return instrumentedJar
|
||||
}
|
||||
|
||||
type providesTransitiveHeaderJars struct {
|
||||
type providesTransitiveHeaderJarsForR8 struct {
|
||||
// set of header jars for all transitive libs deps
|
||||
transitiveLibsHeaderJars *android.DepSet[android.Path]
|
||||
transitiveLibsHeaderJarsForR8 *android.DepSet[android.Path]
|
||||
// set of header jars for all transitive static libs deps
|
||||
transitiveStaticLibsHeaderJars *android.DepSet[android.Path]
|
||||
transitiveStaticLibsHeaderJarsForR8 *android.DepSet[android.Path]
|
||||
}
|
||||
|
||||
func (j *providesTransitiveHeaderJars) TransitiveLibsHeaderJars() *android.DepSet[android.Path] {
|
||||
return j.transitiveLibsHeaderJars
|
||||
}
|
||||
|
||||
func (j *providesTransitiveHeaderJars) TransitiveStaticLibsHeaderJars() *android.DepSet[android.Path] {
|
||||
return j.transitiveStaticLibsHeaderJars
|
||||
}
|
||||
|
||||
func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.ModuleContext) {
|
||||
// collectTransitiveHeaderJarsForR8 visits direct dependencies and collects all transitive libs and static_libs
|
||||
// header jars. The semantics of the collected jars are odd (it collects combined jars that contain the static
|
||||
// libs, but also the static libs, and it collects transitive libs dependencies of static_libs), so these
|
||||
// are only used to expand the --lib arguments to R8.
|
||||
func (j *providesTransitiveHeaderJarsForR8) collectTransitiveHeaderJarsForR8(ctx android.ModuleContext) {
|
||||
directLibs := android.Paths{}
|
||||
directStaticLibs := android.Paths{}
|
||||
transitiveLibs := []*android.DepSet[android.Path]{}
|
||||
@@ -2012,16 +2008,16 @@ func (j *providesTransitiveHeaderJars) collectTransitiveHeaderJars(ctx android.M
|
||||
return
|
||||
}
|
||||
|
||||
if dep.TransitiveLibsHeaderJars != nil {
|
||||
transitiveLibs = append(transitiveLibs, dep.TransitiveLibsHeaderJars)
|
||||
if dep.TransitiveLibsHeaderJarsForR8 != nil {
|
||||
transitiveLibs = append(transitiveLibs, dep.TransitiveLibsHeaderJarsForR8)
|
||||
}
|
||||
if dep.TransitiveStaticLibsHeaderJars != nil {
|
||||
transitiveStaticLibs = append(transitiveStaticLibs, dep.TransitiveStaticLibsHeaderJars)
|
||||
if dep.TransitiveStaticLibsHeaderJarsForR8 != nil {
|
||||
transitiveStaticLibs = append(transitiveStaticLibs, dep.TransitiveStaticLibsHeaderJarsForR8)
|
||||
}
|
||||
}
|
||||
})
|
||||
j.transitiveLibsHeaderJars = android.NewDepSet(android.POSTORDER, directLibs, transitiveLibs)
|
||||
j.transitiveStaticLibsHeaderJars = android.NewDepSet(android.POSTORDER, directStaticLibs, transitiveStaticLibs)
|
||||
j.transitiveLibsHeaderJarsForR8 = android.NewDepSet(android.POSTORDER, directLibs, transitiveLibs)
|
||||
j.transitiveStaticLibsHeaderJarsForR8 = android.NewDepSet(android.POSTORDER, directStaticLibs, transitiveStaticLibs)
|
||||
}
|
||||
|
||||
func (j *Module) HeaderJars() android.Paths {
|
||||
@@ -2287,7 +2283,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||
|
||||
sdkLinkType, _ := j.getSdkLinkType(ctx, ctx.ModuleName())
|
||||
|
||||
j.collectTransitiveHeaderJars(ctx)
|
||||
j.collectTransitiveHeaderJarsForR8(ctx)
|
||||
ctx.VisitDirectDeps(func(module android.Module) {
|
||||
otherName := ctx.OtherModuleName(module)
|
||||
tag := ctx.OtherModuleDependencyTag(module)
|
||||
|
10
java/dex.go
10
java/dex.go
@@ -108,7 +108,7 @@ type dexer struct {
|
||||
resourcesInput android.OptionalPath
|
||||
resourcesOutput android.OptionalPath
|
||||
|
||||
providesTransitiveHeaderJars
|
||||
providesTransitiveHeaderJarsForR8
|
||||
}
|
||||
|
||||
func (d *dexer) effectiveOptimizeEnabled() bool {
|
||||
@@ -307,14 +307,14 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, dexParams *compileDexParams)
|
||||
r8Deps = append(r8Deps, flags.dexClasspath...)
|
||||
|
||||
transitiveStaticLibsLookupMap := map[android.Path]bool{}
|
||||
if d.transitiveStaticLibsHeaderJars != nil {
|
||||
for _, jar := range d.transitiveStaticLibsHeaderJars.ToList() {
|
||||
if d.transitiveStaticLibsHeaderJarsForR8 != nil {
|
||||
for _, jar := range d.transitiveStaticLibsHeaderJarsForR8.ToList() {
|
||||
transitiveStaticLibsLookupMap[jar] = true
|
||||
}
|
||||
}
|
||||
transitiveHeaderJars := android.Paths{}
|
||||
if d.transitiveLibsHeaderJars != nil {
|
||||
for _, jar := range d.transitiveLibsHeaderJars.ToList() {
|
||||
if d.transitiveLibsHeaderJarsForR8 != nil {
|
||||
for _, jar := range d.transitiveLibsHeaderJarsForR8.ToList() {
|
||||
if _, ok := transitiveStaticLibsLookupMap[jar]; ok {
|
||||
// don't include a lib if it is already packaged in the current JAR as a static lib
|
||||
continue
|
||||
|
10
java/java.go
10
java/java.go
@@ -259,10 +259,10 @@ type JavaInfo struct {
|
||||
RepackagedHeaderJars android.Paths
|
||||
|
||||
// set of header jars for all transitive libs deps
|
||||
TransitiveLibsHeaderJars *android.DepSet[android.Path]
|
||||
TransitiveLibsHeaderJarsForR8 *android.DepSet[android.Path]
|
||||
|
||||
// set of header jars for all transitive static libs deps
|
||||
TransitiveStaticLibsHeaderJars *android.DepSet[android.Path]
|
||||
TransitiveStaticLibsHeaderJarsForR8 *android.DepSet[android.Path]
|
||||
|
||||
// ImplementationAndResourceJars is a list of jars that contain the implementations of classes
|
||||
// in the module as well as any resources included in the module.
|
||||
@@ -2634,7 +2634,7 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
||||
var flags javaBuilderFlags
|
||||
|
||||
j.collectTransitiveHeaderJars(ctx)
|
||||
j.collectTransitiveHeaderJarsForR8(ctx)
|
||||
var staticJars android.Paths
|
||||
var staticResourceJars android.Paths
|
||||
var staticHeaderJars android.Paths
|
||||
@@ -2818,8 +2818,8 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
|
||||
android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{
|
||||
HeaderJars: android.PathsIfNonNil(j.combinedHeaderFile),
|
||||
TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars,
|
||||
TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars,
|
||||
TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8,
|
||||
TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8,
|
||||
ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedImplementationFile),
|
||||
ImplementationJars: android.PathsIfNonNil(implementationJarFile.WithoutRel()),
|
||||
ResourceJars: android.PathsIfNonNil(resourceJarFile),
|
||||
|
Reference in New Issue
Block a user