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

Commit 4da4ccc2 authored by Justin Yun's avatar Justin Yun
Browse files

Add write_if_changed property to genrule

When "write_if_changed: true" is set, it will call restat for ninja.
With this option the output file will be copied only if it is changed.

Bug: 290130959
Test: ninja rule include "--write-if-changed"
Change-Id: I8bd77b43b22eb0115e0bdc73718b2d6997d92652
parent 06ef4d95
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -151,6 +151,9 @@ type generatorProperties struct {

	// input files to exclude
	Exclude_srcs []string `android:"path,arch_variant"`

	// Enable restat to update the output only if the output is changed
	Write_if_changed *bool
}

type Module struct {
@@ -467,6 +470,9 @@ func (g *Module) generateCommonBuildActions(ctx android.ModuleContext) {

		// Use a RuleBuilder to create a rule that runs the command inside an sbox sandbox.
		rule := getSandboxedRuleBuilder(ctx, android.NewRuleBuilder(pctx, ctx).Sbox(task.genDir, manifestPath))
		if Bool(g.properties.Write_if_changed) {
			rule.Restat()
		}
		cmd := rule.Command()

		for _, out := range task.out {