diff --git a/rust/binary.go b/rust/binary.go index c25ae0969..56d6f0b53 100644 --- a/rust/binary.go +++ b/rust/binary.go @@ -24,9 +24,6 @@ func init() { } type BinaryCompilerProperties struct { - // path to the main source file that contains the program entry point (e.g. src/main.rs) - Srcs []string `android:"path,arch_variant"` - // passes -C prefer-dynamic to rustc, which tells it to dynamically link the stdlib // (assuming it has no dylib dependencies already) Prefer_dynamic *bool @@ -35,10 +32,7 @@ type BinaryCompilerProperties struct { type binaryDecorator struct { *baseCompiler - Properties BinaryCompilerProperties - distFile android.OptionalPath - coverageOutputZipFile android.OptionalPath - unstrippedOutputFile android.Path + Properties BinaryCompilerProperties } var _ compiler = (*binaryDecorator)(nil) @@ -112,7 +106,7 @@ func (binary *binaryDecorator) nativeCoverage() bool { func (binary *binaryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { fileName := binary.getStem(ctx) + ctx.toolchain().ExecutableSuffix() - srcPath := srcPathFromModuleSrcs(ctx, binary.Properties.Srcs) + srcPath := srcPathFromModuleSrcs(ctx, binary.baseCompiler.Properties.Srcs) outputFile := android.PathForModuleOut(ctx, fileName) binary.unstrippedOutputFile = outputFile diff --git a/rust/compiler.go b/rust/compiler.go index 5f098bc04..efc1ce4ca 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -53,6 +53,9 @@ const ( ) type BaseCompilerProperties struct { + // path to the source file that is the main entry point of the program (e.g. main.rs or lib.rs) + Srcs []string `android:"path,arch_variant"` + // whether to pass "-D warnings" to rustc. Defaults to true. Deny_warnings *bool @@ -100,17 +103,10 @@ type BaseCompilerProperties struct { } type baseCompiler struct { - Properties BaseCompilerProperties - pathDeps android.Paths - rustFlagsDeps android.Paths - linkFlagsDeps android.Paths - flags string - linkFlags string - depFlags []string - linkDirs []string - edition string - src android.Path //rustc takes a single src file - coverageFile android.Path //rustc generates a single gcno file + Properties BaseCompilerProperties + depFlags []string + linkDirs []string + coverageFile android.Path //rustc generates a single gcno file // Install related dir string @@ -119,6 +115,10 @@ type baseCompiler struct { relative string path android.InstallPath location installLocation + + coverageOutputZipFile android.OptionalPath + unstrippedOutputFile android.Path + distFile android.OptionalPath } func (compiler *baseCompiler) coverageOutputZipPath() android.OptionalPath { diff --git a/rust/library.go b/rust/library.go index 2e5126639..704c77b40 100644 --- a/rust/library.go +++ b/rust/library.go @@ -45,9 +45,6 @@ type LibraryCompilerProperties struct { Shared VariantLibraryProperties `android:"arch_variant"` Static VariantLibraryProperties `android:"arch_variant"` - // path to the source file that is the main entry point of the program (e.g. src/lib.rs) - Srcs []string `android:"path,arch_variant"` - // path to include directories to pass to cc_* modules, only relevant for static/shared variants. Include_dirs []string `android:"path,arch_variant"` } @@ -75,12 +72,9 @@ type LibraryMutatedProperties struct { type libraryDecorator struct { *baseCompiler - Properties LibraryCompilerProperties - MutatedProperties LibraryMutatedProperties - distFile android.OptionalPath - coverageOutputZipFile android.OptionalPath - unstrippedOutputFile android.Path - includeDirs android.Paths + Properties LibraryCompilerProperties + MutatedProperties LibraryMutatedProperties + includeDirs android.Paths } type libraryInterface interface { @@ -350,7 +344,7 @@ func (library *libraryDecorator) compilerFlags(ctx ModuleContext, flags Flags) F func (library *libraryDecorator) compile(ctx ModuleContext, flags Flags, deps PathDeps) android.Path { var outputFile android.WritablePath - srcPath := srcPathFromModuleSrcs(ctx, library.Properties.Srcs) + srcPath := srcPathFromModuleSrcs(ctx, library.baseCompiler.Properties.Srcs) flags.RustFlags = append(flags.RustFlags, deps.depFlags...) diff --git a/rust/proc_macro.go b/rust/proc_macro.go index 10ea1e380..42c8537a9 100644 --- a/rust/proc_macro.go +++ b/rust/proc_macro.go @@ -23,20 +23,12 @@ func init() { } type ProcMacroCompilerProperties struct { - // path to the source file that is the main entry point of the program (e.g. src/lib.rs) - Srcs []string `android:"path,arch_variant"` - - // set name of the procMacro - Stem *string `android:"arch_variant"` - Suffix *string `android:"arch_variant"` } type procMacroDecorator struct { *baseCompiler - Properties ProcMacroCompilerProperties - distFile android.OptionalPath - unstrippedOutputFile android.Path + Properties ProcMacroCompilerProperties } type procMacroInterface interface { @@ -70,7 +62,7 @@ func (procMacro *procMacroDecorator) compile(ctx ModuleContext, flags Flags, dep fileName := procMacro.getStem(ctx) + ctx.toolchain().ProcMacroSuffix() outputFile := android.PathForModuleOut(ctx, fileName) - srcPath := srcPathFromModuleSrcs(ctx, procMacro.Properties.Srcs) + srcPath := srcPathFromModuleSrcs(ctx, procMacro.baseCompiler.Properties.Srcs) procMacro.unstrippedOutputFile = outputFile diff --git a/rust/project_json.go b/rust/project_json.go index 909aebc98..a50e73a95 100644 --- a/rust/project_json.go +++ b/rust/project_json.go @@ -114,7 +114,7 @@ func appendLibraryAndDeps(ctx android.SingletonContext, project *rustProjectJson return cInfo.ID, crateName, true } crate := rustProjectCrate{Deps: make([]rustProjectDep, 0), Cfgs: make([]string, 0)} - src := rustLib.Properties.Srcs[0] + src := rustLib.baseCompiler.Properties.Srcs[0] crate.RootModule = path.Join(ctx.ModuleDir(rModule), src) crate.Edition = getEdition(rustLib.baseCompiler) diff --git a/rust/rust.go b/rust/rust.go index 1272e1d8f..7b82b1f69 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -45,11 +45,10 @@ func init() { } type Flags struct { - GlobalRustFlags []string // Flags that apply globally to rust - GlobalLinkFlags []string // Flags that apply globally to linker - RustFlags []string // Flags that apply to rust - LinkFlags []string // Flags that apply to linker - RustFlagsDeps android.Paths // Files depended on by compiler flags + GlobalRustFlags []string // Flags that apply globally to rust + GlobalLinkFlags []string // Flags that apply globally to linker + RustFlags []string // Flags that apply to rust + LinkFlags []string // Flags that apply to linker Toolchain config.Toolchain Coverage bool }