diff options
51 files changed, 144 insertions, 93 deletions
diff --git a/android/aconfig_providers.go b/android/aconfig_providers.go index 9c71d927d..bb73f0bdd 100644 --- a/android/aconfig_providers.go +++ b/android/aconfig_providers.go @@ -248,7 +248,7 @@ func getContainer(m Module) string { // Please only access the module's internal data through providers. func getContainerUsingProviders(ctx OtherModuleProviderContext, m Module) string { container := "system" - commonInfo, _ := OtherModuleProvider(ctx, m, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, m, CommonModuleInfoProvider) if commonInfo.Vendor || commonInfo.Proprietary || commonInfo.SocSpecific { container = "vendor" } else if commonInfo.ProductSpecific { diff --git a/android/all_teams.go b/android/all_teams.go index 5e76e53bf..18a050f5d 100644 --- a/android/all_teams.go +++ b/android/all_teams.go @@ -116,7 +116,7 @@ func (t *allTeamsSingleton) GenerateBuildActions(ctx SingletonContext) { testOnly: testModInfo.TestOnly, topLevelTestTarget: testModInfo.TopLevelTarget, kind: ctx.ModuleType(module), - teamName: OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoProvider).Team, + teamName: OtherModulePointerProviderOrDefault(ctx, module, CommonModuleInfoProvider).Team, } t.teams_for_mods[module.Name()] = entry diff --git a/android/androidmk.go b/android/androidmk.go index 694f5d66b..784559312 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -888,14 +888,14 @@ func getSoongOnlyDataFromMods(ctx fillInEntriesContext, mods []Module) ([]distCo } } - commonInfo, _ := OtherModuleProvider(ctx, mod, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, mod, CommonModuleInfoProvider) if commonInfo.SkipAndroidMkProcessing { continue } if info, ok := OtherModuleProvider(ctx, mod, AndroidMkInfoProvider); ok { // Deep copy the provider info since we need to modify the info later info := deepCopyAndroidMkProviderInfo(info) - info.PrimaryInfo.fillInEntries(ctx, mod, &commonInfo) + info.PrimaryInfo.fillInEntries(ctx, mod, commonInfo) if info.PrimaryInfo.disabled() { continue } @@ -1320,7 +1320,7 @@ var AndroidMkInfoProvider = blueprint.NewProvider[*AndroidMkProviderInfo]() // Please only access the module's internal data through providers. func translateAndroidMkEntriesInfoModule(ctx SingletonContext, w io.Writer, moduleInfoJSONs *[]*ModuleInfoJSON, mod Module, providerInfo *AndroidMkProviderInfo) error { - commonInfo, _ := OtherModuleProvider(ctx, mod, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, mod, CommonModuleInfoProvider) if commonInfo.SkipAndroidMkProcessing { return nil } @@ -1331,11 +1331,11 @@ func translateAndroidMkEntriesInfoModule(ctx SingletonContext, w io.Writer, modu aconfigUpdateAndroidMkInfos(ctx, mod, &info) // Any new or special cases here need review to verify correct propagation of license information. - info.PrimaryInfo.fillInEntries(ctx, mod, &commonInfo) + info.PrimaryInfo.fillInEntries(ctx, mod, commonInfo) info.PrimaryInfo.write(w) if len(info.ExtraInfo) > 0 { for _, ei := range info.ExtraInfo { - ei.fillInEntries(ctx, mod, &commonInfo) + ei.fillInEntries(ctx, mod, commonInfo) ei.write(w) } } diff --git a/android/arch_list.go b/android/arch_list.go index 389f194e8..8659549ca 100644 --- a/android/arch_list.go +++ b/android/arch_list.go @@ -27,6 +27,8 @@ var archVariants = map[ArchType][]string{ "armv8-2a-dotprod", "armv9-a", "armv9-2a", + "armv9-3a", + "armv9-4a", }, X86: { "alderlake", @@ -151,6 +153,12 @@ var androidArchFeatureMap = map[ArchType]map[string][]string{ "armv9-2a": { "dotprod", }, + "armv9-3a": { + "dotprod", + }, + "armv9-4a": { + "dotprod", + }, }, X86: { "alderlake": { diff --git a/android/base_module_context.go b/android/base_module_context.go index eba367034..5cb9e71cf 100644 --- a/android/base_module_context.go +++ b/android/base_module_context.go @@ -410,7 +410,7 @@ func (b *baseModuleContext) validateAndroidModuleProxy( return &aModule } - if !OtherModuleProviderOrDefault(b, module, CommonModuleInfoProvider).Enabled { + if !OtherModulePointerProviderOrDefault(b, module, CommonModuleInfoProvider).Enabled { if t, ok := tag.(AllowDisabledModuleDependency); !ok || !t.AllowDisabledModuleDependencyProxy(b, aModule) { if b.Config().AllowMissingDependencies() { b.AddMissingDependencies([]string{b.OtherModuleName(aModule)}) @@ -440,7 +440,7 @@ func (b *baseModuleContext) getDirectDepsInternal(name string, tag blueprint.Dep func (b *baseModuleContext) getDirectDepsProxyInternal(name string, tag blueprint.DependencyTag) []ModuleProxy { var deps []ModuleProxy b.VisitDirectDepsProxy(func(module ModuleProxy) { - if OtherModuleProviderOrDefault(b, module, CommonModuleInfoProvider).BaseModuleName == name { + if OtherModulePointerProviderOrDefault(b, module, CommonModuleInfoProvider).BaseModuleName == name { returnedTag := b.OtherModuleDependencyTag(module) if tag == nil || returnedTag == tag { deps = append(deps, module) diff --git a/android/compliance_metadata.go b/android/compliance_metadata.go index c15a206ec..16a385300 100644 --- a/android/compliance_metadata.go +++ b/android/compliance_metadata.go @@ -304,7 +304,7 @@ func (c *complianceMetadataSingleton) GenerateBuildActions(ctx SingletonContext) rowId := -1 ctx.VisitAllModuleProxies(func(module ModuleProxy) { - commonInfo, _ := OtherModuleProvider(ctx, module, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, module, CommonModuleInfoProvider) if !commonInfo.Enabled { return } diff --git a/android/config.go b/android/config.go index 2a4b9272b..d47f0d44a 100644 --- a/android/config.go +++ b/android/config.go @@ -238,11 +238,6 @@ func (c Config) ReleaseAconfigFlagDefaultPermission() string { return c.config.productVariables.ReleaseAconfigFlagDefaultPermission } -// Enable object size sanitizer -func (c Config) ReleaseBuildObjectSizeSanitizer() bool { - return c.config.productVariables.GetBuildFlagBool("RELEASE_BUILD_OBJECT_SIZE_SANITIZER") -} - // The flag indicating behavior for the tree wrt building modules or using prebuilts // derived from RELEASE_DEFAULT_MODULE_BUILD_FROM_SOURCE func (c Config) ReleaseDefaultModuleBuildFromSource() bool { diff --git a/android/configured_jars.go b/android/configured_jars.go index c7b808f3d..657826e98 100644 --- a/android/configured_jars.go +++ b/android/configured_jars.go @@ -264,7 +264,7 @@ func (l *ConfiguredJarList) DevicePaths(cfg Config, ostype OsType) []string { subdir = filepath.Join("apex", apex, "javalib") } - if ostype.Class == Host { + if ostype.Class == Host || cfg.IsEnvTrue("ART_USE_SIMULATOR") { paths[i] = filepath.Join(cfg.Getenv("OUT_DIR"), "host", cfg.PrebuiltOS(), subdir, name) } else { paths[i] = filepath.Join("/", subdir, name) diff --git a/android/container.go b/android/container.go index 5d223b86a..547fe816c 100644 --- a/android/container.go +++ b/android/container.go @@ -39,7 +39,7 @@ type StubsAvailableModule interface { // Returns true if the dependency module is a stubs module var depIsStubsModule exceptionHandleFunc = func(mctx ModuleContext, _ Module, dep ModuleProxy) bool { - return OtherModuleProviderOrDefault(mctx, dep, CommonModuleInfoProvider).IsStubsModule + return OtherModulePointerProviderOrDefault(mctx, dep, CommonModuleInfoProvider).IsStubsModule } // Returns true if the dependency module belongs to any of the apexes. diff --git a/android/gen_notice.go b/android/gen_notice.go index ae831185f..45f90f47c 100644 --- a/android/gen_notice.go +++ b/android/gen_notice.go @@ -60,7 +60,7 @@ func (s *genNoticeBuildRules) GenerateBuildActions(ctx SingletonContext) { for _, name := range gm.For { mods := ctx.ModuleVariantsFromName(m, name) for _, mod := range mods { - if !OtherModuleProviderOrDefault(ctx, mod, CommonModuleInfoProvider).Enabled { // don't depend on variants without build rules + if !OtherModulePointerProviderOrDefault(ctx, mod, CommonModuleInfoProvider).Enabled { // don't depend on variants without build rules continue } modules = append(modules, mod) diff --git a/android/license_metadata.go b/android/license_metadata.go index e79febb8f..0b880dd8a 100644 --- a/android/license_metadata.go +++ b/android/license_metadata.go @@ -65,7 +65,7 @@ func buildLicenseMetadata(ctx *moduleContext, licenseMetadataFile WritablePath) var allDepMetadataDepSets []depset.DepSet[Path] ctx.VisitDirectDepsProxy(func(dep ModuleProxy) { - if !OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoProvider).Enabled { + if !OtherModulePointerProviderOrDefault(ctx, dep, CommonModuleInfoProvider).Enabled { return } diff --git a/android/logtags.go b/android/logtags.go index ef7a61259..074f402e7 100644 --- a/android/logtags.go +++ b/android/logtags.go @@ -43,7 +43,7 @@ func MergedLogtagsPath(ctx PathContext) OutputPath { func (l *logtagsSingleton) GenerateBuildActions(ctx SingletonContext) { var allLogtags Paths ctx.VisitAllModuleProxies(func(module ModuleProxy) { - if !OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoProvider).ExportedToMake { + if !OtherModulePointerProviderOrDefault(ctx, module, CommonModuleInfoProvider).ExportedToMake { return } if logtagsInfo, ok := OtherModuleProvider(ctx, module, LogtagsProviderKey); ok { diff --git a/android/makevars.go b/android/makevars.go index e1d947dff..7017e7db0 100644 --- a/android/makevars.go +++ b/android/makevars.go @@ -259,7 +259,7 @@ func (s *makeVarsSingleton) GenerateBuildActions(ctx SingletonContext) { singletonDists.lock.Unlock() ctx.VisitAllModuleProxies(func(m ModuleProxy) { - commonInfo, _ := OtherModuleProvider(ctx, m, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, m, CommonModuleInfoProvider) if provider, ok := OtherModuleProvider(ctx, m, ModuleMakeVarsInfoProvider); ok && commonInfo.Enabled { mctx := &makeVarsContext{ diff --git a/android/module.go b/android/module.go index 334e5b722..a3fe837a5 100644 --- a/android/module.go +++ b/android/module.go @@ -1002,11 +1002,19 @@ func (m *ModuleBase) baseDepsMutator(ctx BottomUpMutatorContext) { pv := ctx.Config().productVariables fullManifest := pv.DeviceArch != nil && pv.DeviceName != nil if fullManifest { - addRequiredDeps(ctx) addVintfFragmentDeps(ctx) } } +// required property can be overridden too; handle it separately +func (m *ModuleBase) baseOverridablePropertiesDepsMutator(ctx BottomUpMutatorContext) { + pv := ctx.Config().productVariables + fullManifest := pv.DeviceArch != nil && pv.DeviceName != nil + if fullManifest { + addRequiredDeps(ctx) + } +} + // addRequiredDeps adds required, target_required, and host_required as dependencies. func addRequiredDeps(ctx BottomUpMutatorContext) { addDep := func(target Target, depName string) { @@ -1488,7 +1496,7 @@ func (m *ModuleBase) computeInstallDeps(ctx ModuleContext) ([]depset.DepSet[Inst // Installation is still handled by Make, so anything hidden from Make is not // installable. info := OtherModuleProviderOrDefault(ctx, dep, InstallFilesProvider) - commonInfo := OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoProvider) + commonInfo := OtherModulePointerProviderOrDefault(ctx, dep, CommonModuleInfoProvider) if !commonInfo.HideFromMake && !commonInfo.SkipInstall { installDeps = append(installDeps, info.TransitiveInstallFiles) } @@ -1505,7 +1513,7 @@ func (m *ModuleBase) computeInstallDeps(ctx ModuleContext) ([]depset.DepSet[Inst // should also install the output files of the given dependency and dependency tag. func isInstallDepNeeded(ctx ModuleContext, dep ModuleProxy) bool { // Don't add a dependency from the platform to a library provided by an apex. - if OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoProvider).UninstallableApexPlatformVariant { + if OtherModulePointerProviderOrDefault(ctx, dep, CommonModuleInfoProvider).UninstallableApexPlatformVariant { return false } // Only install modules if the dependency tag is an InstallDepNeeded tag. @@ -1928,7 +1936,7 @@ type ApiLevelOrPlatform struct { IsPlatform bool } -var CommonModuleInfoProvider = blueprint.NewProvider[CommonModuleInfo]() +var CommonModuleInfoProvider = blueprint.NewProvider[*CommonModuleInfo]() type PrebuiltModuleInfo struct { SourceExists bool @@ -2336,7 +2344,7 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext) if mm, ok := m.module.(interface{ BaseModuleName() string }); ok { commonData.BaseModuleName = mm.BaseModuleName() } - SetProvider(ctx, CommonModuleInfoProvider, commonData) + SetProvider(ctx, CommonModuleInfoProvider, &commonData) if p, ok := m.module.(PrebuiltInterface); ok && p.Prebuilt() != nil { SetProvider(ctx, PrebuiltModuleInfoProvider, PrebuiltModuleInfo{ SourceExists: p.Prebuilt().SourceExists(), diff --git a/android/override_module.go b/android/override_module.go index 50ddc9b35..96620ef7a 100644 --- a/android/override_module.go +++ b/android/override_module.go @@ -367,6 +367,7 @@ func checkPrebuiltReplacesOverride(ctx BottomUpMutatorContext, b OverridableModu } func overridableModuleDepsMutator(ctx BottomUpMutatorContext) { + ctx.Module().base().baseOverridablePropertiesDepsMutator(ctx) if b, ok := ctx.Module().(OverridableModule); ok && b.Enabled(ctx) { b.OverridablePropertiesDepsMutator(ctx) } diff --git a/android/package.go b/android/package.go index 0f6a7678c..52bddf9d9 100644 --- a/android/package.go +++ b/android/package.go @@ -62,7 +62,7 @@ func (p *packageModule) DepsMutator(ctx BottomUpMutatorContext) { } func (p *packageModule) GenerateBuildActions(ctx blueprint.ModuleContext) { - ctx.SetProvider(CommonModuleInfoProvider, CommonModuleInfo{ + ctx.SetProvider(CommonModuleInfoProvider, &CommonModuleInfo{ Enabled: true, PrimaryLicensesProperty: p.primaryLicensesProperty, }) diff --git a/android/paths.go b/android/paths.go index f7fcd35ff..977473fbd 100644 --- a/android/paths.go +++ b/android/paths.go @@ -683,7 +683,7 @@ func getPathsFromModuleDep(ctx ModuleWithDepsPathContext, path, moduleName, tag if module == nil { return nil, missingDependencyError{[]string{moduleName}} } - if !OtherModuleProviderOrDefault(ctx, *module, CommonModuleInfoProvider).Enabled { + if !OtherModulePointerProviderOrDefault(ctx, *module, CommonModuleInfoProvider).Enabled { return nil, missingDependencyError{[]string{moduleName}} } diff --git a/android/prebuilt.go b/android/prebuilt.go index 0178f769c..1ff009bf5 100644 --- a/android/prebuilt.go +++ b/android/prebuilt.go @@ -358,7 +358,7 @@ func IsModulePreferred(module Module) bool { } func IsModulePreferredProxy(ctx OtherModuleProviderContext, module ModuleProxy) bool { - if OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoProvider).ReplacedByPrebuilt { + if OtherModulePointerProviderOrDefault(ctx, module, CommonModuleInfoProvider).ReplacedByPrebuilt { // A source module that has been replaced by a prebuilt counterpart. return false } @@ -397,7 +397,7 @@ func GetEmbeddedPrebuilt(module Module) *Prebuilt { // the right module. This function is only safe to call after all TransitionMutators // have run, e.g. in GenerateAndroidBuildActions. func PrebuiltGetPreferred(ctx BaseModuleContext, module Module) Module { - if !OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoProvider).ReplacedByPrebuilt { + if !OtherModulePointerProviderOrDefault(ctx, module, CommonModuleInfoProvider).ReplacedByPrebuilt { return module } if _, ok := OtherModuleProvider(ctx, module, PrebuiltModuleInfoProvider); ok { diff --git a/android/provider.go b/android/provider.go index d005daf55..aae93ef88 100644 --- a/android/provider.go +++ b/android/provider.go @@ -41,6 +41,14 @@ func OtherModuleProviderOrDefault[K any](ctx OtherModuleProviderContext, module return value } +func OtherModulePointerProviderOrDefault[K *T, T any](ctx OtherModuleProviderContext, module blueprint.Module, provider blueprint.ProviderKey[K]) K { + if value, ok := OtherModuleProvider(ctx, module, provider); ok { + return value + } + var val T + return &val +} + // ModuleProviderContext is a helper interface that is a subset of ModuleContext or BottomUpMutatorContext // for use in ModuleProvider. type ModuleProviderContext interface { diff --git a/android/testing.go b/android/testing.go index 08c8083a6..d2949ec8e 100644 --- a/android/testing.go +++ b/android/testing.go @@ -1197,11 +1197,11 @@ func AndroidMkInfoForTest(t *testing.T, ctx *TestContext, mod Module) *AndroidMk info := OtherModuleProviderOrDefault(ctx, mod, AndroidMkInfoProvider) aconfigUpdateAndroidMkInfos(ctx, mod, info) - commonInfo, _ := OtherModuleProvider(ctx, mod, CommonModuleInfoProvider) - info.PrimaryInfo.fillInEntries(ctx, mod, &commonInfo) + commonInfo := OtherModulePointerProviderOrDefault(ctx, mod, CommonModuleInfoProvider) + info.PrimaryInfo.fillInEntries(ctx, mod, commonInfo) if len(info.ExtraInfo) > 0 { for _, ei := range info.ExtraInfo { - ei.fillInEntries(ctx, mod, &commonInfo) + ei.fillInEntries(ctx, mod, commonInfo) } } diff --git a/android/variable.go b/android/variable.go index c59857ad9..3d5a6ae12 100644 --- a/android/variable.go +++ b/android/variable.go @@ -65,12 +65,6 @@ type variableProperties struct { Enabled proptools.Configurable[bool] `android:"arch_variant,replace_instead_of_append"` } `android:"arch_variant"` - // similar to `Unbundled_build`, but `Always_use_prebuilt_sdks` means that it uses prebuilt - // sdk specifically. - Always_use_prebuilt_sdks struct { - Enabled proptools.Configurable[bool] `android:"arch_variant,replace_instead_of_append"` - } `android:"arch_variant"` - Malloc_low_memory struct { Cflags []string `android:"arch_variant"` Shared_libs []string `android:"arch_variant"` diff --git a/android/visibility.go b/android/visibility.go index 416a3f15f..915368710 100644 --- a/android/visibility.go +++ b/android/visibility.go @@ -551,7 +551,7 @@ func visibilityRuleEnforcer(ctx BottomUpMutatorContext) { rule := effectiveVisibilityRules(ctx.Config(), depQualified) if !rule.matches(qualified) { - ctx.ModuleErrorf("depends on %s which is not visible to this module\nYou may need to add %q to its visibility, %#v", depQualified, "//"+ctx.ModuleDir(), ctx.OtherModuleDependencyTag(dep)) + ctx.ModuleErrorf("depends on %s which is not visible to this module\nYou may need to add %q to its visibility", depQualified, "//"+ctx.ModuleDir()) } }) } diff --git a/apex/apex.go b/apex/apex.go index dc44e5849..c6566e13b 100644 --- a/apex/apex.go +++ b/apex/apex.go @@ -1502,7 +1502,7 @@ func apexFileForJavaModule(ctx android.ModuleContext, module android.Module, jav func apexFileForJavaModuleWithFile(ctx android.ModuleContext, module android.Module, javaInfo *java.JavaInfo, dexImplementationJar android.Path) apexFile { dirInApex := "javalib" - commonInfo := android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) af := newApexFile(ctx, dexImplementationJar, commonInfo.BaseModuleName, dirInApex, javaSharedLib, module) af.jacocoReportClassesFile = javaInfo.JacocoReportClassesFile if lintInfo, ok := android.OtherModuleProvider(ctx, module, java.LintProvider); ok { @@ -1608,7 +1608,7 @@ func apexFileForFilesystem(ctx android.BaseModuleContext, buildFile android.Path // modules. This is used in check* functions below. func (a *apexBundle) WalkPayloadDeps(ctx android.BaseModuleContext, do android.PayloadDepsCallback) { ctx.WalkDepsProxy(func(child, parent android.ModuleProxy) bool { - if !android.OtherModuleProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).CanHaveApexVariants { + if !android.OtherModulePointerProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).CanHaveApexVariants { return false } // Filter-out unwanted depedendencies @@ -1821,7 +1821,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, if _, ok := depTag.(android.ExcludeFromApexContentsTag); ok { return false } - commonInfo := android.OtherModuleProviderOrDefault(ctx, child, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, child, android.CommonModuleInfoProvider) if !commonInfo.Enabled { return false } @@ -1839,7 +1839,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, if ch.IsStubs { ctx.PropertyErrorf(propertyName, "%q is a stub. Remove it from the list.", depName) } - fi := apexFileForNativeLibrary(ctx, child, &commonInfo, ch, vctx.handleSpecialLibs) + fi := apexFileForNativeLibrary(ctx, child, commonInfo, ch, vctx.handleSpecialLibs) fi.isJniLib = isJniLib vctx.filesInfo = append(vctx.filesInfo, fi) // Collect the list of stub-providing libs except: @@ -1856,11 +1856,11 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, case executableTag: if ccInfo, ok := android.OtherModuleProvider(ctx, child, cc.CcInfoProvider); ok { - vctx.filesInfo = append(vctx.filesInfo, apexFileForExecutable(ctx, child, &commonInfo, ccInfo)) + vctx.filesInfo = append(vctx.filesInfo, apexFileForExecutable(ctx, child, commonInfo, ccInfo)) return true // track transitive dependencies } if _, ok := android.OtherModuleProvider(ctx, child, rust.RustInfoProvider); ok { - vctx.filesInfo = append(vctx.filesInfo, apexFileForRustExecutable(ctx, child, &commonInfo)) + vctx.filesInfo = append(vctx.filesInfo, apexFileForRustExecutable(ctx, child, commonInfo)) return true // track transitive dependencies } else { ctx.PropertyErrorf("binaries", @@ -1868,7 +1868,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } case shBinaryTag: if csh, ok := android.OtherModuleProvider(ctx, child, sh.ShBinaryInfoProvider); ok { - vctx.filesInfo = append(vctx.filesInfo, apexFileForShBinary(ctx, child, &commonInfo, &csh)) + vctx.filesInfo = append(vctx.filesInfo, apexFileForShBinary(ctx, child, commonInfo, &csh)) } else { ctx.PropertyErrorf("sh_binaries", "%q is not a sh_binary module", depName) } @@ -1922,7 +1922,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, af.certificate = java.PresignedCertificate vctx.filesInfo = append(vctx.filesInfo, af) } else { - vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, child, &commonInfo, appInfo)...) + vctx.filesInfo = append(vctx.filesInfo, apexFilesForAndroidApp(ctx, child, commonInfo, appInfo)...) if !appInfo.Prebuilt && !appInfo.TestHelperApp { return true // track transitive dependencies } @@ -1969,7 +1969,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } case testTag: if ccInfo, ok := android.OtherModuleProvider(ctx, child, cc.CcInfoProvider); ok { - af := apexFileForExecutable(ctx, child, &commonInfo, ccInfo) + af := apexFileForExecutable(ctx, child, commonInfo, ccInfo) af.class = nativeTest vctx.filesInfo = append(vctx.filesInfo, af) return true // track transitive dependencies @@ -2006,7 +2006,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, // tags used below are private (e.g. `cc.sharedDepTag`). if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) { if ch, ok := android.OtherModuleProvider(ctx, child, cc.LinkableInfoProvider); ok { - af := apexFileForNativeLibrary(ctx, child, &commonInfo, ch, vctx.handleSpecialLibs) + af := apexFileForNativeLibrary(ctx, child, commonInfo, ch, vctx.handleSpecialLibs) af.transitiveDep = true if ch.IsStubs || ch.HasStubsVariants { @@ -2068,7 +2068,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, } linkableInfo := android.OtherModuleProviderOrDefault(ctx, child, cc.LinkableInfoProvider) - af := apexFileForNativeLibrary(ctx, child, &commonInfo, linkableInfo, vctx.handleSpecialLibs) + af := apexFileForNativeLibrary(ctx, child, commonInfo, linkableInfo, vctx.handleSpecialLibs) af.transitiveDep = true vctx.filesInfo = append(vctx.filesInfo, af) return true // track transitive dependencies @@ -2100,7 +2100,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, javaInfo := android.OtherModuleProviderOrDefault(ctx, child, java.JavaInfoProvider) af := apexFileForJavaModule(ctx, child, javaInfo) vctx.filesInfo = append(vctx.filesInfo, af) - if profileAf := apexFileForJavaModuleProfile(ctx, &commonInfo, javaInfo); profileAf != nil { + if profileAf := apexFileForJavaModuleProfile(ctx, commonInfo, javaInfo); profileAf != nil { vctx.filesInfo = append(vctx.filesInfo, *profileAf) } return true // track transitive dependencies @@ -2116,7 +2116,7 @@ func (a *apexBundle) depVisitor(vctx *visitorContext, ctx android.ModuleContext, ctx.ModuleErrorf("unexpected tag %s for indirect dependency %q", android.PrettyPrintTag(depTag), depName) } else if android.IsVintfDepTag(depTag) { if vf, ok := android.OtherModuleProvider(ctx, child, android.VintfFragmentInfoProvider); ok { - apexFile := apexFileForVintfFragment(ctx, child, &commonInfo, &vf) + apexFile := apexFileForVintfFragment(ctx, child, commonInfo, &vf) vctx.filesInfo = append(vctx.filesInfo, apexFile) } } diff --git a/apex/apex_singleton.go b/apex/apex_singleton.go index 0bf4ba75b..797f47b09 100644 --- a/apex/apex_singleton.go +++ b/apex/apex_singleton.go @@ -164,7 +164,7 @@ func (a *apexPrebuiltInfo) GenerateBuildActions(ctx android.SingletonContext) { prebuiltInfo, exists := android.OtherModuleProvider(ctx, m, android.PrebuiltInfoProvider) // Use prebuiltInfoProvider to filter out non apex soong modules. // Use HideFromMake to filter out the unselected variants of a specific apex. - if exists && !android.OtherModuleProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).HideFromMake { + if exists && !android.OtherModulePointerProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).HideFromMake { prebuiltInfos = append(prebuiltInfos, prebuiltInfo) } }) diff --git a/apex/builder.go b/apex/builder.go index 8042a3b88..23c2ed8aa 100644 --- a/apex/builder.go +++ b/apex/builder.go @@ -1111,7 +1111,7 @@ func (a *apexBundle) buildApexDependencyInfo(ctx android.ModuleContext) { // Skip dependencies that are only available to APEXes; they are developed with updatability // in mind and don't need manual approval. - if android.OtherModuleProviderOrDefault(ctx, to, android.CommonModuleInfoProvider).NotAvailableForPlatform { + if android.OtherModulePointerProviderOrDefault(ctx, to, android.CommonModuleInfoProvider).NotAvailableForPlatform { return !externalDep } diff --git a/bloaty/bloaty.go b/bloaty/bloaty.go index a076d47f6..d78a907fb 100644 --- a/bloaty/bloaty.go +++ b/bloaty/bloaty.go @@ -85,7 +85,7 @@ func fileSizesSingleton() android.Singleton { func (singleton *sizesSingleton) GenerateBuildActions(ctx android.SingletonContext) { var deps android.Paths ctx.VisitAllModuleProxies(func(m android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).ExportedToMake { + if !android.OtherModulePointerProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).ExportedToMake { return } filePaths, ok := android.OtherModuleProvider(ctx, m, fileSizeMeasurerKey) @@ -3422,7 +3422,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { return } - commonInfo := android.OtherModuleProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) if commonInfo.Target.Os != ctx.Os() { ctx.ModuleErrorf("OS mismatch between %q (%s) and %q (%s)", ctx.ModuleName(), ctx.Os().Name, depName, dep.Target().Os.Name) return @@ -3676,7 +3676,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { c.sabi.Properties.ReexportedSystemIncludes, depExporterInfo.SystemIncludeDirs.Strings()...) } - makeLibName := MakeLibName(ccInfo, linkableInfo, &commonInfo, commonInfo.BaseModuleName) + libDepTag.makeSuffix + makeLibName := MakeLibName(ccInfo, linkableInfo, commonInfo, commonInfo.BaseModuleName) + libDepTag.makeSuffix switch { case libDepTag.header(): c.Properties.AndroidMkHeaderLibs = append( @@ -3703,7 +3703,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { switch depTag { case runtimeDepTag: c.Properties.AndroidMkRuntimeLibs = append( - c.Properties.AndroidMkRuntimeLibs, MakeLibName(ccInfo, linkableInfo, &commonInfo, + c.Properties.AndroidMkRuntimeLibs, MakeLibName(ccInfo, linkableInfo, commonInfo, commonInfo.BaseModuleName)+libDepTag.makeSuffix) case objDepTag: depPaths.Objs.objFiles = append(depPaths.Objs.objFiles, linkFile.Path()) @@ -3779,7 +3779,7 @@ func ShouldUseStubForApex(ctx android.ModuleContext, parent android.Module, dep // platform APIs, use stubs only when it is from an APEX (and not from // platform) However, for host, ramdisk, vendor_ramdisk, recovery or // bootstrap modules, always link to non-stub variant - isNotInPlatform := android.OtherModuleProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider).NotInPlatform + isNotInPlatform := android.OtherModulePointerProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider).NotInPlatform useStubs = isNotInPlatform && !bootstrap } else { diff --git a/cc/config/arm64_device.go b/cc/config/arm64_device.go index 45b15809f..25edb798d 100644 --- a/cc/config/arm64_device.go +++ b/cc/config/arm64_device.go @@ -53,6 +53,16 @@ var ( "-mbranch-protection=standard", "-fno-stack-protector", }, + "armv9-3a": []string{ + "-march=armv9.3-a", + "-mbranch-protection=standard", + "-fno-stack-protector", + }, + "armv9-4a": []string{ + "-march=armv9.4-a", + "-mbranch-protection=standard", + "-fno-stack-protector", + }, } arm64Ldflags = []string{ diff --git a/cc/fuzz.go b/cc/fuzz.go index ba343876f..79874fc80 100644 --- a/cc/fuzz.go +++ b/cc/fuzz.go @@ -486,7 +486,7 @@ func (s *ccRustFuzzPackager) GenerateBuildActions(ctx android.SingletonContext) sharedLibsInstallDirPrefix = "lib/vendor" } - commonInfo := android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) isHost := commonInfo.Target.Os.Class == android.Host hostOrTargetString := "target" if commonInfo.Target.HostCross { diff --git a/cc/ndk_abi.go b/cc/ndk_abi.go index a59cc11eb..b96a779cb 100644 --- a/cc/ndk_abi.go +++ b/cc/ndk_abi.go @@ -40,7 +40,7 @@ type ndkAbiDumpSingleton struct{} func (n *ndkAbiDumpSingleton) GenerateBuildActions(ctx android.SingletonContext) { var depPaths android.Paths ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } @@ -78,7 +78,7 @@ type ndkAbiDiffSingleton struct{} func (n *ndkAbiDiffSingleton) GenerateBuildActions(ctx android.SingletonContext) { var depPaths android.Paths ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go index 82a19d0d9..16778627f 100644 --- a/cc/ndk_sysroot.go +++ b/cc/ndk_sysroot.go @@ -212,7 +212,7 @@ func (n *ndkSingleton) GenerateBuildActions(ctx android.SingletonContext) { var licensePaths android.Paths ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } diff --git a/cc/sanitize.go b/cc/sanitize.go index b704ef4bf..f0b0308ae 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -1422,6 +1422,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { sanitizers = append(sanitizers, "bool", "integer-divide-by-zero", + "object-size", "return", "returns-nonnull-attribute", "shift-exponent", @@ -1438,10 +1439,6 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { //"shift-base", //"signed-integer-overflow", ) - - if mctx.Config().ReleaseBuildObjectSizeSanitizer() { - sanitizers = append(sanitizers, "object-size") - } } sanitizers = append(sanitizers, sanProps.Misc_undefined...) } diff --git a/cc/tidy.go b/cc/tidy.go index e8e1dc29d..bf273e986 100644 --- a/cc/tidy.go +++ b/cc/tidy.go @@ -220,7 +220,7 @@ func collectTidyObjModuleTargets(ctx android.SingletonContext, module android.Mo // (1) Collect all obj/tidy files into OS-specific groups. ctx.VisitAllModuleVariantProxies(module, func(variant android.ModuleProxy) { - osName := android.OtherModuleProviderOrDefault(ctx, variant, android.CommonModuleInfoProvider).Target.Os.Name + osName := android.OtherModulePointerProviderOrDefault(ctx, variant, android.CommonModuleInfoProvider).Target.Os.Name info := android.OtherModuleProviderOrDefault(ctx, variant, CcObjectInfoProvider) addToOSGroup(osName, info.ObjFiles, allObjFileGroups, subsetObjFileGroups) addToOSGroup(osName, info.TidyFiles, allTidyFileGroups, subsetTidyFileGroups) diff --git a/dexpreopt/config.go b/dexpreopt/config.go index 9cec9dbbd..e57384fd7 100644 --- a/dexpreopt/config.go +++ b/dexpreopt/config.go @@ -464,7 +464,7 @@ func (d dex2oatDependencyTag) AllowDisabledModuleDependency(target android.Modul func (d dex2oatDependencyTag) AllowDisabledModuleDependencyProxy( ctx android.OtherModuleProviderContext, target android.ModuleProxy) bool { - return android.OtherModuleProviderOrDefault( + return android.OtherModulePointerProviderOrDefault( ctx, target, android.CommonModuleInfoProvider).ReplacedByPrebuilt } diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go index 3d8477d62..846e2e5e4 100644 --- a/filesystem/filesystem.go +++ b/filesystem/filesystem.go @@ -1548,7 +1548,7 @@ func (f *filesystem) getLibsForLinkerConfig(ctx android.ModuleContext) ([]androi deps := f.gatherFilteredPackagingSpecs(ctx) ctx.WalkDepsProxy(func(child, parent android.ModuleProxy) bool { - if !android.OtherModuleProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).Enabled { return false } for _, ps := range android.OtherModuleProviderOrDefault( @@ -1569,7 +1569,7 @@ func (f *filesystem) getLibsForLinkerConfig(ctx android.ModuleContext) ([]androi var requireModules []android.ModuleProxy ctx.WalkDepsProxy(func(child, parent android.ModuleProxy) bool { - if !android.OtherModuleProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, child, android.CommonModuleInfoProvider).Enabled { return false } _, parentInPackage := modulesInPackageByModule[parent] diff --git a/filesystem/filesystem_test.go b/filesystem/filesystem_test.go index 6d0b49016..bf7f5b64b 100644 --- a/filesystem/filesystem_test.go +++ b/filesystem/filesystem_test.go @@ -723,26 +723,47 @@ cc_library { // override_android_* modules implicitly override their base module. // If both of these are listed in `deps`, the base module should not be installed. +// Also, required deps should be updated too. func TestOverrideModulesInDeps(t *testing.T) { result := fixture.RunTestWithBp(t, ` + cc_library_shared { + name: "libfoo", + stl: "none", + system_shared_libs: [], + } + cc_library_shared { + name: "libbar", + stl: "none", + system_shared_libs: [], + } android_filesystem { name: "myfilesystem", + deps: ["myapp"], + } + android_filesystem { + name: "myfilesystem_overridden", deps: ["myapp", "myoverrideapp"], } android_app { name: "myapp", platform_apis: true, + required: ["libfoo"], } override_android_app { name: "myoverrideapp", base: "myapp", + required: ["libbar"], } `) partition := result.ModuleForTests(t, "myfilesystem", "android_common") fileList := android.ContentFromFileRuleForTests(t, result.TestContext, partition.Output("fileList")) - android.AssertStringEquals(t, "filesystem with override app", "app/myoverrideapp/myoverrideapp.apk\n", fileList) + android.AssertStringEquals(t, "filesystem without override app", "app/myapp/myapp.apk\nlib64/libfoo.so\n", fileList) + + overriddenPartition := result.ModuleForTests(t, "myfilesystem_overridden", "android_common") + overriddenFileList := android.ContentFromFileRuleForTests(t, result.TestContext, overriddenPartition.Output("fileList")) + android.AssertStringEquals(t, "filesystem with override app", "app/myoverrideapp/myoverrideapp.apk\nlib64/libbar.so\n", overriddenFileList) } func TestRamdiskPartitionSetsDevNodes(t *testing.T) { diff --git a/genrule/genrule.go b/genrule/genrule.go index e976e6b0e..710ec9555 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -112,7 +112,7 @@ func (t hostToolDependencyTag) AllowDisabledModuleDependency(target android.Modu func (t hostToolDependencyTag) AllowDisabledModuleDependencyProxy( ctx android.OtherModuleProviderContext, target android.ModuleProxy) bool { - return android.OtherModuleProviderOrDefault( + return android.OtherModulePointerProviderOrDefault( ctx, target, android.CommonModuleInfoProvider).ReplacedByPrebuilt } @@ -353,7 +353,7 @@ func (g *Module) generateCommonBuildActions(ctx android.ModuleContext) { if h, ok := android.OtherModuleProvider(ctx, module, android.HostToolProviderInfoProvider); ok { // A HostToolProvider provides the path to a tool, which will be copied // into the sandbox. - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { if ctx.Config().AllowMissingDependencies() { ctx.AddMissingDependencies([]string{tool}) } else { diff --git a/java/app.go b/java/app.go index 560129b64..553c65894 100644 --- a/java/app.go +++ b/java/app.go @@ -1233,7 +1233,7 @@ func collectJniDeps(ctx android.ModuleContext, seenModulePaths := make(map[string]bool) ctx.WalkDepsProxy(func(module, parent android.ModuleProxy) bool { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return false } otherName := ctx.OtherModuleName(module) @@ -1253,7 +1253,7 @@ func collectJniDeps(ctx android.ModuleContext, } seenModulePaths[path.String()] = true - commonInfo := android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider) if checkNativeSdkVersion && commonInfo.SdkVersion == "" { ctx.PropertyErrorf("jni_libs", "JNI dependency %q uses platform APIs, but this module does not", otherName) @@ -1316,7 +1316,7 @@ func (a *AndroidApp) buildAppDependencyInfo(ctx android.ModuleContext) { // Skip dependencies that are only available to APEXes; they are developed with updatability // in mind and don't need manual approval. - if android.OtherModuleProviderOrDefault(ctx, to, android.CommonModuleInfoProvider).NotAvailableForPlatform { + if android.OtherModulePointerProviderOrDefault(ctx, to, android.CommonModuleInfoProvider).NotAvailableForPlatform { return true } diff --git a/java/base.go b/java/base.go index 8453a683b..1a12075bc 100644 --- a/java/base.go +++ b/java/base.go @@ -629,7 +629,7 @@ func CheckStableSdkVersion(ctx android.BaseModuleContext, module android.ModuleP return nil } if info.SdkVersion.Kind == android.SdkCorePlatform { - if useLegacyCorePlatformApi(ctx, android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).BaseModuleName) { + if useLegacyCorePlatformApi(ctx, android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).BaseModuleName) { return fmt.Errorf("non stable SDK %v - uses legacy core platform", info.SdkVersion) } else { // Treat stable core platform as stable. diff --git a/java/java.go b/java/java.go index 7f897a04f..dd9f852f0 100644 --- a/java/java.go +++ b/java/java.go @@ -2235,7 +2235,7 @@ func (j *Binary) GenerateAndroidBuildActions(ctx android.ModuleContext) { // install these alongside the java binary. ctx.VisitDirectDepsProxyWithTag(jniInstallTag, func(jni android.ModuleProxy) { // Use the BaseModuleName of the dependency (without any prebuilt_ prefix) - commonInfo, _ := android.OtherModuleProvider(ctx, jni, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, jni, android.CommonModuleInfoProvider) j.androidMkNamesOfJniLibs = append(j.androidMkNamesOfJniLibs, commonInfo.BaseModuleName+":"+commonInfo.Target.Arch.ArchType.Bitness()) }) // Check that native libraries are not listed in `required`. Prompt users to use `jni_libs` instead. diff --git a/java/jdeps.go b/java/jdeps.go index 7ef6c89ee..56142c89b 100644 --- a/java/jdeps.go +++ b/java/jdeps.go @@ -46,7 +46,7 @@ func (j *jdepsGeneratorSingleton) GenerateBuildActions(ctx android.SingletonCont moduleInfos := make(map[string]android.IdeInfo) ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } diff --git a/java/lint.go b/java/lint.go index 61b50dcba..dc1e51ffb 100644 --- a/java/lint.go +++ b/java/lint.go @@ -659,7 +659,7 @@ func (l *lintSingleton) generateLintReportZips(ctx android.SingletonContext) { var outputs []*LintInfo var dirs []string ctx.VisitAllModuleProxies(func(m android.ModuleProxy) { - commonInfo, _ := android.OtherModuleProvider(ctx, m, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, m, android.CommonModuleInfoProvider) if ctx.Config().KatiEnabled() && !commonInfo.ExportedToMake { return } diff --git a/java/platform_compat_config.go b/java/platform_compat_config.go index b2d6ca130..d2ec8bd4f 100644 --- a/java/platform_compat_config.go +++ b/java/platform_compat_config.go @@ -277,7 +277,7 @@ func (p *platformCompatConfigSingleton) GenerateBuildActions(ctx android.Singlet var compatConfigMetadata android.Paths ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } if c, ok := android.OtherModuleProvider(ctx, module, PlatformCompatConfigMetadataInfoProvider); ok { diff --git a/linkerconfig/linkerconfig.go b/linkerconfig/linkerconfig.go index d117c52a8..925d7b163 100644 --- a/linkerconfig/linkerconfig.go +++ b/linkerconfig/linkerconfig.go @@ -127,7 +127,7 @@ func BuildLinkerConfig( for _, m := range requireModules { if _, ok := android.OtherModuleProvider(ctx, m, cc.CcInfoProvider); ok { if android.OtherModuleProviderOrDefault(ctx, m, cc.LinkableInfoProvider).HasStubsVariants && - !android.OtherModuleProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).Host { + !android.OtherModulePointerProviderOrDefault(ctx, m, android.CommonModuleInfoProvider).Host { name := ctx.OtherModuleName(m) if ccInfo, ok := android.OtherModuleProvider(ctx, m, cc.CcInfoProvider); ok && ccInfo.LinkerInfo != nil && ccInfo.LinkerInfo.ImplementationModuleName != nil { name = *ccInfo.LinkerInfo.ImplementationModuleName diff --git a/python/python.go b/python/python.go index e2786b8d6..de21e39bd 100644 --- a/python/python.go +++ b/python/python.go @@ -768,7 +768,7 @@ func (p *PythonLibraryModule) zipSharedLibs(ctx android.ModuleContext, bundleSha Rule: zip, Description: "bundle shared libraries for python binary", Output: srcsZip, - Implicits: paths, + Implicits: paths, Args: map[string]string{ "args": strings.Join(parArgs, " "), }, @@ -776,7 +776,6 @@ func (p *PythonLibraryModule) zipSharedLibs(ctx android.ModuleContext, bundleSha return srcsZip } - // chckForDuplicateOutputPath checks whether outputPath has already been included in map m, which // would result in two files being placed in the same location. // If there is a duplicate path, an error is thrown and true is returned diff --git a/rust/config/arm64_device.go b/rust/config/arm64_device.go index 94a445700..efcd56a7b 100644 --- a/rust/config/arm64_device.go +++ b/rust/config/arm64_device.go @@ -45,6 +45,14 @@ var ( "-Z branch-protection=bti,pac-ret", "-Z stack-protector=none", }, + "armv9-3a": []string{ + "-Z branch-protection=bti,pac-ret", + "-Z stack-protector=none", + }, + "armv9-4a": []string{ + "-Z branch-protection=bti,pac-ret", + "-Z stack-protector=none", + }, } ) diff --git a/rust/doc.go b/rust/doc.go index cf2f8b399..3616c8ed5 100644 --- a/rust/doc.go +++ b/rust/doc.go @@ -38,7 +38,7 @@ func (n *rustdocSingleton) GenerateBuildActions(ctx android.SingletonContext) { FlagWithArg("-D ", docDir.String()) ctx.VisitAllModuleProxies(func(module android.ModuleProxy) { - if !android.OtherModuleProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { + if !android.OtherModulePointerProviderOrDefault(ctx, module, android.CommonModuleInfoProvider).Enabled { return } diff --git a/rust/image.go b/rust/image.go index 51b82893c..aa10a6dfa 100644 --- a/rust/image.go +++ b/rust/image.go @@ -137,7 +137,7 @@ func (mod *Module) InstallInVendor() bool { // Additionally check if this module is inVendor() that means it is a "vendor" variant of a // module. As well as SoC specific modules, vendor variants must be installed to /vendor // unless they have "odm_available: true". - return mod.InVendor() && !mod.VendorVariantToOdm() + return mod.HasVendorVariant() && mod.InVendor() && !mod.VendorVariantToOdm() } func (mod *Module) InstallInOdm() bool { diff --git a/rust/rust.go b/rust/rust.go index 5f3d7a922..54b5d92e3 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -1480,10 +1480,10 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { rustInfo, hasRustInfo := android.OtherModuleProvider(ctx, dep, RustInfoProvider) ccInfo, _ := android.OtherModuleProvider(ctx, dep, cc.CcInfoProvider) linkableInfo, hasLinkableInfo := android.OtherModuleProvider(ctx, dep, cc.LinkableInfoProvider) - commonInfo := android.OtherModuleProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) if hasRustInfo && !linkableInfo.Static && !linkableInfo.Shared { //Handle Rust Modules - makeLibName := rustMakeLibName(rustInfo, linkableInfo, &commonInfo, depName+rustInfo.RustSubName) + makeLibName := rustMakeLibName(rustInfo, linkableInfo, commonInfo, depName+rustInfo.RustSubName) switch { case depTag == dylibDepTag: @@ -1628,7 +1628,7 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } } else if hasLinkableInfo { //Handle C dependencies - makeLibName := cc.MakeLibName(ccInfo, linkableInfo, &commonInfo, depName) + makeLibName := cc.MakeLibName(ccInfo, linkableInfo, commonInfo, depName) if !hasRustInfo { if commonInfo.Target.Os != ctx.Os() { ctx.ModuleErrorf("OS mismatch between %q and %q", ctx.ModuleName(), depName) diff --git a/rust/test.go b/rust/test.go index 2fed0d62e..cedced260 100644 --- a/rust/test.go +++ b/rust/test.go @@ -165,7 +165,7 @@ func (test *testDecorator) install(ctx ModuleContext) { if linkableDep.OutputFile.Valid() { // Copy the output in "lib[64]" so that it's compatible with // the default rpath values. - commonInfo := android.OtherModuleProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) libDir := "lib" if commonInfo.Target.Arch.ArchType.Multilib == "lib64" { libDir = "lib64" diff --git a/sh/sh_binary.go b/sh/sh_binary.go index 7041642e0..57f5ad1c7 100644 --- a/sh/sh_binary.go +++ b/sh/sh_binary.go @@ -510,7 +510,7 @@ func (s *ShTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { // so that it's compatible with the default rpath values. var relPath string linkableInfo := android.OtherModuleProviderOrDefault(ctx, dep, cc.LinkableInfoProvider) - commonInfo := android.OtherModuleProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) + commonInfo := android.OtherModulePointerProviderOrDefault(ctx, dep, android.CommonModuleInfoProvider) if commonInfo.Target.Arch.ArchType.Multilib == "lib64" { relPath = filepath.Join("lib64", linkableInfo.OutputFile.Path().Base()) @@ -613,6 +613,8 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries { entries.AddStrings("LOCAL_EXTRA_FULL_TEST_CONFIGS", s.extraTestConfigs.Strings()...) } + entries.SetBoolIfTrue("LOCAL_DISABLE_AUTO_GENERATE_TEST_CONFIG", !proptools.BoolDefault(s.testProperties.Auto_gen_config, true)) + s.testProperties.Test_options.SetAndroidMkEntries(entries) }, }, |