Make IdeInfo into a provider

In order to keep the changes minimal, call the old IdeInfo method right
after GenerateAndroidBuildActions and then set the result of that
into a provider.

Test: Diff'd ninja files and saw no difference.
Change-Id: Ic706e7dbcb7c6e3d2a381ddae383eb87e105f385
This commit is contained in:
Cole Faust
2024-08-27 15:03:59 -07:00
parent 4b98396c64
commit 08c7f86575
2 changed files with 37 additions and 11 deletions

View File

@@ -1956,6 +1956,13 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
if ctx.Failed() { if ctx.Failed() {
return return
} }
if x, ok := m.module.(IDEInfo); ok {
var result IdeInfo
x.IDEInfo(&result)
result.BaseModuleName = x.BaseModuleName()
SetProvider(ctx, IdeInfoProviderKey, result)
}
} }
if incrementalEnabled && cacheKey != nil { if incrementalEnabled && cacheKey != nil {
@@ -2753,7 +2760,9 @@ type IDECustomizedModuleName interface {
IDECustomizedModuleName() string IDECustomizedModuleName() string
} }
// Collect information for opening IDE project files in java/jdeps.go.
type IdeInfo struct { type IdeInfo struct {
BaseModuleName string `json:"-"`
Deps []string `json:"dependencies,omitempty"` Deps []string `json:"dependencies,omitempty"`
Srcs []string `json:"srcs,omitempty"` Srcs []string `json:"srcs,omitempty"`
Aidl_include_dirs []string `json:"aidl_include_dirs,omitempty"` Aidl_include_dirs []string `json:"aidl_include_dirs,omitempty"`
@@ -2767,6 +2776,31 @@ type IdeInfo struct {
Libs []string `json:"libs,omitempty"` Libs []string `json:"libs,omitempty"`
} }
// Merge merges two IdeInfos and produces a new one, leaving the origional unchanged
func (i IdeInfo) Merge(other IdeInfo) IdeInfo {
return IdeInfo{
Deps: mergeStringLists(i.Deps, other.Deps),
Srcs: mergeStringLists(i.Srcs, other.Srcs),
Aidl_include_dirs: mergeStringLists(i.Aidl_include_dirs, other.Aidl_include_dirs),
Jarjar_rules: mergeStringLists(i.Jarjar_rules, other.Jarjar_rules),
Jars: mergeStringLists(i.Jars, other.Jars),
Classes: mergeStringLists(i.Classes, other.Classes),
Installed_paths: mergeStringLists(i.Installed_paths, other.Installed_paths),
SrcJars: mergeStringLists(i.SrcJars, other.SrcJars),
Paths: mergeStringLists(i.Paths, other.Paths),
Static_libs: mergeStringLists(i.Static_libs, other.Static_libs),
Libs: mergeStringLists(i.Libs, other.Libs),
}
}
// mergeStringLists appends the two string lists together and returns a new string list,
// leaving the originals unchanged. Duplicate strings will be deduplicated.
func mergeStringLists(a, b []string) []string {
return FirstUniqueStrings(Concat(a, b))
}
var IdeInfoProviderKey = blueprint.NewProvider[IdeInfo]()
func CheckBlueprintSyntax(ctx BaseModuleContext, filename string, contents string) []error { func CheckBlueprintSyntax(ctx BaseModuleContext, filename string, contents string) []error {
bpctx := ctx.blueprintBaseModuleContext() bpctx := ctx.blueprintBaseModuleContext()
return blueprint.CheckBlueprintSyntax(bpctx.ModuleFactories(), filename, contents) return blueprint.CheckBlueprintSyntax(bpctx.ModuleFactories(), filename, contents)

View File

@@ -57,27 +57,19 @@ func (j *jdepsGeneratorSingleton) GenerateBuildActions(ctx android.SingletonCont
return return
} }
ideInfoProvider, ok := module.(android.IDEInfo) ideInfoProvider, ok := android.OtherModuleProvider(ctx, module, android.IdeInfoProviderKey)
if !ok { if !ok {
return return
} }
name := ideInfoProvider.BaseModuleName() name := ideInfoProvider.BaseModuleName
ideModuleNameProvider, ok := module.(android.IDECustomizedModuleName) ideModuleNameProvider, ok := module.(android.IDECustomizedModuleName)
if ok { if ok {
name = ideModuleNameProvider.IDECustomizedModuleName() name = ideModuleNameProvider.IDECustomizedModuleName()
} }
dpInfo := moduleInfos[name] dpInfo := moduleInfos[name]
ideInfoProvider.IDEInfo(&dpInfo) dpInfo = dpInfo.Merge(ideInfoProvider)
dpInfo.Deps = android.FirstUniqueStrings(dpInfo.Deps)
dpInfo.Srcs = android.FirstUniqueStrings(dpInfo.Srcs)
dpInfo.Aidl_include_dirs = android.FirstUniqueStrings(dpInfo.Aidl_include_dirs)
dpInfo.Jarjar_rules = android.FirstUniqueStrings(dpInfo.Jarjar_rules)
dpInfo.Jars = android.FirstUniqueStrings(dpInfo.Jars)
dpInfo.SrcJars = android.FirstUniqueStrings(dpInfo.SrcJars)
dpInfo.Paths = []string{ctx.ModuleDir(module)} dpInfo.Paths = []string{ctx.ModuleDir(module)}
dpInfo.Static_libs = android.FirstUniqueStrings(dpInfo.Static_libs)
dpInfo.Libs = android.FirstUniqueStrings(dpInfo.Libs)
moduleInfos[name] = dpInfo moduleInfos[name] = dpInfo
mkProvider, ok := module.(android.AndroidMkDataProvider) mkProvider, ok := module.(android.AndroidMkDataProvider)