Loading rust/compiler.go +19 −8 Original line number Diff line number Diff line Loading @@ -231,6 +231,7 @@ func (compiler *baseCompiler) cfgsToFlags() []string { for _, cfg := range compiler.Properties.Cfgs { flags = append(flags, "--cfg '"+cfg+"'") } return flags } Loading @@ -239,6 +240,24 @@ func (compiler *baseCompiler) featuresToFlags() []string { for _, feature := range compiler.Properties.Features { flags = append(flags, "--cfg 'feature=\""+feature+"\"'") } return flags } func (compiler *baseCompiler) featureFlags(ctx ModuleContext, flags Flags) Flags { flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.featuresToFlags()...) return flags } func (compiler *baseCompiler) cfgFlags(ctx ModuleContext, flags Flags) Flags { if ctx.RustModule().UseVndk() { compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vndk") } flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.cfgsToFlags()...) return flags } Loading Loading @@ -269,10 +288,6 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag flags.RustFlags = append(flags.RustFlags, lintFlags) flags.RustFlags = append(flags.RustFlags, compiler.Properties.Flags...) flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...) flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.featuresToFlags()...) flags.RustFlags = append(flags.RustFlags, "--edition="+compiler.edition()) flags.RustdocFlags = append(flags.RustdocFlags, "--edition="+compiler.edition()) flags.LinkFlags = append(flags.LinkFlags, compiler.Properties.Ld_flags...) Loading @@ -296,10 +311,6 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag flags.LinkFlags = append(flags.LinkFlags, "-Wl,-rpath,"+rpathPrefix+"../"+rpath) } if ctx.RustModule().UseVndk() { flags.RustFlags = append(flags.RustFlags, "--cfg 'android_vndk'") } return flags } Loading rust/library.go +12 −2 Original line number Diff line number Diff line Loading @@ -430,15 +430,25 @@ func (library *libraryDecorator) sharedLibFilename(ctx ModuleContext) string { return library.getStem(ctx) + ctx.toolchain().SharedLibSuffix() } func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags { flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName()) func (library *libraryDecorator) cfgFlags(ctx ModuleContext, flags Flags) Flags { flags = library.baseCompiler.cfgFlags(ctx, flags) if library.dylib() { // We need to add a dependency on std in order to link crates as dylibs. // The hack to add this dependency is guarded by the following cfg so // that we don't force a dependency when it isn't needed. library.baseCompiler.Properties.Cfgs = append(library.baseCompiler.Properties.Cfgs, "android_dylib") } flags.RustFlags = append(flags.RustFlags, library.baseCompiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, library.baseCompiler.cfgsToFlags()...) return flags } func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags { flags = library.baseCompiler.compilerFlags(ctx, flags) flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName()) if library.shared() || library.static() { library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...) } Loading rust/rust.go +5 −0 Original line number Diff line number Diff line Loading @@ -436,6 +436,8 @@ type RustLibrary struct { type compiler interface { initialize(ctx ModuleContext) compilerFlags(ctx ModuleContext, flags Flags) Flags cfgFlags(ctx ModuleContext, flags Flags) Flags featureFlags(ctx ModuleContext, flags Flags) Flags compilerProps() []interface{} compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path compilerDeps(ctx DepsContext, deps Deps) Deps Loading Loading @@ -847,8 +849,11 @@ func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { Toolchain: toolchain, } // Calculate rustc flags if mod.compiler != nil { flags = mod.compiler.compilerFlags(ctx, flags) flags = mod.compiler.cfgFlags(ctx, flags) flags = mod.compiler.featureFlags(ctx, flags) } if mod.coverage != nil { flags, deps = mod.coverage.flags(ctx, flags, deps) Loading Loading
rust/compiler.go +19 −8 Original line number Diff line number Diff line Loading @@ -231,6 +231,7 @@ func (compiler *baseCompiler) cfgsToFlags() []string { for _, cfg := range compiler.Properties.Cfgs { flags = append(flags, "--cfg '"+cfg+"'") } return flags } Loading @@ -239,6 +240,24 @@ func (compiler *baseCompiler) featuresToFlags() []string { for _, feature := range compiler.Properties.Features { flags = append(flags, "--cfg 'feature=\""+feature+"\"'") } return flags } func (compiler *baseCompiler) featureFlags(ctx ModuleContext, flags Flags) Flags { flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.featuresToFlags()...) return flags } func (compiler *baseCompiler) cfgFlags(ctx ModuleContext, flags Flags) Flags { if ctx.RustModule().UseVndk() { compiler.Properties.Cfgs = append(compiler.Properties.Cfgs, "android_vndk") } flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.cfgsToFlags()...) return flags } Loading Loading @@ -269,10 +288,6 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag flags.RustFlags = append(flags.RustFlags, lintFlags) flags.RustFlags = append(flags.RustFlags, compiler.Properties.Flags...) flags.RustFlags = append(flags.RustFlags, compiler.cfgsToFlags()...) flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, compiler.featuresToFlags()...) flags.RustFlags = append(flags.RustFlags, "--edition="+compiler.edition()) flags.RustdocFlags = append(flags.RustdocFlags, "--edition="+compiler.edition()) flags.LinkFlags = append(flags.LinkFlags, compiler.Properties.Ld_flags...) Loading @@ -296,10 +311,6 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag flags.LinkFlags = append(flags.LinkFlags, "-Wl,-rpath,"+rpathPrefix+"../"+rpath) } if ctx.RustModule().UseVndk() { flags.RustFlags = append(flags.RustFlags, "--cfg 'android_vndk'") } return flags } Loading
rust/library.go +12 −2 Original line number Diff line number Diff line Loading @@ -430,15 +430,25 @@ func (library *libraryDecorator) sharedLibFilename(ctx ModuleContext) string { return library.getStem(ctx) + ctx.toolchain().SharedLibSuffix() } func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags { flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName()) func (library *libraryDecorator) cfgFlags(ctx ModuleContext, flags Flags) Flags { flags = library.baseCompiler.cfgFlags(ctx, flags) if library.dylib() { // We need to add a dependency on std in order to link crates as dylibs. // The hack to add this dependency is guarded by the following cfg so // that we don't force a dependency when it isn't needed. library.baseCompiler.Properties.Cfgs = append(library.baseCompiler.Properties.Cfgs, "android_dylib") } flags.RustFlags = append(flags.RustFlags, library.baseCompiler.cfgsToFlags()...) flags.RustdocFlags = append(flags.RustdocFlags, library.baseCompiler.cfgsToFlags()...) return flags } func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) Flags { flags = library.baseCompiler.compilerFlags(ctx, flags) flags.RustFlags = append(flags.RustFlags, "-C metadata="+ctx.ModuleName()) if library.shared() || library.static() { library.includeDirs = append(library.includeDirs, android.PathsForModuleSrc(ctx, library.Properties.Include_dirs)...) } Loading
rust/rust.go +5 −0 Original line number Diff line number Diff line Loading @@ -436,6 +436,8 @@ type RustLibrary struct { type compiler interface { initialize(ctx ModuleContext) compilerFlags(ctx ModuleContext, flags Flags) Flags cfgFlags(ctx ModuleContext, flags Flags) Flags featureFlags(ctx ModuleContext, flags Flags) Flags compilerProps() []interface{} compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path compilerDeps(ctx DepsContext, deps Deps) Deps Loading Loading @@ -847,8 +849,11 @@ func (mod *Module) GenerateAndroidBuildActions(actx android.ModuleContext) { Toolchain: toolchain, } // Calculate rustc flags if mod.compiler != nil { flags = mod.compiler.compilerFlags(ctx, flags) flags = mod.compiler.cfgFlags(ctx, flags) flags = mod.compiler.featureFlags(ctx, flags) } if mod.coverage != nil { flags, deps = mod.coverage.flags(ctx, flags, deps) Loading