diff options
author | hscham <hscham@google.com> | 2020-06-20 03:51:42 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-20 03:51:42 +0000 |
commit | e871b0b6badd9c8b977f470badb533b78a2812d5 (patch) | |
tree | ba3df2215e05ba322e270f10862463044c6c32c5 /soong/bindings_generator.go | |
parent | 8bba963f0c9004ceb5bad8fffd67600c07618818 (diff) | |
parent | 631a6e103bb712300987e8a0e00717c00a72cf3a (diff) | |
download | libchrome-e871b0b6badd9c8b977f470badb533b78a2812d5.tar.gz |
libchrome: downgrade mojom types at arc build time am: 7b91003f18 am: 631a6e103bandroid-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r31android-11.0.0_r30android-11.0.0_r29android-11.0.0_r28android-11.0.0_r27android-11.0.0_r26android-11.0.0_r24android-11.0.0_r23android-11.0.0_r22android-11.0.0_r21android-11.0.0_r20android-11.0.0_r19android-11.0.0_r18android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-s2-releaseandroid11-qpr1-s1-releaseandroid11-qpr1-releaseandroid11-qpr1-d-s1-releaseandroid11-qpr1-d-releaseandroid11-qpr1-c-releaseandroid11-d2-release
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/libchrome/+/11818324
Change-Id: Iad2f469f0bace1ef717b66b98390874fbdcf641d
Diffstat (limited to 'soong/bindings_generator.go')
-rw-r--r-- | soong/bindings_generator.go | 90 |
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, |