summaryrefslogtreecommitdiff
path: root/rust/compiler.go
diff options
context:
space:
mode:
Diffstat (limited to 'rust/compiler.go')
-rw-r--r--rust/compiler.go20
1 files changed, 19 insertions, 1 deletions
diff --git a/rust/compiler.go b/rust/compiler.go
index 04fef3580..d9e21ff3a 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -158,6 +158,14 @@ type BaseCompilerProperties struct {
// linkage if all dependencies of the root binary module do not link against libstd\
// the same way.
Prefer_rlib *bool `android:"arch_variant"`
+
+ // Enables emitting certain Cargo environment variables. Only intended to be used for compatibility purposes.
+ // Will set CARGO_CRATE_NAME to the crate_name property's value.
+ // Will set CARGO_BIN_NAME to the output filename value without the extension.
+ Cargo_env_compat *bool
+
+ // If cargo_env_compat is true, sets the CARGO_PKG_VERSION env var to this value.
+ Cargo_pkg_version *string
}
type baseCompiler struct {
@@ -313,6 +321,14 @@ func (compiler *baseCompiler) CargoOutDir() android.OptionalPath {
return android.OptionalPathForPath(compiler.cargoOutDir)
}
+func (compiler *baseCompiler) CargoEnvCompat() bool {
+ return Bool(compiler.Properties.Cargo_env_compat)
+}
+
+func (compiler *baseCompiler) CargoPkgVersion() string {
+ return String(compiler.Properties.Cargo_pkg_version)
+}
+
func (compiler *baseCompiler) strippedOutputFilePath() android.OptionalPath {
return compiler.strippedOutputFile
}
@@ -350,7 +366,9 @@ func bionicDeps(ctx DepsContext, deps Deps, static bool) Deps {
} else {
deps.SharedLibs = append(deps.SharedLibs, bionicLibs...)
}
-
+ if ctx.RustModule().StaticExecutable() {
+ deps.StaticLibs = append(deps.StaticLibs, "libunwind")
+ }
if libRuntimeBuiltins := config.BuiltinsRuntimeLibrary(ctx.toolchain()); libRuntimeBuiltins != "" {
deps.StaticLibs = append(deps.StaticLibs, libRuntimeBuiltins)
}