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