diff options
| -rw-r--r-- | android/license.go | 24 | ||||
| -rw-r--r-- | android/license_kind.go | 14 | ||||
| -rw-r--r-- | android/licenses.go | 26 | ||||
| -rw-r--r-- | android/module.go | 10 | ||||
| -rw-r--r-- | android/vintf_data.go | 1 | ||||
| -rw-r--r-- | cc/strip.go | 6 | ||||
| -rw-r--r-- | sdk/update.go | 2 | ||||
| -rw-r--r-- | ui/build/config.go | 7 | ||||
| -rw-r--r-- | ui/build/ninja.go | 12 |
9 files changed, 75 insertions, 27 deletions
diff --git a/android/license.go b/android/license.go index 5bffc2519..ffda58b37 100644 --- a/android/license.go +++ b/android/license.go @@ -18,6 +18,16 @@ import ( "github.com/google/blueprint" ) +type LicenseInfo struct { + EffectiveLicenses []string + PackageName *string + EffectiveLicenseText NamedPaths + EffectiveLicenseKinds []string + EffectiveLicenseConditions []string +} + +var LicenseInfoProvider = blueprint.NewProvider[LicenseInfo]() + type licenseKindDependencyTag struct { blueprint.BaseDependencyTag } @@ -71,14 +81,22 @@ func (m *licenseModule) GenerateAndroidBuildActions(ctx ModuleContext) { // license modules have no licenses, but license_kinds must refer to license_kind modules mergeStringProps(&m.base().commonProperties.Effective_licenses, ctx.ModuleName()) namePathProps(&m.base().commonProperties.Effective_license_text, m.properties.Package_name, PathsForModuleSrc(ctx, m.properties.License_text)...) - for _, module := range ctx.GetDirectDepsWithTag(licenseKindTag) { - if lk, ok := module.(*licenseKindModule); ok { - mergeStringProps(&m.base().commonProperties.Effective_license_conditions, lk.properties.Conditions...) + for _, module := range ctx.GetDirectDepsProxyWithTag(licenseKindTag) { + if lk, ok := OtherModuleProvider(ctx, module, LicenseKindInfoProvider); ok { + mergeStringProps(&m.base().commonProperties.Effective_license_conditions, lk.Conditions...) mergeStringProps(&m.base().commonProperties.Effective_license_kinds, ctx.OtherModuleName(module)) } else { ctx.ModuleErrorf("license_kinds property %q is not a license_kind module", ctx.OtherModuleName(module)) } } + + SetProvider(ctx, LicenseInfoProvider, LicenseInfo{ + EffectiveLicenses: m.base().commonProperties.Effective_licenses, + PackageName: m.properties.Package_name, + EffectiveLicenseText: m.base().commonProperties.Effective_license_text, + EffectiveLicenseKinds: m.base().commonProperties.Effective_license_kinds, + EffectiveLicenseConditions: m.base().commonProperties.Effective_license_conditions, + }) } func LicenseFactory() Module { diff --git a/android/license_kind.go b/android/license_kind.go index 838deddd2..1ca695449 100644 --- a/android/license_kind.go +++ b/android/license_kind.go @@ -14,6 +14,14 @@ package android +import "github.com/google/blueprint" + +type LicenseKindInfo struct { + Conditions []string +} + +var LicenseKindInfoProvider = blueprint.NewProvider[LicenseKindInfo]() + func init() { RegisterLicenseKindBuildComponents(InitRegistrationContext) } @@ -43,8 +51,10 @@ func (m *licenseKindModule) DepsMutator(ctx BottomUpMutatorContext) { // Nothing to do. } -func (m *licenseKindModule) GenerateAndroidBuildActions(ModuleContext) { - // Nothing to do. +func (m *licenseKindModule) GenerateAndroidBuildActions(ctx ModuleContext) { + SetProvider(ctx, LicenseKindInfoProvider, LicenseKindInfo{ + Conditions: m.properties.Conditions, + }) } func LicenseKindFactory() Module { diff --git a/android/licenses.go b/android/licenses.go index 53d055588..77f563f8c 100644 --- a/android/licenses.go +++ b/android/licenses.go @@ -227,16 +227,16 @@ func licensesPropertyFlattener(ctx ModuleContext) { } var licenses []string - for _, module := range ctx.GetDirectDepsWithTag(licensesTag) { - if l, ok := module.(*licenseModule); ok { + for _, module := range ctx.GetDirectDepsProxyWithTag(licensesTag) { + if l, ok := OtherModuleProvider(ctx, module, LicenseInfoProvider); ok { licenses = append(licenses, ctx.OtherModuleName(module)) - if m.base().commonProperties.Effective_package_name == nil && l.properties.Package_name != nil { - m.base().commonProperties.Effective_package_name = l.properties.Package_name + if m.base().commonProperties.Effective_package_name == nil && l.PackageName != nil { + m.base().commonProperties.Effective_package_name = l.PackageName } - mergeStringProps(&m.base().commonProperties.Effective_licenses, module.base().commonProperties.Effective_licenses...) - mergeNamedPathProps(&m.base().commonProperties.Effective_license_text, module.base().commonProperties.Effective_license_text...) - mergeStringProps(&m.base().commonProperties.Effective_license_kinds, module.base().commonProperties.Effective_license_kinds...) - mergeStringProps(&m.base().commonProperties.Effective_license_conditions, module.base().commonProperties.Effective_license_conditions...) + mergeStringProps(&m.base().commonProperties.Effective_licenses, l.EffectiveLicenses...) + mergeNamedPathProps(&m.base().commonProperties.Effective_license_text, l.EffectiveLicenseText...) + mergeStringProps(&m.base().commonProperties.Effective_license_kinds, l.EffectiveLicenseKinds...) + mergeStringProps(&m.base().commonProperties.Effective_license_conditions, l.EffectiveLicenseConditions...) } else { propertyName := "licenses" primaryProperty := m.base().primaryLicensesProperty @@ -248,10 +248,10 @@ func licensesPropertyFlattener(ctx ModuleContext) { } // Make the license information available for other modules. - licenseInfo := LicenseInfo{ + licenseInfo := LicensesInfo{ Licenses: licenses, } - SetProvider(ctx, LicenseInfoProvider, licenseInfo) + SetProvider(ctx, LicensesInfoProvider, licenseInfo) } // Update a property string array with a distinct union of its values and a list of new values. @@ -336,14 +336,14 @@ func exemptFromRequiredApplicableLicensesProperty(module Module) bool { return true } -// LicenseInfo contains information about licenses for a specific module. -type LicenseInfo struct { +// LicensesInfo contains information about licenses for a specific module. +type LicensesInfo struct { // The list of license modules this depends upon, either explicitly or through default package // configuration. Licenses []string } -var LicenseInfoProvider = blueprint.NewProvider[LicenseInfo]() +var LicensesInfoProvider = blueprint.NewProvider[LicensesInfo]() func init() { RegisterMakeVarsProvider(pctx, licensesMakeVarsProvider) diff --git a/android/module.go b/android/module.go index a58057e43..c81380eea 100644 --- a/android/module.go +++ b/android/module.go @@ -1655,6 +1655,7 @@ func (m *ModuleBase) generateVariantTarget(ctx *moduleContext) { func (m *ModuleBase) generateModuleTarget(ctx *moduleContext) { var allInstalledFiles InstallPaths var allCheckbuildTargets Paths + var alloutputFiles Paths ctx.VisitAllModuleVariantProxies(func(module ModuleProxy) { var checkbuildTarget Path var uncheckedModule bool @@ -1671,6 +1672,9 @@ func (m *ModuleBase) generateModuleTarget(ctx *moduleContext) { uncheckedModule = info.UncheckedModule skipAndroidMkProcessing = OtherModuleProviderOrDefault(ctx, module, CommonModuleInfoKey).SkipAndroidMkProcessing } + if outputFiles, err := outputFilesForModule(ctx, module, ""); err == nil { + alloutputFiles = append(alloutputFiles, outputFiles...) + } // A module's -checkbuild phony targets should // not be created if the module is not exported to make. // Those could depend on the build target and fail to compile @@ -1702,6 +1706,12 @@ func (m *ModuleBase) generateModuleTarget(ctx *moduleContext) { deps = append(deps, PathForPhony(ctx, name)) } + if len(alloutputFiles) > 0 { + name := namespacePrefix + ctx.ModuleName() + "-outputs" + ctx.Phony(name, alloutputFiles...) + deps = append(deps, PathForPhony(ctx, name)) + } + if len(deps) > 0 { suffix := "" if ctx.Config().KatiEnabled() { diff --git a/android/vintf_data.go b/android/vintf_data.go index 401f4d2e5..2909817d3 100644 --- a/android/vintf_data.go +++ b/android/vintf_data.go @@ -140,6 +140,7 @@ func (m *vintfDataRule) GenerateAndroidBuildActions(ctx ModuleContext) { // Process vintf fragment source file with assemble_vintf tool builder.Command(). + Implicits(inputPaths). Flags(assembleVintfEnvs). BuiltTool("assemble_vintf"). FlagWithArg("-i ", strings.Join(inputPaths.Strings(), ":")). diff --git a/cc/strip.go b/cc/strip.go index b1f34bb89..36c0c489a 100644 --- a/cc/strip.go +++ b/cc/strip.go @@ -52,11 +52,7 @@ type Stripper struct { // NeedsStrip determines if stripping is required for a module. func (stripper *Stripper) NeedsStrip(actx android.ModuleContext) bool { forceDisable := Bool(stripper.StripProperties.Strip.None) - defaultEnable := (!actx.Config().KatiEnabled() || actx.Device()) - forceEnable := Bool(stripper.StripProperties.Strip.All) || - Bool(stripper.StripProperties.Strip.Keep_symbols) || - Bool(stripper.StripProperties.Strip.Keep_symbols_and_debug_frame) - return !forceDisable && (forceEnable || defaultEnable) + return !forceDisable } func (stripper *Stripper) strip(actx android.ModuleContext, in android.Path, out android.ModuleOutPath, diff --git a/sdk/update.go b/sdk/update.go index 5a899a234..00352cb1d 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -1145,7 +1145,7 @@ func (s *snapshotBuilder) AddPrebuiltModule(member android.SdkMember, moduleType // The licenses are the same for all variants. mctx := s.ctx - licenseInfo, _ := android.OtherModuleProvider(mctx, variant, android.LicenseInfoProvider) + licenseInfo, _ := android.OtherModuleProvider(mctx, variant, android.LicensesInfoProvider) if len(licenseInfo.Licenses) > 0 { m.AddPropertyWithTag("licenses", licenseInfo.Licenses, s.OptionalSdkMemberReferencePropertyTag()) } diff --git a/ui/build/config.go b/ui/build/config.go index 8b73f9ff7..84e400566 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -63,6 +63,7 @@ const ( NINJA_NINJA NINJA_N2 NINJA_SISO + NINJA_NINJAGO ) type Config struct{ *configImpl } @@ -324,6 +325,8 @@ func NewConfig(ctx Context, args ...string) Config { ret.ninjaCommand = NINJA_N2 case "siso": ret.ninjaCommand = NINJA_SISO + case "ninjago": + ret.ninjaCommand = NINJA_NINJAGO default: if os.Getenv("SOONG_USE_N2") == "true" { ret.ninjaCommand = NINJA_N2 @@ -1345,6 +1348,10 @@ func (c *configImpl) canSupportRBE() bool { } func (c *configImpl) UseABFS() bool { + if c.ninjaCommand == NINJA_NINJAGO { + return true + } + if v, ok := c.environ.Get("NO_ABFS"); ok { v = strings.ToLower(strings.TrimSpace(v)) if v == "true" || v == "1" { diff --git a/ui/build/ninja.go b/ui/build/ninja.go index b0c9c07d9..1d4285f2c 100644 --- a/ui/build/ninja.go +++ b/ui/build/ninja.go @@ -76,7 +76,7 @@ func runNinjaForBuild(ctx Context, config Config) { //"--frontend-file", fifo, } default: - // NINJA_NINJA is the default. + // NINJA_NINJA or NINJA_NINJAGO. executable = config.NinjaBin() args = []string{ "-d", "keepdepfile", @@ -351,12 +351,18 @@ func (c *ninjaStucknessChecker) check(ctx Context, config Config) { } // Constructs and runs the Ninja command line to get the inputs of a goal. -// For now, this will always run ninja, because ninjago, n2 and siso don't have the +// For n2 and siso, this will always run ninja, because they don't have the // `-t inputs` command. This command will use the inputs command's -d option, // to use the dep file iff ninja was the executor. For other executors, the // results will be wrong. func runNinjaInputs(ctx Context, config Config, goal string) ([]string, error) { - executable := config.PrebuiltBuildTool("ninja") + var executable string + switch config.ninjaCommand { + case NINJA_N2, NINJA_SISO: + executable = config.PrebuiltBuildTool("ninja") + default: + executable = config.NinjaBin() + } args := []string{ "-f", |