Convert the following singletons to use ModuleProxy:
buildTargetSingleton
exportedJavaDeclarationsLibrarySingleton
javaFuzzPackager
kytheExtractAllSingleton
kytheExtractJavaSingleton
kytheExtractRustSingleton
lintSingleton
logtagsSingleton
makeVarsSingleton
ndkAbiDiffSingleton
ndkAbiDumpSingleton
phonySingleton
platformCompatConfigSingleton
sdkSingleton
Bug: 377723687
Test: Unit tests and compare the ninja and mk files generated.
Change-Id: I625ac8a209ca93755b2ba232202cfb44ecefde0a
diff --git a/cc/cc.go b/cc/cc.go
index 0e70d48..238827e 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -104,7 +104,11 @@
}
type BenchmarkDecoratorInfo struct{}
-type StubDecoratorInfo struct{}
+type StubDecoratorInfo struct {
+ AbiDumpPath android.OutputPath
+ HasAbiDump bool
+ AbiDiffPaths android.Paths
+}
type ObjectLinkerInfo struct{}
@@ -112,6 +116,10 @@
BuildStubs bool
}
+type InstallerInfo struct {
+ StubDecoratorInfo *StubDecoratorInfo
+}
+
// Common info about the cc module.
type CcInfo struct {
IsPrebuilt bool
@@ -122,6 +130,7 @@
LinkerInfo *LinkerInfo
SnapshotInfo *SnapshotInfo
LibraryInfo *LibraryInfo
+ InstallerInfo *InstallerInfo
}
var CcInfoProvider = blueprint.NewProvider[*CcInfo]()
@@ -2362,6 +2371,16 @@
BuildStubs: c.library.BuildStubs(),
}
}
+ if c.installer != nil {
+ ccInfo.InstallerInfo = &InstallerInfo{}
+ if installer, ok := c.installer.(*stubDecorator); ok {
+ ccInfo.InstallerInfo.StubDecoratorInfo = &StubDecoratorInfo{
+ HasAbiDump: installer.hasAbiDump,
+ AbiDumpPath: installer.abiDumpPath,
+ AbiDiffPaths: installer.abiDiffPaths,
+ }
+ }
+ }
android.SetProvider(ctx, CcInfoProvider, &ccInfo)
c.setOutputFiles(ctx)
diff --git a/cc/ndk_abi.go b/cc/ndk_abi.go
index 2706261..a9f26a4 100644
--- a/cc/ndk_abi.go
+++ b/cc/ndk_abi.go
@@ -39,15 +39,15 @@
func (n *ndkAbiDumpSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var depPaths android.Paths
- ctx.VisitAllModules(func(module android.Module) {
- if !module.Enabled(ctx) {
+ ctx.VisitAllModuleProxies(func(module android.ModuleProxy) {
+ if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoKey).Enabled {
return
}
- if m, ok := module.(*Module); ok {
- if installer, ok := m.installer.(*stubDecorator); ok {
- if installer.hasAbiDump {
- depPaths = append(depPaths, installer.abiDumpPath)
+ if ccInfo, ok := android.OtherModuleProvider(ctx, module, CcInfoProvider); ok {
+ if ccInfo.InstallerInfo != nil && ccInfo.InstallerInfo.StubDecoratorInfo != nil {
+ if ccInfo.InstallerInfo.StubDecoratorInfo.HasAbiDump {
+ depPaths = append(depPaths, ccInfo.InstallerInfo.StubDecoratorInfo.AbiDumpPath)
}
}
}
@@ -77,14 +77,14 @@
func (n *ndkAbiDiffSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var depPaths android.Paths
- ctx.VisitAllModules(func(module android.Module) {
- if m, ok := module.(android.Module); ok && !m.Enabled(ctx) {
+ ctx.VisitAllModuleProxies(func(module android.ModuleProxy) {
+ if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoKey).Enabled {
return
}
- if m, ok := module.(*Module); ok {
- if installer, ok := m.installer.(*stubDecorator); ok {
- depPaths = append(depPaths, installer.abiDiffPaths...)
+ if ccInfo, ok := android.OtherModuleProvider(ctx, module, CcInfoProvider); ok {
+ if ccInfo.InstallerInfo != nil && ccInfo.InstallerInfo.StubDecoratorInfo != nil {
+ depPaths = append(depPaths, ccInfo.InstallerInfo.StubDecoratorInfo.AbiDiffPaths...)
}
}
})