diff options
Diffstat (limited to 'sysprop/sysprop_library.go')
| -rw-r--r-- | sysprop/sysprop_library.go | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/sysprop/sysprop_library.go b/sysprop/sysprop_library.go index a398cbce2..a82bf66de 100644 --- a/sysprop/sysprop_library.go +++ b/sysprop/sysprop_library.go @@ -86,14 +86,20 @@ func init() { pctx.HostBinToolVariable("syspropRustCmd", "sysprop_rust") } +var SyspropLibraryInfoProvider = blueprint.NewProvider[SyspropLibraryInfo]() + +type SyspropLibraryInfo struct { + CheckApiFileTimeStamp android.WritablePath +} + // syspropJavaGenRule module generates srcjar containing generated java APIs. // It also depends on check api rule, so api check has to pass to use sysprop_library. func (g *syspropJavaGenRule) GenerateAndroidBuildActions(ctx android.ModuleContext) { var checkApiFileTimeStamp android.WritablePath - ctx.VisitDirectDeps(func(dep android.Module) { - if m, ok := dep.(*syspropLibrary); ok { - checkApiFileTimeStamp = m.checkApiFileTimeStamp + ctx.VisitDirectDepsProxy(func(dep android.ModuleProxy) { + if info, ok := android.OtherModuleProvider(ctx, dep, SyspropLibraryInfoProvider); ok { + checkApiFileTimeStamp = info.CheckApiFileTimeStamp } }) @@ -136,9 +142,9 @@ func syspropJavaGenFactory() android.Module { func (g *syspropRustGenRule) GenerateSource(ctx rust.ModuleContext, deps rust.PathDeps) android.Path { var checkApiFileTimeStamp android.WritablePath - ctx.VisitDirectDeps(func(dep android.Module) { - if m, ok := dep.(*syspropLibrary); ok { - checkApiFileTimeStamp = m.checkApiFileTimeStamp + ctx.VisitDirectDepsProxy(func(dep android.ModuleProxy) { + if info, ok := android.OtherModuleProvider(ctx, dep, SyspropLibraryInfoProvider); ok { + checkApiFileTimeStamp = info.CheckApiFileTimeStamp } }) @@ -207,8 +213,6 @@ type syspropLibrary struct { properties syspropLibraryProperties checkApiFileTimeStamp android.WritablePath - latestApiFile android.OptionalPath - currentApiFile android.OptionalPath dumpedApiFile android.WritablePath } @@ -335,10 +339,6 @@ func (m *syspropLibrary) BaseModuleName() string { return m.ModuleBase.Name() } -func (m *syspropLibrary) CurrentSyspropApiFile() android.OptionalPath { - return m.currentApiFile -} - // GenerateAndroidBuildActions of sysprop_library handles API dump and API check. // generated java_library will depend on these API files. func (m *syspropLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { @@ -357,8 +357,8 @@ func (m *syspropLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) apiDirectoryPath := path.Join(ctx.ModuleDir(), "api") currentApiFilePath := path.Join(apiDirectoryPath, baseModuleName+"-current.txt") latestApiFilePath := path.Join(apiDirectoryPath, baseModuleName+"-latest.txt") - m.currentApiFile = android.ExistentPathForSource(ctx, currentApiFilePath) - m.latestApiFile = android.ExistentPathForSource(ctx, latestApiFilePath) + currentApiFile := android.ExistentPathForSource(ctx, currentApiFilePath) + latestApiFile := android.ExistentPathForSource(ctx, latestApiFilePath) // dump API rule rule := android.NewRuleBuilder(pctx, ctx) @@ -379,15 +379,15 @@ func (m *syspropLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) // method. var apiFileList android.Paths currentApiArgument := os.DevNull - if m.currentApiFile.Valid() { - apiFileList = append(apiFileList, m.currentApiFile.Path()) - currentApiArgument = m.currentApiFile.String() + if currentApiFile.Valid() { + apiFileList = append(apiFileList, currentApiFile.Path()) + currentApiArgument = currentApiFile.String() } latestApiArgument := os.DevNull - if m.latestApiFile.Valid() { - apiFileList = append(apiFileList, m.latestApiFile.Path()) - latestApiArgument = m.latestApiFile.String() + if latestApiFile.Valid() { + apiFileList = append(apiFileList, latestApiFile.Path()) + latestApiArgument = latestApiFile.String() } // 1. compares current.txt to api-dump.txt @@ -431,6 +431,10 @@ func (m *syspropLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) Output(m.checkApiFileTimeStamp) rule.Build(baseModuleName+"_check_api", baseModuleName+" check api") + + android.SetProvider(ctx, SyspropLibraryInfoProvider, SyspropLibraryInfo{ + CheckApiFileTimeStamp: m.checkApiFileTimeStamp, + }) } func (m *syspropLibrary) AndroidMk() android.AndroidMkData { |
