summaryrefslogtreecommitdiff
path: root/linkerconfig
diff options
context:
space:
mode:
author Cole Faust <colefaust@google.com> 2024-12-13 14:10:31 -0800
committer Cole Faust <colefaust@google.com> 2024-12-13 14:47:21 -0800
commitfee270187d49304460e1db46c0a29fd0e97a832c (patch)
tree13f26f974d962b772a5f2d3d295933e2946d8734 /linkerconfig
parentc6f264854e38c6f4964409902eb20832d764d2d4 (diff)
Make BuildLinkerConfig run in its own action
We should probably do this change for more parts of the filesystem RuleBuilder. Moving the linker config action out of the filesystem rulebuilder allows it to run in parallel with opther actions, and not rerun every time the filesystem is rebuilt. Bug: 384091387 Test: Presubmits Change-Id: Ic7305c555260fb5d9900c6c709b6c81dc0708d2b
Diffstat (limited to 'linkerconfig')
-rw-r--r--linkerconfig/linkerconfig.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/linkerconfig/linkerconfig.go b/linkerconfig/linkerconfig.go
index d42287113..7684db288 100644
--- a/linkerconfig/linkerconfig.go
+++ b/linkerconfig/linkerconfig.go
@@ -76,9 +76,7 @@ func (l *linkerConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) {
input := android.PathForModuleSrc(ctx, android.String(l.properties.Src))
output := android.PathForModuleOut(ctx, "linker.config.pb").OutputPath
- builder := android.NewRuleBuilder(pctx, ctx)
- BuildLinkerConfig(ctx, builder, android.Paths{input}, nil, nil, output)
- builder.Build("conv_linker_config", "Generate linker config protobuf "+output.String())
+ BuildLinkerConfig(ctx, android.Paths{input}, nil, nil, output)
l.outputFilePath = output
l.installDirPath = android.PathForModuleInstall(ctx, "etc")
@@ -90,10 +88,15 @@ func (l *linkerConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) {
ctx.SetOutputFiles(android.Paths{l.outputFilePath}, "")
}
-func BuildLinkerConfig(ctx android.ModuleContext, builder *android.RuleBuilder,
- inputs android.Paths, provideModules []android.Module, requireModules []android.Module, output android.OutputPath) {
-
+func BuildLinkerConfig(
+ ctx android.ModuleContext,
+ inputs android.Paths,
+ provideModules []android.Module,
+ requireModules []android.Module,
+ output android.WritablePath,
+) {
// First, convert the input json to protobuf format
+ builder := android.NewRuleBuilder(pctx, ctx)
interimOutput := android.PathForModuleOut(ctx, "temp.pb")
cmd := builder.Command().
BuiltTool("conv_linker_config").
@@ -157,6 +160,7 @@ func BuildLinkerConfig(ctx android.ModuleContext, builder *android.RuleBuilder,
builder.Temporary(interimOutput)
builder.DeleteTemporaryFiles()
+ builder.Build("conv_linker_config_"+output.String(), "Generate linker config protobuf "+output.String())
}
// linker_config generates protobuf file from json file. This protobuf file will be used from