Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac65c699 authored by Mathew Inwood's avatar Mathew Inwood Committed by Gerrit Code Review
Browse files

Merge "Singleton build rule for merged compat config."

parents 30d48768 4d0c19c2
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -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)