Singleton build rule for merged compat config.
This creates a single build artifact with all compat config from the build. Test: m out/soong/compat_config/merged_compat_config.xml Bug: 144927670 Change-Id: Ie60575469c22c201cf1f4d4c187c03c7212dd26b
This commit is contained in:
parent
431b8a2fdd
commit
4d0c19c271
|
@ -19,9 +19,14 @@ import (
|
|||
)
|
||||
|
||||
func init() {
|
||||
android.RegisterSingletonType("platform_compat_config_singleton", platformCompatConfigSingletonFactory)
|
||||
android.RegisterModuleType("platform_compat_config", platformCompatConfigFactory)
|
||||
}
|
||||
|
||||
type platformCompatConfigSingleton struct {
|
||||
metadata android.Path
|
||||
}
|
||||
|
||||
type platformCompatConfigProperties struct {
|
||||
Src *string `android:"path"`
|
||||
}
|
||||
|
@ -35,6 +40,46 @@ type platformCompatConfig struct {
|
|||
metadataFile android.OutputPath
|
||||
}
|
||||
|
||||
func (p *platformCompatConfig) compatConfigMetadata() android.OutputPath {
|
||||
return p.metadataFile
|
||||
}
|
||||
|
||||
type platformCompatConfigIntf interface {
|
||||
compatConfigMetadata() android.OutputPath
|
||||
}
|
||||
|
||||
var _ platformCompatConfigIntf = (*platformCompatConfig)(nil)
|
||||
|
||||
// compat singleton rules
|
||||
func (p *platformCompatConfigSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
||||
|
||||
var compatConfigMetadata android.Paths
|
||||
|
||||
ctx.VisitAllModules(func(module android.Module) {
|
||||
if c, ok := module.(platformCompatConfigIntf); ok {
|
||||
metadata := c.compatConfigMetadata()
|
||||
compatConfigMetadata = append(compatConfigMetadata, metadata)
|
||||
}
|
||||
})
|
||||
|
||||
if compatConfigMetadata == nil {
|
||||
// nothing to do.
|
||||
return
|
||||
}
|
||||
|
||||
rule := android.NewRuleBuilder()
|
||||
outputPath := android.PathForOutput(ctx, "compat_config", "merged_compat_config.xml")
|
||||
|
||||
rule.Command().
|
||||
BuiltTool(ctx, "process-compat-config").
|
||||
FlagForEachInput("--xml ", compatConfigMetadata).
|
||||
FlagWithOutput("--merged-config ", outputPath)
|
||||
|
||||
rule.Build(pctx, ctx, "merged-compat-config", "Merge compat config")
|
||||
|
||||
p.metadata = outputPath
|
||||
}
|
||||
|
||||
func (p *platformCompatConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
rule := android.NewRuleBuilder()
|
||||
|
||||
|
@ -69,6 +114,10 @@ func (p *platformCompatConfig) AndroidMkEntries() []android.AndroidMkEntries {
|
|||
}}
|
||||
}
|
||||
|
||||
func platformCompatConfigSingletonFactory() android.Singleton {
|
||||
return &platformCompatConfigSingleton{}
|
||||
}
|
||||
|
||||
func platformCompatConfigFactory() android.Module {
|
||||
module := &platformCompatConfig{}
|
||||
module.AddProperties(&module.properties)
|
||||
|
|
Loading…
Reference in New Issue