| diff --git a/src/lib.rs b/src/lib.rs |
| index 172eb89..6c4ef6a 100644 |
| --- a/src/lib.rs |
| +++ b/src/lib.rs |
| @@ -180,7 +180,16 @@ use crate::version::Version; |
| use proc_macro::{Delimiter, Group, Ident, Punct, Spacing, Span, TokenStream, TokenTree}; |
| use std::iter::FromIterator; |
| |
| -const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "/version.rs")); |
| +// ANDROID: Soong is providing the version of rustc via an env variable. |
| +const ANDROID_RUSTVERSION: Option<&str> = option_env!("ANDROID_RUST_VERSION"); |
| +fn rust_version() -> Version { |
| + let v: Vec<&str> = ANDROID_RUSTVERSION.unwrap().split('.').collect(); |
| + Version { |
| + minor: v[1].parse().unwrap(), |
| + patch: v[2].parse().unwrap(), |
| + channel: version::Channel::Stable, |
| + } |
| +} |
| |
| #[proc_macro_attribute] |
| pub fn stable(args: TokenStream, input: TokenStream) -> TokenStream { |
| @@ -241,7 +250,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result<To |
| let expr = expr::parse(full_args)?; |
| token::parse_end(full_args)?; |
| |
| - if expr.eval(RUSTVERSION) { |
| + if expr.eval(rust_version()) { |
| Ok(input) |
| } else { |
| Ok(TokenStream::new()) |
| @@ -256,7 +265,7 @@ pub fn attr(args: TokenStream, input: TokenStream) -> TokenStream { |
| } |
| |
| fn try_attr(args: attr::Args, input: TokenStream) -> Result<TokenStream> { |
| - if !args.condition.eval(RUSTVERSION) { |
| + if !args.condition.eval(rust_version()) { |
| return Ok(input); |
| } |
| |