Loading android/paths.go +25 −0 Original line number Diff line number Diff line Loading @@ -1949,3 +1949,28 @@ type DataPath struct { // The install path of the data file, relative to the install root. RelativeInstallPath string } // PathsIfNonNil returns a Paths containing only the non-nil input arguments. func PathsIfNonNil(paths ...Path) Paths { if len(paths) == 0 { // Fast path for empty argument list return nil } else if len(paths) == 1 { // Fast path for a single argument if paths[0] != nil { return paths } else { return nil } } ret := make(Paths, 0, len(paths)) for _, path := range paths { if path != nil { ret = append(ret, path) } } if len(ret) == 0 { return nil } return ret } apex/apex_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -4364,7 +4364,7 @@ func TestPrebuiltExportDexImplementationJars(t *testing.T) { checkDexJarBuildPath := func(t *testing.T, ctx *android.TestContext, name string) { // Make sure the import has been given the correct path to the dex jar. p := ctx.ModuleForTests(name, "android_common_myapex").Module().(java.Dependency) p := ctx.ModuleForTests(name, "android_common_myapex").Module().(java.UsesLibraryDependency) dexJarBuildPath := p.DexJarBuildPath() if expected, actual := ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar", android.NormalizePathForTesting(dexJarBuildPath); actual != expected { t.Errorf("Incorrect DexJarBuildPath value '%s', expected '%s'", actual, expected) Loading java/aar.go +6 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import ( ) type AndroidLibraryDependency interface { Dependency ExportPackage() android.Path ExportedProguardFlagFiles() android.Paths ExportedRRODirs() []rroDir Loading Loading @@ -796,9 +795,13 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { aapt2Link(ctx, a.exportPackage, srcJar, proguardOptionsFile, rTxt, a.extraAaptPackagesFile, linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil) } var _ Dependency = (*AARImport)(nil) ctx.SetProvider(JavaInfoProvider, JavaInfo{ HeaderJars: android.PathsIfNonNil(a.classpathFile), ImplementationAndResourcesJars: android.PathsIfNonNil(a.classpathFile), ImplementationJars: android.PathsIfNonNil(a.classpathFile), }) } func (a *AARImport) HeaderJars() android.Paths { return android.Paths{a.classpathFile} Loading java/device_host_converter.go +18 −11 Original line number Diff line number Diff line Loading @@ -97,15 +97,15 @@ func (d *DeviceHostConverter) GenerateAndroidBuildActions(ctx android.ModuleCont } ctx.VisitDirectDepsWithTag(deviceHostConverterDepTag, func(m android.Module) { if dep, ok := m.(Dependency); ok { d.headerJars = append(d.headerJars, dep.HeaderJars()...) d.implementationJars = append(d.implementationJars, dep.ImplementationJars()...) d.implementationAndResourceJars = append(d.implementationAndResourceJars, dep.ImplementationAndResourcesJars()...) d.resourceJars = append(d.resourceJars, dep.ResourceJars()...) srcJarArgs, srcJarDeps := dep.SrcJarArgs() d.srcJarArgs = append(d.srcJarArgs, srcJarArgs...) d.srcJarDeps = append(d.srcJarDeps, srcJarDeps...) if ctx.OtherModuleHasProvider(m, JavaInfoProvider) { dep := ctx.OtherModuleProvider(m, JavaInfoProvider).(JavaInfo) d.headerJars = append(d.headerJars, dep.HeaderJars...) d.implementationJars = append(d.implementationJars, dep.ImplementationJars...) d.implementationAndResourceJars = append(d.implementationAndResourceJars, dep.ImplementationAndResourcesJars...) d.resourceJars = append(d.resourceJars, dep.ResourceJars...) d.srcJarArgs = append(d.srcJarArgs, dep.SrcJarArgs...) d.srcJarDeps = append(d.srcJarDeps, dep.SrcJarDeps...) } else { ctx.PropertyErrorf("libs", "module %q cannot be used as a dependency", ctx.OtherModuleName(m)) } Loading @@ -131,9 +131,16 @@ func (d *DeviceHostConverter) GenerateAndroidBuildActions(ctx android.ModuleCont d.combinedHeaderJar = d.headerJars[0] } } ctx.SetProvider(JavaInfoProvider, JavaInfo{ HeaderJars: d.headerJars, ImplementationAndResourcesJars: d.implementationAndResourceJars, ImplementationJars: d.implementationJars, ResourceJars: d.resourceJars, SrcJarArgs: d.srcJarArgs, SrcJarDeps: d.srcJarDeps, }) var _ Dependency = (*DeviceHostConverter)(nil) } func (d *DeviceHostConverter) HeaderJars() android.Paths { return d.headerJars Loading java/dex.go +3 −2 Original line number Diff line number Diff line Loading @@ -204,8 +204,9 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl // - prevent ProGuard stripping subclass in the support library that extends class added in the higher SDK version. // See b/20667396 var proguardRaiseDeps classpath ctx.VisitDirectDepsWithTag(proguardRaiseTag, func(dep android.Module) { proguardRaiseDeps = append(proguardRaiseDeps, dep.(Dependency).HeaderJars()...) ctx.VisitDirectDepsWithTag(proguardRaiseTag, func(m android.Module) { dep := ctx.OtherModuleProvider(m, JavaInfoProvider).(JavaInfo) proguardRaiseDeps = append(proguardRaiseDeps, dep.HeaderJars...) }) r8Flags = append(r8Flags, proguardRaiseDeps.FormJavaClassPath("-libraryjars")) Loading Loading
android/paths.go +25 −0 Original line number Diff line number Diff line Loading @@ -1949,3 +1949,28 @@ type DataPath struct { // The install path of the data file, relative to the install root. RelativeInstallPath string } // PathsIfNonNil returns a Paths containing only the non-nil input arguments. func PathsIfNonNil(paths ...Path) Paths { if len(paths) == 0 { // Fast path for empty argument list return nil } else if len(paths) == 1 { // Fast path for a single argument if paths[0] != nil { return paths } else { return nil } } ret := make(Paths, 0, len(paths)) for _, path := range paths { if path != nil { ret = append(ret, path) } } if len(ret) == 0 { return nil } return ret }
apex/apex_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -4364,7 +4364,7 @@ func TestPrebuiltExportDexImplementationJars(t *testing.T) { checkDexJarBuildPath := func(t *testing.T, ctx *android.TestContext, name string) { // Make sure the import has been given the correct path to the dex jar. p := ctx.ModuleForTests(name, "android_common_myapex").Module().(java.Dependency) p := ctx.ModuleForTests(name, "android_common_myapex").Module().(java.UsesLibraryDependency) dexJarBuildPath := p.DexJarBuildPath() if expected, actual := ".intermediates/myapex.deapexer/android_common/deapexer/javalib/libfoo.jar", android.NormalizePathForTesting(dexJarBuildPath); actual != expected { t.Errorf("Incorrect DexJarBuildPath value '%s', expected '%s'", actual, expected) Loading
java/aar.go +6 −3 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import ( ) type AndroidLibraryDependency interface { Dependency ExportPackage() android.Path ExportedProguardFlagFiles() android.Paths ExportedRRODirs() []rroDir Loading Loading @@ -796,9 +795,13 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { aapt2Link(ctx, a.exportPackage, srcJar, proguardOptionsFile, rTxt, a.extraAaptPackagesFile, linkFlags, linkDeps, nil, overlayRes, transitiveAssets, nil) } var _ Dependency = (*AARImport)(nil) ctx.SetProvider(JavaInfoProvider, JavaInfo{ HeaderJars: android.PathsIfNonNil(a.classpathFile), ImplementationAndResourcesJars: android.PathsIfNonNil(a.classpathFile), ImplementationJars: android.PathsIfNonNil(a.classpathFile), }) } func (a *AARImport) HeaderJars() android.Paths { return android.Paths{a.classpathFile} Loading
java/device_host_converter.go +18 −11 Original line number Diff line number Diff line Loading @@ -97,15 +97,15 @@ func (d *DeviceHostConverter) GenerateAndroidBuildActions(ctx android.ModuleCont } ctx.VisitDirectDepsWithTag(deviceHostConverterDepTag, func(m android.Module) { if dep, ok := m.(Dependency); ok { d.headerJars = append(d.headerJars, dep.HeaderJars()...) d.implementationJars = append(d.implementationJars, dep.ImplementationJars()...) d.implementationAndResourceJars = append(d.implementationAndResourceJars, dep.ImplementationAndResourcesJars()...) d.resourceJars = append(d.resourceJars, dep.ResourceJars()...) srcJarArgs, srcJarDeps := dep.SrcJarArgs() d.srcJarArgs = append(d.srcJarArgs, srcJarArgs...) d.srcJarDeps = append(d.srcJarDeps, srcJarDeps...) if ctx.OtherModuleHasProvider(m, JavaInfoProvider) { dep := ctx.OtherModuleProvider(m, JavaInfoProvider).(JavaInfo) d.headerJars = append(d.headerJars, dep.HeaderJars...) d.implementationJars = append(d.implementationJars, dep.ImplementationJars...) d.implementationAndResourceJars = append(d.implementationAndResourceJars, dep.ImplementationAndResourcesJars...) d.resourceJars = append(d.resourceJars, dep.ResourceJars...) d.srcJarArgs = append(d.srcJarArgs, dep.SrcJarArgs...) d.srcJarDeps = append(d.srcJarDeps, dep.SrcJarDeps...) } else { ctx.PropertyErrorf("libs", "module %q cannot be used as a dependency", ctx.OtherModuleName(m)) } Loading @@ -131,9 +131,16 @@ func (d *DeviceHostConverter) GenerateAndroidBuildActions(ctx android.ModuleCont d.combinedHeaderJar = d.headerJars[0] } } ctx.SetProvider(JavaInfoProvider, JavaInfo{ HeaderJars: d.headerJars, ImplementationAndResourcesJars: d.implementationAndResourceJars, ImplementationJars: d.implementationJars, ResourceJars: d.resourceJars, SrcJarArgs: d.srcJarArgs, SrcJarDeps: d.srcJarDeps, }) var _ Dependency = (*DeviceHostConverter)(nil) } func (d *DeviceHostConverter) HeaderJars() android.Paths { return d.headerJars Loading
java/dex.go +3 −2 Original line number Diff line number Diff line Loading @@ -204,8 +204,9 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl // - prevent ProGuard stripping subclass in the support library that extends class added in the higher SDK version. // See b/20667396 var proguardRaiseDeps classpath ctx.VisitDirectDepsWithTag(proguardRaiseTag, func(dep android.Module) { proguardRaiseDeps = append(proguardRaiseDeps, dep.(Dependency).HeaderJars()...) ctx.VisitDirectDepsWithTag(proguardRaiseTag, func(m android.Module) { dep := ctx.OtherModuleProvider(m, JavaInfoProvider).(JavaInfo) proguardRaiseDeps = append(proguardRaiseDeps, dep.HeaderJars...) }) r8Flags = append(r8Flags, proguardRaiseDeps.FormJavaClassPath("-libraryjars")) Loading