diff options
author | 2025-03-04 18:46:24 +0000 | |
---|---|---|
committer | 2025-03-07 22:27:00 +0000 | |
commit | 8840812f9dfa3ba5ceecd75e582836a3c673d54b (patch) | |
tree | fff1295a2cc6222dd8ddafac052d82da645fbebe | |
parent | 4a053d74d73a4826530d1b06be8aa5ad55212ff2 (diff) |
Convert singletonModuleSingletonAdaptor, rustdocSingleton,
sizesSingleton, movedToApexLlndkLibraries and
allBuildFlagDeclarationsSingleton to use ModuleProxy.
Bug: 377723687
Test: Unit tests and compare the ninja json and mk files generated.
Change-Id: I90ea5599a55975b27e9ce6e91b20104849f5887f
-rw-r--r-- | aconfig/all_aconfig_declarations.go | 2 | ||||
-rw-r--r-- | aconfig/build_flags/build_flags_singleton.go | 5 | ||||
-rw-r--r-- | bloaty/bloaty.go | 4 | ||||
-rw-r--r-- | cc/cc.go | 48 | ||||
-rw-r--r-- | cc/llndk_library.go | 39 | ||||
-rw-r--r-- | rust/doc.go | 10 | ||||
-rw-r--r-- | rust/rust.go | 2 |
7 files changed, 76 insertions, 34 deletions
diff --git a/aconfig/all_aconfig_declarations.go b/aconfig/all_aconfig_declarations.go index 3d07e16dc..e3ef7ddcc 100644 --- a/aconfig/all_aconfig_declarations.go +++ b/aconfig/all_aconfig_declarations.go @@ -111,7 +111,7 @@ func (this *allAconfigDeclarationsSingleton) GenerateSingletonBuildActions(ctx a // Find all of the aconfig_declarations modules var packages = make(map[string]int) var cacheFiles android.Paths - ctx.VisitAllModules(func(module android.Module) { + ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { decl, ok := android.OtherModuleProvider(ctx, module, android.AconfigReleaseDeclarationsProviderKey) if !ok { return diff --git a/aconfig/build_flags/build_flags_singleton.go b/aconfig/build_flags/build_flags_singleton.go index e375d9c70..3a06e72d6 100644 --- a/aconfig/build_flags/build_flags_singleton.go +++ b/aconfig/build_flags/build_flags_singleton.go @@ -15,8 +15,9 @@ package build_flags import ( - "android/soong/android" "fmt" + + "android/soong/android" ) // A singleton module that collects all of the build flags declared in the @@ -42,7 +43,7 @@ func (this *allBuildFlagDeclarationsSingleton) GenerateBuildActions(ctx android. var flagsFiles android.Paths // Find all of the release_config_contribution modules var contributionDirs android.Paths - ctx.VisitAllModules(func(module android.Module) { + ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { decl, ok := android.OtherModuleProvider(ctx, module, BuildFlagDeclarationsProviderKey) if ok { flagsFiles = append(flagsFiles, decl.IntermediateCacheOutputPath) diff --git a/bloaty/bloaty.go b/bloaty/bloaty.go index 26f2aa879..7f56050e9 100644 --- a/bloaty/bloaty.go +++ b/bloaty/bloaty.go @@ -84,8 +84,8 @@ func fileSizesSingleton() android.Singleton { func (singleton *sizesSingleton) GenerateBuildActions(ctx android.SingletonContext) { var deps android.Paths - ctx.VisitAllModules(func(m android.Module) { - if !m.ExportedToMake() { + ctx.VisitAllModuleProxies(func(m android.ModuleProxy) { + if !android.OtherModuleProviderOrDefault(ctx, m, android.CommonModuleInfoKey).ExportedToMake { return } filePaths, ok := android.OtherModuleProvider(ctx, m, fileSizeMeasurerKey) @@ -81,12 +81,13 @@ type LinkerInfo struct { HeaderLibs []string ImplementationModuleName *string - BinaryDecoratorInfo *BinaryDecoratorInfo - LibraryDecoratorInfo *LibraryDecoratorInfo - TestBinaryInfo *TestBinaryInfo - BenchmarkDecoratorInfo *BenchmarkDecoratorInfo - ObjectLinkerInfo *ObjectLinkerInfo - StubDecoratorInfo *StubDecoratorInfo + BinaryDecoratorInfo *BinaryDecoratorInfo + LibraryDecoratorInfo *LibraryDecoratorInfo + TestBinaryInfo *TestBinaryInfo + BenchmarkDecoratorInfo *BenchmarkDecoratorInfo + ObjectLinkerInfo *ObjectLinkerInfo + StubDecoratorInfo *StubDecoratorInfo + PrebuiltLibraryLinkerInfo *PrebuiltLibraryLinkerInfo } type BinaryDecoratorInfo struct{} @@ -96,6 +97,7 @@ type LibraryDecoratorInfo struct { // Location of the static library in the sysroot. Empty if the library is // not included in the NDK. NdkSysrootPath android.Path + VndkFileName string } type SnapshotInfo struct { @@ -120,6 +122,10 @@ type ObjectLinkerInfo struct { NdkSysrootPath android.Path } +type PrebuiltLibraryLinkerInfo struct { + VndkFileName string +} + type LibraryInfo struct { BuildStubs bool } @@ -128,6 +134,13 @@ type InstallerInfo struct { StubDecoratorInfo *StubDecoratorInfo } +type LocalOrGlobalFlagsInfo struct { + CommonFlags []string // Flags that apply to C, C++, and assembly source files + CFlags []string // Flags that apply to C and C++ source files + ConlyFlags []string // Flags that apply to C source files + CppFlags []string // Flags that apply to C++ source files +} + // Common info about the cc module. type CcInfo struct { IsPrebuilt bool @@ -148,6 +161,7 @@ type LinkableInfo struct { StaticExecutable bool Static bool Shared bool + Header bool HasStubsVariants bool StubsVersion string IsStubs bool @@ -195,7 +209,11 @@ type LinkableInfo struct { APIListCoverageXMLPath android.ModuleOutPath // FuzzSharedLibraries returns the shared library dependencies for this module. // Expects that IsFuzzModule returns true. - FuzzSharedLibraries android.RuleBuilderInstalls + FuzzSharedLibraries android.RuleBuilderInstalls + IsVndkPrebuiltLibrary bool + HasLLNDKStubs bool + IsLLNDKMovedToApex bool + ImplementationModuleName string } var LinkableInfoProvider = blueprint.NewProvider[*LinkableInfo]() @@ -2356,9 +2374,11 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { case *binaryDecorator: ccInfo.LinkerInfo.BinaryDecoratorInfo = &BinaryDecoratorInfo{} case *libraryDecorator: + lk := c.linker.(*libraryDecorator) ccInfo.LinkerInfo.LibraryDecoratorInfo = &LibraryDecoratorInfo{ - InjectBsslHash: Bool(c.linker.(*libraryDecorator).Properties.Inject_bssl_hash), - NdkSysrootPath: c.linker.(*libraryDecorator).ndkSysrootPath, + InjectBsslHash: Bool(lk.Properties.Inject_bssl_hash), + NdkSysrootPath: lk.ndkSysrootPath, + VndkFileName: lk.getLibNameHelper(c.BaseModuleName(), true, false) + ".so", } case *testBinary: ccInfo.LinkerInfo.TestBinaryInfo = &TestBinaryInfo{ @@ -2372,6 +2392,11 @@ func (c *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { } case *stubDecorator: ccInfo.LinkerInfo.StubDecoratorInfo = &StubDecoratorInfo{} + case *prebuiltLibraryLinker: + ccInfo.LinkerInfo.PrebuiltLibraryLinkerInfo = &PrebuiltLibraryLinkerInfo{ + VndkFileName: c.linker.(*prebuiltLibraryLinker).getLibNameHelper( + c.BaseModuleName(), true, false) + ".so", + } } if s, ok := c.linker.(SnapshotInterface); ok { @@ -2441,12 +2466,17 @@ func CreateCommonLinkableInfo(ctx android.ModuleContext, mod VersionedLinkableIn Multilib: mod.Multilib(), ImplementationModuleNameForMake: mod.ImplementationModuleNameForMake(), Symlinks: mod.Symlinks(), + Header: mod.Header(), + IsVndkPrebuiltLibrary: mod.IsVndkPrebuiltLibrary(), } vi := mod.VersionedInterface() if vi != nil { info.IsStubsImplementationRequired = vi.IsStubsImplementationRequired() info.APIListCoverageXMLPath = vi.GetAPIListCoverageXMLPath() + info.HasLLNDKStubs = vi.HasLLNDKStubs() + info.IsLLNDKMovedToApex = vi.IsLLNDKMovedToApex() + info.ImplementationModuleName = vi.ImplementationModuleName(mod.BaseModuleName()) } if !mod.PreventInstall() && fuzz.IsValid(ctx, mod.FuzzModuleStruct()) && mod.IsFuzzModule() { diff --git a/cc/llndk_library.go b/cc/llndk_library.go index 8ca3ca184..b119fdac1 100644 --- a/cc/llndk_library.go +++ b/cc/llndk_library.go @@ -82,11 +82,10 @@ type movedToApexLlndkLibraries struct { func (s *movedToApexLlndkLibraries) GenerateBuildActions(ctx android.SingletonContext) { // Make uses LLNDK_MOVED_TO_APEX_LIBRARIES to generate the linker config. movedToApexLlndkLibrariesMap := make(map[string]bool) - ctx.VisitAllModules(func(module android.Module) { - if library := moduleVersionedInterface(module); library != nil && library.HasLLNDKStubs() { - if library.IsLLNDKMovedToApex() { - name := library.ImplementationModuleName(module.(*Module).BaseModuleName()) - movedToApexLlndkLibrariesMap[name] = true + ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { + if library, ok := android.OtherModuleProvider(ctx, module, LinkableInfoProvider); ok { + if library.HasLLNDKStubs && library.IsLLNDKMovedToApex { + movedToApexLlndkLibrariesMap[library.ImplementationModuleName] = true } } }) @@ -151,14 +150,16 @@ func (txt *llndkLibrariesTxtModule) GenerateAndroidBuildActions(ctx android.Modu etc.SetCommonPrebuiltEtcInfo(ctx, txt) } -func getVndkFileName(m *Module) (string, error) { - if library, ok := m.linker.(*libraryDecorator); ok { - return library.getLibNameHelper(m.BaseModuleName(), true, false) + ".so", nil - } - if prebuilt, ok := m.linker.(*prebuiltLibraryLinker); ok { - return prebuilt.libraryDecorator.getLibNameHelper(m.BaseModuleName(), true, false) + ".so", nil +func getVndkFileName(info *LinkerInfo) (string, error) { + if info != nil { + if info.LibraryDecoratorInfo != nil { + return info.LibraryDecoratorInfo.VndkFileName, nil + } + if info.PrebuiltLibraryLinkerInfo != nil { + return info.PrebuiltLibraryLinkerInfo.VndkFileName, nil + } } - return "", fmt.Errorf("VNDK library should have libraryDecorator or prebuiltLibraryLinker as linker: %T", m.linker) + return "", fmt.Errorf("VNDK library should have libraryDecorator or prebuiltLibraryLinker as linker: %T", info) } func (txt *llndkLibrariesTxtModule) GenerateSingletonBuildActions(ctx android.SingletonContext) { @@ -167,9 +168,17 @@ func (txt *llndkLibrariesTxtModule) GenerateSingletonBuildActions(ctx android.Si return } - ctx.VisitAllModules(func(m android.Module) { - if c, ok := m.(*Module); ok && c.VendorProperties.IsLLNDK && !c.Header() && !c.IsVndkPrebuiltLibrary() { - filename, err := getVndkFileName(c) + ctx.VisitAllModuleProxies(func(m android.ModuleProxy) { + ccInfo, ok := android.OtherModuleProvider(ctx, m, CcInfoProvider) + if !ok { + return + } + linkableInfo, ok := android.OtherModuleProvider(ctx, m, LinkableInfoProvider) + if !ok { + return + } + if linkableInfo.IsLlndk && !linkableInfo.Header && !linkableInfo.IsVndkPrebuiltLibrary { + filename, err := getVndkFileName(ccInfo.LinkerInfo) if err != nil { ctx.ModuleErrorf(m, "%s", err) } diff --git a/rust/doc.go b/rust/doc.go index fe205233d..2fb6ba98e 100644 --- a/rust/doc.go +++ b/rust/doc.go @@ -37,14 +37,14 @@ func (n *rustdocSingleton) GenerateBuildActions(ctx android.SingletonContext) { FlagWithArg("-C ", docDir.String()). FlagWithArg("-D ", docDir.String()) - 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 m.docTimestampFile.Valid() { - zipCmd.Implicit(m.docTimestampFile.Path()) + if m, ok := android.OtherModuleProvider(ctx, module, RustInfoProvider); ok { + if m.DocTimestampFile.Valid() { + zipCmd.Implicit(m.DocTimestampFile.Path()) } } }) diff --git a/rust/rust.go b/rust/rust.go index d8a044423..2e3d846dd 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -61,6 +61,7 @@ type RustInfo struct { SnapshotInfo *cc.SnapshotInfo SourceProviderInfo *SourceProviderInfo XrefRustFiles android.Paths + DocTimestampFile android.OptionalPath } var RustInfoProvider = blueprint.NewProvider[*RustInfo]() @@ -1173,6 +1174,7 @@ func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { RustSubName: mod.Properties.RustSubName, TransitiveAndroidMkSharedLibs: mod.transitiveAndroidMkSharedLibs, XrefRustFiles: mod.XrefRustFiles(), + DocTimestampFile: mod.docTimestampFile, } if mod.compiler != nil { rustInfo.CompilerInfo = &CompilerInfo{ |