diff options
author | 2022-05-11 15:41:34 -0700 | |
---|---|---|
committer | 2022-12-16 14:09:08 -0800 | |
commit | 9c54f032b9dbef63b9ef235c2219a4e9124f8891 (patch) | |
tree | 38f6d6f2d094d2344c35f359ba3ff61b9287a6d6 /java/java.go | |
parent | c34d91436ae629169c0f1ef9aab374fee6a0612c (diff) |
Include proguard flag files from transitive java_library deps
Ensure proguard flag files specified by java_library targets propagate
to downstream targets. This matches bazel behavior, as well as
behavior for transitive android_library deps.
Bug: 212623640
Test: m + presubmit
Change-Id: I61abaf1fd43d6f06bb610383751bb26e9a1bafd6
Diffstat (limited to 'java/java.go')
-rw-r--r-- | java/java.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/java/java.go b/java/java.go index 5091d26a2..959184687 100644 --- a/java/java.go +++ b/java/java.go @@ -283,6 +283,11 @@ type UsesLibraryDependency interface { ClassLoaderContexts() dexpreopt.ClassLoaderContextMap } +// Provides transitive Proguard flag files to downstream DEX jars. +type LibraryDependency interface { + ExportedProguardFlagFiles() android.Paths +} + // TODO(jungjw): Move this to kythe.go once it's created. type xref interface { XrefJavaFiles() android.Paths @@ -585,9 +590,17 @@ func normalizeJavaVersion(ctx android.BaseModuleContext, javaVersion string) jav type Library struct { Module + exportedProguardFlagFiles android.Paths + InstallMixin func(ctx android.ModuleContext, installPath android.Path) (extraInstallDeps android.Paths) } +var _ LibraryDependency = (*Library)(nil) + +func (j *Library) ExportedProguardFlagFiles() android.Paths { + return j.exportedProguardFlagFiles +} + var _ android.ApexModule = (*Library)(nil) // Provides access to the list of permitted packages from apex boot jars. @@ -683,6 +696,15 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) { } j.installFile = ctx.InstallFile(installDir, j.Stem()+".jar", j.outputFile, extraInstallDeps...) } + + j.exportedProguardFlagFiles = append(j.exportedProguardFlagFiles, + android.PathsForModuleSrc(ctx, j.dexProperties.Optimize.Proguard_flags_files)...) + ctx.VisitDirectDeps(func(m android.Module) { + if lib, ok := m.(LibraryDependency); ok && ctx.OtherModuleDependencyTag(m) == staticLibTag { + j.exportedProguardFlagFiles = append(j.exportedProguardFlagFiles, lib.ExportedProguardFlagFiles()...) + } + }) + j.exportedProguardFlagFiles = android.FirstUniquePaths(j.exportedProguardFlagFiles) } func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) { |