summaryrefslogtreecommitdiff
path: root/soong/bindings_generator.go
diff options
context:
space:
mode:
Diffstat (limited to 'soong/bindings_generator.go')
-rw-r--r--soong/bindings_generator.go90
1 files changed, 84 insertions, 6 deletions
diff --git a/soong/bindings_generator.go b/soong/bindings_generator.go
index 2c5e3f672e..7ff98262ed 100644
--- a/soong/bindings_generator.go
+++ b/soong/bindings_generator.go
@@ -12,6 +12,7 @@ import (
)
func init() {
+ android.RegisterModuleType("generate_mojom_downgraded_files", mojomDowngradedFilesFactory)
android.RegisterModuleType("generate_mojom_pickles", mojomPicklesFactory)
android.RegisterModuleType("generate_mojom_headers", mojomHeadersFactory)
android.RegisterModuleType("generate_mojom_srcs", mojomSrcsFactory)
@@ -22,8 +23,19 @@ var (
pctx = android.NewPackageContext("android/soong/external/libchrome")
mojomBindingsGenerator = pctx.HostBinToolVariable("mojomBindingsGenerator", "mojom_bindings_generator")
+ mojomTypesDowngrader = pctx.HostBinToolVariable("mojomTypesDowngrader", "mojom_types_downgrader")
mergeZips = pctx.HostBinToolVariable("mergeZips", "merge_zips")
+ downgradeMojomTypesRule = pctx.StaticRule("downgradeMojomTypesRule", blueprint.RuleParams{
+ Command: `${mojomTypesDowngrader}
+ ${in}
+ --outdir ${outDir}`,
+ CommandDeps: []string{
+ "${mojomTypesDowngrader}",
+ },
+ Description: "Downgrade mojom files $in => $out",
+ }, "outDir")
+
generateMojomPicklesRule = pctx.StaticRule("generateMojomPicklesRule", blueprint.RuleParams{
Command: `${mojomBindingsGenerator}
--use_bundled_pylibs parse
@@ -65,6 +77,72 @@ var (
})
)
+type mojomDowngradedFilesProperties struct {
+ // list of input files
+ Srcs []string
+}
+
+type mojomDowngradedFiles struct {
+ android.ModuleBase
+
+ properties mojomDowngradedFilesProperties
+
+ generatedSrcs android.Paths
+ outDir android.Path
+}
+
+var _ genrule.SourceFileGenerator = (*mojomDowngradedFiles)(nil)
+
+func (m *mojomDowngradedFiles) DepsMutator(ctx android.BottomUpMutatorContext) {
+ android.ExtractSourcesDeps(ctx, m.properties.Srcs)
+}
+
+func (m *mojomDowngradedFiles) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+ m.outDir = android.PathForModuleGen(ctx, "")
+
+ for _, in := range ctx.ExpandSources(m.properties.Srcs, nil) {
+ if !strings.HasSuffix(in.Rel(), ".mojom") {
+ ctx.PropertyErrorf("srcs", "Source is not a .mojom file: %s", in.Rel())
+ continue
+ }
+
+ out := android.PathForModuleGen(ctx, in.Rel())
+ m.generatedSrcs = append(m.generatedSrcs, out)
+
+ ctx.ModuleBuild(pctx, android.ModuleBuildParams{
+ Rule: downgradeMojomTypesRule,
+ Input: in,
+ Output: out,
+ Args: map[string]string{
+ "outDir": path.Dir(out.String()),
+ },
+ })
+ }
+}
+
+func (m *mojomDowngradedFiles) GeneratedHeaderDirs() android.Paths {
+ return nil
+}
+
+func (m *mojomDowngradedFiles) GeneratedDeps() android.Paths {
+ return append(android.Paths{}, m.generatedSrcs...)
+}
+
+func (m *mojomDowngradedFiles) GeneratedSourceFiles() android.Paths {
+ return append(android.Paths{}, m.generatedSrcs...)
+}
+
+func (m *mojomDowngradedFiles) Srcs() android.Paths {
+ return append(android.Paths{}, m.generatedSrcs...)
+}
+
+func mojomDowngradedFilesFactory() android.Module {
+ m := &mojomDowngradedFiles{}
+ m.AddProperties(&m.properties)
+ android.InitAndroidModule(m)
+ return m
+}
+
type mojomPicklesProperties struct {
// list of input files
Srcs []string
@@ -88,13 +166,14 @@ func (m *mojomPickles) DepsMutator(ctx android.BottomUpMutatorContext) {
func (m *mojomPickles) GenerateAndroidBuildActions(ctx android.ModuleContext) {
m.outDir = android.PathForModuleGen(ctx, "")
- packagePath := android.PathForModuleSrc(ctx, "")
-
for _, in := range ctx.ExpandSources(m.properties.Srcs, nil) {
if !strings.HasSuffix(in.Rel(), ".mojom") {
ctx.PropertyErrorf("srcs", "Source is not a .mojom file: %s", in.Rel())
continue
}
+
+ srcRoot := strings.TrimSuffix(in.String(), in.Rel())
+
relStem := strings.TrimSuffix(in.Rel(), ".mojom")
out := android.PathForModuleGen(ctx, relStem+".p")
@@ -105,9 +184,8 @@ func (m *mojomPickles) GenerateAndroidBuildActions(ctx android.ModuleContext) {
Input: in,
Output: out,
Args: map[string]string{
- "package": packagePath.Rel(),
+ "package": srcRoot,
"outDir": m.outDir.String(),
- "flags": fmt.Sprintf("-I=%s:%s", packagePath, packagePath),
},
})
}
@@ -237,7 +315,6 @@ func (p *mojomGenerationProperties) generateBuildActions(
mojomGenerator string,
descriptions []mojomSrcsRuleDescription,
) android.Paths {
- packageName := android.PathForModuleSrc(ctx, "").Rel()
outDir := android.PathForModuleGen(ctx, "")
implicitDeps := p.implicitDeps(ctx)
templateDir := p.templateDir(ctx)
@@ -249,6 +326,7 @@ func (p *mojomGenerationProperties) generateBuildActions(
continue
}
relStem := strings.TrimSuffix(in.Rel(), ".mojom")
+ srcRoot := strings.TrimSuffix(in.String(), in.Rel())
for _, description := range descriptions {
outs := android.WritablePaths{}
@@ -264,7 +342,7 @@ func (p *mojomGenerationProperties) generateBuildActions(
Outputs: outs,
Args: map[string]string{
"mojomGenerator": mojomGenerator,
- "package": packageName,
+ "package": srcRoot,
"flags": fmt.Sprintf("%s %s", p.flags(ctx), description.extraFlags),
"outDir": outDir.String(),
"templateDir": templateDir,