summaryrefslogtreecommitdiff
path: root/rust/compiler.go
diff options
context:
space:
mode:
author Ivan Lozano <ivanlozano@google.com> 2021-08-11 15:13:43 -0400
committer Ivan Lozano <ivanlozano@google.com> 2021-08-12 13:18:34 +0000
commita9a1fc07473ef512d3ae84f4c368d5e3752649e6 (patch)
treeac0cf93ba8ff5cd24488b7eb500b2356885a16f5 /rust/compiler.go
parentadffbe9166d8740083e245f179a9e9eb705b3837 (diff)
rust: Add support to emit certain Cargo env vars.
Some crates expect Cargo to provide certain environment variables. This CL adds a compatability flag that emulates the behavior of Cargo by setting these environment variables when building. Bug: 171011485 Test: New soong tests pass Test: quiche no longer requires patch removing CARGO_PKG_VERSION Change-Id: I4c95c284846f6075428c6f61fe8c260f2e35fbd9
Diffstat (limited to 'rust/compiler.go')
-rw-r--r--rust/compiler.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/rust/compiler.go b/rust/compiler.go
index de59f39ac..6b3ccfcfa 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -154,6 +154,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 {
@@ -309,6 +317,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
}