• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1diff --git a/src/lib.rs b/src/lib.rs
2index 2e8f1b9..e826b25 100644
3--- a/src/lib.rs
4+++ b/src/lib.rs
5@@ -182,7 +182,16 @@ use crate::error::Error;
6 use crate::version::Version;
7 use proc_macro::TokenStream;
8
9-const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "/version.expr"));
10+// ANDROID: Soong is providing the version of rustc via an env variable.
11+const ANDROID_RUSTVERSION: Option<&str> = option_env!("ANDROID_RUST_VERSION");
12+fn rust_version() -> Version {
13+    let v: Vec<&str> = ANDROID_RUSTVERSION.unwrap().split('.').collect();
14+    Version {
15+        minor: v[1].parse().unwrap(),
16+        patch: v[2].parse().unwrap(),
17+        channel: version::Channel::Stable,
18+    }
19+}
20
21 #[proc_macro_attribute]
22 pub fn stable(args: TokenStream, input: TokenStream) -> TokenStream {
23@@ -239,7 +248,7 @@ pub fn cfg(input: TokenStream) -> TokenStream {
24         let ref mut args = iter::new(input);
25         let expr = expr::parse(args)?;
26         token::parse_end(args)?;
27-        let boolean = expr.eval(RUSTVERSION);
28+        let boolean = expr.eval(rust_version());
29         let ident = Ident::new(&boolean.to_string(), Span::call_site());
30         Ok(TokenStream::from(TokenTree::Ident(ident)))
31     })()
32diff --git a/src/expand.rs b/src/expand.rs
33index 813ba85..3d4e314 100644
34--- a/src/expand.rs
35+++ b/src/expand.rs
36@@ -23,7 +23,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result<To
37     let expr = expr::parse(full_args)?;
38     token::parse_end(full_args)?;
39
40-    if expr.eval(crate::RUSTVERSION) {
41+    if expr.eval(crate::rust_version()) {
42         Ok(input)
43     } else {
44         Ok(TokenStream::new())
45@@ -31,7 +31,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result<To
46 }
47
48 pub fn try_attr(args: attr::Args, input: TokenStream) -> Result<TokenStream> {
49-    if !args.condition.eval(crate::RUSTVERSION) {
50+    if !args.condition.eval(crate::rust_version()) {
51         return Ok(input);
52     }
53
54