diff options
Diffstat (limited to 'java/base.go')
| -rw-r--r-- | java/base.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/java/base.go b/java/base.go index f5eb01c4b..4fe093af9 100644 --- a/java/base.go +++ b/java/base.go @@ -622,6 +622,8 @@ func (j *Module) OutputFiles(tag string) (android.Paths, error) { return android.Paths{j.dexer.proguardDictionary.Path()}, nil } return nil, fmt.Errorf("%q was requested, but no output file was found.", tag) + case ".generated_srcjars": + return j.properties.Generated_srcjars, nil default: return nil, fmt.Errorf("unsupported module reference tag %q", tag) } @@ -1670,6 +1672,49 @@ func (j *Module) useCompose() bool { return android.InList("androidx.compose.runtime_runtime", j.properties.Static_libs) } +func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpecInfo { + transitiveUnconditionalExportedFlags := []*android.DepSet[android.Path]{} + transitiveProguardFlags := []*android.DepSet[android.Path]{} + + ctx.VisitDirectDeps(func(m android.Module) { + depProguardInfo := ctx.OtherModuleProvider(m, ProguardSpecInfoProvider).(ProguardSpecInfo) + depTag := ctx.OtherModuleDependencyTag(m) + + if depProguardInfo.UnconditionallyExportedProguardFlags != nil { + transitiveUnconditionalExportedFlags = append(transitiveUnconditionalExportedFlags, depProguardInfo.UnconditionallyExportedProguardFlags) + transitiveProguardFlags = append(transitiveProguardFlags, depProguardInfo.UnconditionallyExportedProguardFlags) + } + + if depTag == staticLibTag && depProguardInfo.ProguardFlagsFiles != nil { + transitiveProguardFlags = append(transitiveProguardFlags, depProguardInfo.ProguardFlagsFiles) + } + }) + + directUnconditionalExportedFlags := android.Paths{} + proguardFlagsForThisModule := android.PathsForModuleSrc(ctx, j.dexProperties.Optimize.Proguard_flags_files) + exportUnconditionally := proptools.Bool(j.dexProperties.Optimize.Export_proguard_flags_files) + if exportUnconditionally { + // if we explicitly export, then our unconditional exports are the same as our transitive flags + transitiveUnconditionalExportedFlags = transitiveProguardFlags + directUnconditionalExportedFlags = proguardFlagsForThisModule + } + + return ProguardSpecInfo{ + Export_proguard_flags_files: exportUnconditionally, + ProguardFlagsFiles: android.NewDepSet[android.Path]( + android.POSTORDER, + proguardFlagsForThisModule, + transitiveProguardFlags, + ), + UnconditionallyExportedProguardFlags: android.NewDepSet[android.Path]( + android.POSTORDER, + directUnconditionalExportedFlags, + transitiveUnconditionalExportedFlags, + ), + } + +} + // Returns a copy of the supplied flags, but with all the errorprone-related // fields copied to the regular build's fields. func enableErrorproneFlags(flags javaBuilderFlags) javaBuilderFlags { |