diff --git a/src/lib.rs b/src/lib.rs index 2e8f1b9..e826b25 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -182,7 +182,16 @@ use crate::error::Error; use crate::version::Version; use proc_macro::TokenStream; -const RUSTVERSION: Version = include!(concat!(env!("OUT_DIR"), "/version.expr")); +// 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 { @@ -239,7 +248,7 @@ pub fn cfg(input: TokenStream) -> TokenStream { let ref mut args = iter::new(input); let expr = expr::parse(args)?; token::parse_end(args)?; - let boolean = expr.eval(RUSTVERSION); + let boolean = expr.eval(rust_version()); let ident = Ident::new(&boolean.to_string(), Span::call_site()); Ok(TokenStream::from(TokenTree::Ident(ident))) })() diff --git a/src/expand.rs b/src/expand.rs index 813ba85..3d4e314 100644 --- a/src/expand.rs +++ b/src/expand.rs @@ -23,7 +23,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result Result Result { - if !args.condition.eval(crate::RUSTVERSION) { + if !args.condition.eval(crate::rust_version()) { return Ok(input); }