diff options
Diffstat (limited to 'rust/compiler.go')
| -rw-r--r-- | rust/compiler.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/rust/compiler.go b/rust/compiler.go index 1ce71f60b..c5d40f4dc 100644 --- a/rust/compiler.go +++ b/rust/compiler.go @@ -181,7 +181,11 @@ type baseCompiler struct { sanitize *sanitize distFile android.OptionalPath - // Stripped output file. If Valid(), this file will be installed instead of outputFile. + + // unstripped output file. + unstrippedOutputFile android.Path + + // stripped output file. strippedOutputFile android.OptionalPath // If a crate has a source-generated dependency, a copy of the source file @@ -340,6 +344,10 @@ func (compiler *baseCompiler) CargoPkgVersion() string { return String(compiler.Properties.Cargo_pkg_version) } +func (compiler *baseCompiler) unstrippedOutputFilePath() android.Path { + return compiler.unstrippedOutputFile +} + func (compiler *baseCompiler) strippedOutputFilePath() android.OptionalPath { return compiler.strippedOutputFile } @@ -355,9 +363,9 @@ func (compiler *baseCompiler) compilerDeps(ctx DepsContext, deps Deps) Deps { if !Bool(compiler.Properties.No_stdlibs) { for _, stdlib := range config.Stdlibs { - // If we're building for the primary arch of the build host, use the compiler's stdlibs - if ctx.Target().Os == ctx.Config().BuildOS { - stdlib = stdlib + "_" + ctx.toolchain().RustTriple() + // If we're building for the build host, use the prebuilt stdlibs + if ctx.Target().Os == android.Linux || ctx.Target().Os == android.Darwin { + stdlib = "prebuilt_" + stdlib } deps.Stdlibs = append(deps.Stdlibs, stdlib) } @@ -386,6 +394,20 @@ func bionicDeps(ctx DepsContext, deps Deps, static bool) Deps { return deps } +func muslDeps(ctx DepsContext, deps Deps, static bool) Deps { + muslLibs := []string{"libc_musl"} + if static { + deps.StaticLibs = append(deps.StaticLibs, muslLibs...) + } else { + deps.SharedLibs = append(deps.SharedLibs, muslLibs...) + } + if libRuntimeBuiltins := config.BuiltinsRuntimeLibrary(ctx.toolchain()); libRuntimeBuiltins != "" { + deps.StaticLibs = append(deps.StaticLibs, libRuntimeBuiltins) + } + + return deps +} + func (compiler *baseCompiler) crateName() string { return compiler.Properties.Crate_name } @@ -449,6 +471,10 @@ func (compiler *baseCompiler) relativeInstallPath() string { // Returns the Path for the main source file along with Paths for generated source files from modules listed in srcs. func srcPathFromModuleSrcs(ctx ModuleContext, srcs []string) (android.Path, android.Paths) { + if len(srcs) == 0 { + ctx.PropertyErrorf("srcs", "srcs must not be empty") + } + // The srcs can contain strings with prefix ":". // They are dependent modules of this module, with android.SourceDepTag. // They are not the main source file compiled by rustc. |