diff --git a/java/aar.go b/java/aar.go index db2ea66b4..42866f8b6 100644 --- a/java/aar.go +++ b/java/aar.go @@ -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) @@ -1358,13 +1358,13 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.CheckbuildFile(a.implementationJarFile) android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ - HeaderJars: android.PathsIfNonNil(a.headerJarFile), - ResourceJars: android.PathsIfNonNil(resourceJarFile), - TransitiveLibsHeaderJars: a.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: a.transitiveStaticLibsHeaderJars, - ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationAndResourcesJarFile), - ImplementationJars: android.PathsIfNonNil(a.implementationJarFile), - StubsLinkType: Implementation, + HeaderJars: android.PathsIfNonNil(a.headerJarFile), + ResourceJars: android.PathsIfNonNil(resourceJarFile), + TransitiveLibsHeaderJarsForR8: a.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: a.transitiveStaticLibsHeaderJarsForR8, + ImplementationAndResourcesJars: android.PathsIfNonNil(a.implementationAndResourcesJarFile), + ImplementationJars: android.PathsIfNonNil(a.implementationJarFile), + StubsLinkType: Implementation, // TransitiveAconfigFiles: // TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts }) diff --git a/java/base.go b/java/base.go index d7c6fbdd3..b049b41f5 100644 --- a/java/base.go +++ b/java/base.go @@ -1288,8 +1288,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, @@ -1817,8 +1817,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), @@ -1998,22 +1998,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]{} @@ -2036,16 +2032,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 { @@ -2311,7 +2307,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) diff --git a/java/dex.go b/java/dex.go index 6c739a27f..7d42efc9c 100644 --- a/java/dex.go +++ b/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 diff --git a/java/java.go b/java/java.go index f8e9909bc..8cc108541 100644 --- a/java/java.go +++ b/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 @@ -2817,14 +2817,14 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { } android.SetProvider(ctx, JavaInfoProvider, &JavaInfo{ - HeaderJars: android.PathsIfNonNil(j.combinedHeaderFile), - TransitiveLibsHeaderJars: j.transitiveLibsHeaderJars, - TransitiveStaticLibsHeaderJars: j.transitiveStaticLibsHeaderJars, - ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedImplementationFile), - ImplementationJars: android.PathsIfNonNil(implementationJarFile.WithoutRel()), - ResourceJars: android.PathsIfNonNil(resourceJarFile), - AidlIncludeDirs: j.exportAidlIncludeDirs, - StubsLinkType: j.stubsLinkType, + HeaderJars: android.PathsIfNonNil(j.combinedHeaderFile), + TransitiveLibsHeaderJarsForR8: j.transitiveLibsHeaderJarsForR8, + TransitiveStaticLibsHeaderJarsForR8: j.transitiveStaticLibsHeaderJarsForR8, + ImplementationAndResourcesJars: android.PathsIfNonNil(j.combinedImplementationFile), + ImplementationJars: android.PathsIfNonNil(implementationJarFile.WithoutRel()), + ResourceJars: android.PathsIfNonNil(resourceJarFile), + AidlIncludeDirs: j.exportAidlIncludeDirs, + StubsLinkType: j.stubsLinkType, // TODO(b/289117800): LOCAL_ACONFIG_FILES for prebuilts })