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
This commit is contained in:
@@ -57,36 +57,36 @@ func init() {
|
|||||||
pctx.HostBinToolVariable("SoongZipCmd", "soong_zip")
|
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 {
|
outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
||||||
|
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "bin", includeDirs)
|
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 {
|
outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "rlib", includeDirs)
|
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 {
|
outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "dylib", includeDirs)
|
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 {
|
outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "staticlib", includeDirs)
|
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 {
|
outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
flags.RustFlags = append(flags.RustFlags, "-C lto")
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "cdylib", includeDirs)
|
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 {
|
flags Flags, outputFile android.WritablePath, includeDirs []string) buildOutput {
|
||||||
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "proc-macro", includeDirs)
|
return transformSrctoCrate(ctx, mainSrc, deps, flags, outputFile, "proc-macro", includeDirs)
|
||||||
}
|
}
|
||||||
@@ -99,7 +99,7 @@ func rustLibsToPaths(libs RustLibraries) android.Paths {
|
|||||||
return 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 {
|
outputFile android.WritablePath, crate_type string, includeDirs []string) buildOutput {
|
||||||
|
|
||||||
var inputs android.Paths
|
var inputs android.Paths
|
||||||
@@ -109,8 +109,8 @@ func transformSrctoCrate(ctx android.ModuleContext, main android.Path, deps Path
|
|||||||
var implicitOutputs android.WritablePaths
|
var implicitOutputs android.WritablePaths
|
||||||
|
|
||||||
output.outputFile = outputFile
|
output.outputFile = outputFile
|
||||||
crate_name := ctx.(ModuleContext).CrateName()
|
crate_name := ctx.RustModule().CrateName()
|
||||||
targetTriple := ctx.(ModuleContext).toolchain().RustTriple()
|
targetTriple := ctx.toolchain().RustTriple()
|
||||||
|
|
||||||
inputs = append(inputs, main)
|
inputs = append(inputs, main)
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ func transformSrctoCrate(ctx android.ModuleContext, main android.Path, deps Path
|
|||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
|
|
||||||
func TransformCoverageFilesToZip(ctx android.ModuleContext,
|
func TransformCoverageFilesToZip(ctx ModuleContext,
|
||||||
covFiles android.Paths, baseName string) android.OptionalPath {
|
covFiles android.Paths, baseName string) android.OptionalPath {
|
||||||
if len(covFiles) > 0 {
|
if len(covFiles) > 0 {
|
||||||
|
|
||||||
|
@@ -253,7 +253,7 @@ func (compiler *baseCompiler) getStem(ctx ModuleContext) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (compiler *baseCompiler) getStemWithoutSuffix(ctx BaseModuleContext) string {
|
func (compiler *baseCompiler) getStemWithoutSuffix(ctx BaseModuleContext) string {
|
||||||
stem := ctx.baseModuleName()
|
stem := ctx.ModuleName()
|
||||||
if String(compiler.Properties.Stem) != "" {
|
if String(compiler.Properties.Stem) != "" {
|
||||||
stem = String(compiler.Properties.Stem)
|
stem = String(compiler.Properties.Stem)
|
||||||
}
|
}
|
||||||
|
@@ -67,6 +67,6 @@ func (cov *coverage) begin(ctx BaseModuleContext) {
|
|||||||
// Host coverage not yet supported.
|
// Host coverage not yet supported.
|
||||||
} else {
|
} else {
|
||||||
// Update useSdk and sdkVersion args if Rust modules become SDK aware.
|
// 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, "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -329,7 +329,7 @@ func (library *libraryDecorator) sharedLibFilename(ctx ModuleContext) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags {
|
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)
|
flags = library.baseCompiler.compilerFlags(ctx, flags)
|
||||||
if library.shared() || library.static() {
|
if library.shared() || library.static() {
|
||||||
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
|
library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...)
|
||||||
|
68
rust/rust.go
68
rust/rust.go
@@ -506,39 +506,50 @@ type DepsContext interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ModuleContextIntf interface {
|
type ModuleContextIntf interface {
|
||||||
|
RustModule() *Module
|
||||||
toolchain() config.Toolchain
|
toolchain() config.Toolchain
|
||||||
baseModuleName() string
|
|
||||||
CrateName() string
|
|
||||||
nativeCoverage() bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type depsContext struct {
|
type depsContext struct {
|
||||||
android.BottomUpMutatorContext
|
android.BottomUpMutatorContext
|
||||||
moduleContextImpl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type moduleContext struct {
|
type moduleContext struct {
|
||||||
android.ModuleContext
|
android.ModuleContext
|
||||||
moduleContextImpl
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *moduleContextImpl) nativeCoverage() bool {
|
type baseModuleContext struct {
|
||||||
return ctx.mod.nativeCoverage()
|
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 {
|
func (mod *Module) nativeCoverage() bool {
|
||||||
return mod.compiler != nil && mod.compiler.nativeCoverage()
|
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 {
|
func (mod *Module) toolchain(ctx android.BaseModuleContext) config.Toolchain {
|
||||||
if mod.cachedToolchain == nil {
|
if mod.cachedToolchain == nil {
|
||||||
mod.cachedToolchain = config.FindToolchain(ctx.Os(), ctx.Arch())
|
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) {
|
func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) {
|
||||||
ctx := &moduleContext{
|
ctx := &moduleContext{
|
||||||
ModuleContext: actx,
|
ModuleContext: actx,
|
||||||
moduleContextImpl: moduleContextImpl{
|
|
||||||
mod: mod,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
ctx.ctx = ctx
|
|
||||||
|
|
||||||
toolchain := mod.toolchain(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 {
|
type dependencyTag struct {
|
||||||
blueprint.BaseDependencyTag
|
blueprint.BaseDependencyTag
|
||||||
name string
|
name string
|
||||||
@@ -811,11 +810,7 @@ func libNameFromFilePath(filepath android.Path) string {
|
|||||||
func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
func (mod *Module) DepsMutator(actx android.BottomUpMutatorContext) {
|
||||||
ctx := &depsContext{
|
ctx := &depsContext{
|
||||||
BottomUpMutatorContext: actx,
|
BottomUpMutatorContext: actx,
|
||||||
moduleContextImpl: moduleContextImpl{
|
|
||||||
mod: mod,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
ctx.ctx = ctx
|
|
||||||
|
|
||||||
deps := mod.deps(ctx)
|
deps := mod.deps(ctx)
|
||||||
commonDepVariations := []blueprint.Variation{}
|
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) {
|
func (mod *Module) beginMutator(actx android.BottomUpMutatorContext) {
|
||||||
ctx := &baseModuleContext{
|
ctx := &baseModuleContext{
|
||||||
BaseModuleContext: actx,
|
BaseModuleContext: actx,
|
||||||
moduleContextImpl: moduleContextImpl{
|
|
||||||
mod: mod,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
ctx.ctx = ctx
|
|
||||||
|
|
||||||
mod.begin(ctx)
|
mod.begin(ctx)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user