Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13d8e82c authored by Colin Cross's avatar Colin Cross Committed by Gerrit Code Review
Browse files

Merge "Rename collectTransitiveHeaderJars and friends to mention R8" into main

parents b09e8ec2 9ffaf28f
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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,
+19 −23
Original line number Diff line number Diff line
@@ -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)
+5 −5
Original line number Diff line number Diff line
@@ -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
+11 −11
Original line number Diff line number Diff line
@@ -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),