From 1f7f70fe39137360c9983c4c702e68ebd2677807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thi=C3=A9baud=20Weksteen?= Date: Wed, 24 Jun 2020 11:32:48 +0200 Subject: [PATCH] Remove moduleContextImpl struct The moduleContextImpl structure contains duplicate information on the contexts. BaseModuleContext, ModuleContext and DepsContext can already surface which Module is being processed via Module(). Because most of the Rust-specific methods on the *Context structures simply forward to the Module methods, expose a RustModule() method. Test: cd external/rust/crates; mma Change-Id: Ifee90825d54081fc5e9a8df0b7c4580412e9158c --- rust/builder.go | 20 +++++++------- rust/compiler.go | 2 +- rust/coverage.go | 2 +- rust/library.go | 2 +- rust/rust.go | 68 +++++++++++++++++++----------------------------- 5 files changed, 40 insertions(+), 54 deletions(-) diff --git a/rust/builder.go b/rust/builder.go index 7dbb59d3e..91dc6af39 100644 --- a/rust/builder.go +++ b/rust/builder.go @@ -57,36 +57,36 @@ func init() { pctx.HostBinToolVariable("SoongZipCmd", "soong_zip") } -func TransformSrcToBinary(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, +func TransformSrcToBinary(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { flags.RustFlags = append(flags.RustFlags, "-C lto") return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "bin", includeDirs) } -func TransformSrctoRlib(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, +func TransformSrctoRlib(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "rlib", includeDirs) } -func TransformSrctoDylib(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, +func TransformSrctoDylib(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "dylib", includeDirs) } -func TransformSrctoStatic(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, +func TransformSrctoStatic(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { flags.RustFlags = append(flags.RustFlags, "-C lto") return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "staticlib", includeDirs) } -func TransformSrctoShared(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, +func TransformSrctoShared(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { flags.RustFlags = append(flags.RustFlags, "-C lto") return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "cdylib", includeDirs) } -func TransformSrctoProcMacro(ctx android.ModuleContext, mainSrc android.Path, deps PathDeps, +func TransformSrctoProcMacro(ctx ModuleContext, mainSrc android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput { return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "proc-macro", includeDirs) } @@ -99,7 +99,7 @@ func rustLibsToPaths(libs RustLibraries) android.Paths { return paths } -func transformSrctoCrate(ctx android.ModuleContext, main android.Path, deps PathDeps, flags Flags, +func transformSrctoCrate(ctx ModuleContext, main android.Path, deps PathDeps, flags Flags, outputFile android.WritablePath, crate_type string, includeDirs []string) buildOutput { var inputs android.Paths @@ -109,8 +109,8 @@ func transformSrctoCrate(ctx android.ModuleContext, main android.Path, deps Path var implicitOutputs android.WritablePaths output.outputFile = outputFile - crate_name := ctx.(ModuleContext).CrateName() - targetTriple := ctx.(ModuleContext).toolchain().RustTriple() + crate_name := ctx.RustModule().CrateName() + targetTriple := ctx.toolchain().RustTriple() inputs = append(inputs, main) @@ -198,7 +198,7 @@ func transformSrctoCrate(ctx android.ModuleContext, main android.Path, deps Path return output } -func TransformCoverageFilesToZip(ctx android.ModuleContext, +func TransformCoverageFilesToZip(ctx ModuleContext, covFiles android.Paths, baseName string) android.OptionalPath { if len(covFiles) > 0 { diff --git a/rust/compiler.go b/rust/compiler.go index efc1ce4ca..050a2593d 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -253,7 +253,7 @@ func (compiler *baseCompiler) getStem(ctx ModuleContext) string { } func (compiler *baseCompiler) getStemWithoutSuffix(ctx BaseModuleContext) string { - stem := ctx.baseModuleName() + stem := ctx.ModuleName() if String(compiler.Properties.Stem) != "" { stem = String(compiler.Properties.Stem) } diff --git a/rust/coverage.go b/rust/coverage.go index 4e3977be3..223ba4f19 100644 --- a/rust/coverage.go +++ b/rust/coverage.go @@ -67,6 +67,6 @@ func (cov *coverage) begin(ctx BaseModuleContext) { // Host coverage not yet supported. } else { // Update useSdk and sdkVersion args if Rust modules become SDK aware. - cov.Properties = cc.SetCoverageProperties(ctx, cov.Properties, ctx.nativeCoverage(), false, "") + cov.Properties = cc.SetCoverageProperties(ctx, cov.Properties, ctx.RustModule().nativeCoverage(), false, "") } } diff --git a/rust/library.go b/rust/library.go index 3c948ea09..f070c34c6 100644 --- a/rust/library.go +++ b/rust/library.go @@ -329,7 +329,7 @@ func (library *libraryDecorator) sharedLibFilename(ctx ModuleContext) string { } func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags { - flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.baseModuleName()) + flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName()) flags = library.baseCompiler.compilerFlags(ctx, flags) if library.shared() || library.static() { library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...) diff --git a/rust/rust.go b/rust/rust.go index 7b82b1f69..1cc412d36 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -506,39 +506,50 @@ type DepsContext interface { } type ModuleContextIntf interface { + RustModule() *Module toolchain() config.Toolchain - baseModuleName() string - CrateName() string - nativeCoverage() bool } type depsContext struct { android.BottomUpMutatorContext - moduleContextImpl } type moduleContext struct { android.ModuleContext - moduleContextImpl } -func (ctx *moduleContextImpl) nativeCoverage() bool { - return ctx.mod.nativeCoverage() +type baseModuleContext struct { + android.BaseModuleContext +} + +func (ctx *moduleContext) RustModule() *Module { + return ctx.Module().(*Module) +} + +func (ctx *moduleContext) toolchain() config.Toolchain { + return ctx.RustModule().toolchain(ctx) +} + +func (ctx *depsContext) RustModule() *Module { + return ctx.Module().(*Module) +} + +func (ctx *depsContext) toolchain() config.Toolchain { + return ctx.RustModule().toolchain(ctx) +} + +func (ctx *baseModuleContext) RustModule() *Module { + return ctx.Module().(*Module) +} + +func (ctx *baseModuleContext) toolchain() config.Toolchain { + return ctx.RustModule().toolchain(ctx) } func (mod *Module) nativeCoverage() bool { return mod.compiler != nil && mod.compiler.nativeCoverage() } -type moduleContextImpl struct { - mod *Module - ctx BaseModuleContext -} - -func (ctx *moduleContextImpl) toolchain() config.Toolchain { - return ctx.mod.toolchain(ctx.ctx) -} - func (mod *Module) toolchain(ctx android.BaseModuleContext) config.Toolchain { if mod.cachedToolchain == nil { mod.cachedToolchain = config.FindToolchain(ctx.Os(), ctx.Arch()) @@ -552,11 +563,7 @@ func (d *Defaults) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { ctx := &moduleContext{ ModuleContext: actx, - moduleContextImpl: moduleContextImpl{ - mod: mod, - }, } - ctx.ctx = ctx toolchain := mod.toolchain(ctx) @@ -607,14 +614,6 @@ func (mod *Module) deps(ctx DepsContext) Deps { } -func (ctx *moduleContextImpl) baseModuleName() string { - return ctx.mod.ModuleBase.BaseModuleName() -} - -func (ctx *moduleContextImpl) CrateName() string { - return ctx.mod.CrateName() -} - type dependencyTag struct { blueprint.BaseDependencyTag name string @@ -811,11 +810,7 @@ func libNameFromFilePath(filepath android.Path) string { func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) { ctx := &depsContext{ BottomUpMutatorContext: actx, - moduleContextImpl: moduleContextImpl{ - mod: mod, - }, } - ctx.ctx = ctx deps := mod.deps(ctx) commonDepVariations := []blueprint.Variation{} @@ -862,19 +857,10 @@ func BeginMutator(ctx android.BottomUpMutatorContext) { } } -type baseModuleContext struct { - android.BaseModuleContext - moduleContextImpl -} - func (mod *Module) beginMutator(actx android.BottomUpMutatorContext) { ctx := &baseModuleContext{ BaseModuleContext: actx, - moduleContextImpl: moduleContextImpl{ - mod: mod, - }, } - ctx.ctx = ctx mod.begin(ctx) }