xsdc: add a genrule so that the xsd can be used as 'data' in tests
Bug: 146349835
Test: 1. patch aosp/1186184
2. $ m -j VtsHalAudioEffectV5_0TargetTest
3. check audio_effects_config_V5_0.xsd in
VtsHalAudioEffectV5_0TargetTest
Change-Id: I619d8b78ecbed2c2db5bb4248c652786de616782
diff --git a/build/xsdc.go b/build/xsdc.go
index f66476b..37f0440 100644
--- a/build/xsdc.go
+++ b/build/xsdc.go
@@ -52,6 +52,11 @@
CommandDeps: []string{"${xsdcCmd}", "${config.SoongZipCmd}"},
Description: "xsdc C++ ${in} => ${out}",
}, "pkgName", "outDir")
+
+ xsdConfigRule = pctx.StaticRule("xsdConfigRule", blueprint.RuleParams{
+ Command: "cp -f ${in} ${output}",
+ Description: "copy the xsd file: ${in} => ${output}",
+ }, "output")
)
type xsdConfigProperties struct {
@@ -71,8 +76,13 @@
genOutputs_h android.WritablePath
docsPath android.Path
+
+ xsdConfigPath android.OptionalPath
+ genOutputs android.Paths
}
+var _ android.SourceFileProducer = (*xsdConfig)(nil)
+
type ApiToCheck struct {
Api_file *string
Removed_api_file *string
@@ -99,7 +109,7 @@
}
func (module *xsdConfig) Srcs() android.Paths {
- return android.Paths{module.genOutputs_j}
+ return append(module.genOutputs, module.genOutputs_j)
}
func (module *xsdConfig) GeneratedDeps() android.Paths {
@@ -114,6 +124,24 @@
android.ExtractSourcesDeps(ctx, module.properties.Srcs)
}
+func (module *xsdConfig) generateXsdConfig(ctx android.ModuleContext) {
+ if !module.xsdConfigPath.Valid() {
+ return
+ }
+
+ output := android.PathForModuleGen(ctx, module.Name()+".xsd")
+ module.genOutputs = append(module.genOutputs, output)
+
+ ctx.ModuleBuild(pctx, android.ModuleBuildParams{
+ Rule: xsdConfigRule,
+ Input: module.xsdConfigPath.Path(),
+ Output: output,
+ Args: map[string]string{
+ "output": output.String(),
+ },
+ })
+}
+
func (module *xsdConfig) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if len(module.properties.Srcs) != 1 {
ctx.PropertyErrorf("srcs", "xsd_config must be one src")
@@ -160,6 +188,8 @@
"outDir": android.PathForModuleGen(ctx, "cpp").String(),
},
})
+ module.xsdConfigPath = android.ExistentPathForSource(ctx, xsdFile.String())
+ module.generateXsdConfig(ctx)
}
func xsdConfigMutator(mctx android.TopDownMutatorContext) {