1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package testing
import (
"android/soong/android"
)
const fileContainingCodeMetadataFilePaths = "all_code_metadata_paths.rsp"
const allCodeMetadataFile = "all_code_metadata.pb"
func AllCodeMetadataFactory() android.Singleton {
return &allCodeMetadataSingleton{}
}
type allCodeMetadataSingleton struct {
// Path where the collected metadata is stored after successful validation.
outputPath android.OutputPath
}
func (this *allCodeMetadataSingleton) GenerateBuildActions(ctx android.SingletonContext) {
var intermediateMetadataPaths android.Paths
ctx.VisitAllModules(
func(module android.Module) {
if metadata, ok := android.SingletonModuleProvider(ctx, module, CodeMetadataProviderKey); ok {
intermediateMetadataPaths = append(intermediateMetadataPaths, metadata.IntermediatePath)
}
},
)
rspFile := android.PathForOutput(ctx, fileContainingCodeMetadataFilePaths)
this.outputPath = android.PathForOutput(ctx, ownershipDirectory, allCodeMetadataFile)
rule := android.NewRuleBuilder(pctx, ctx)
cmd := rule.Command().
BuiltTool("metadata").
FlagWithArg("-rule ", "code_metadata").
FlagWithRspFileInputList("-inputFile ", rspFile, intermediateMetadataPaths)
cmd.FlagWithOutput("-outputFile ", this.outputPath)
rule.Build("all_code_metadata_rule", "Generate all code metadata")
ctx.Phony("all_code_metadata", this.outputPath)
}
func (this *allCodeMetadataSingleton) MakeVars(ctx android.MakeVarsContext) {
ctx.DistForGoal("code_metadata", this.outputPath)
}
|