54 lines
1.9 KiB
Diff
54 lines
1.9 KiB
Diff
|
|
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<To
|
||
|
|
let expr = expr::parse(full_args)?;
|
||
|
|
token::parse_end(full_args)?;
|
||
|
|
|
||
|
|
- if expr.eval(crate::RUSTVERSION) {
|
||
|
|
+ if expr.eval(crate::rust_version()) {
|
||
|
|
Ok(input)
|
||
|
|
} else {
|
||
|
|
Ok(TokenStream::new())
|
||
|
|
@@ -31,7 +31,7 @@ fn try_cfg(introducer: &str, args: TokenStream, input: TokenStream) -> Result<To
|
||
|
|
}
|
||
|
|
|
||
|
|
pub fn try_attr(args: attr::Args, input: TokenStream) -> Result<TokenStream> {
|
||
|
|
- if !args.condition.eval(crate::RUSTVERSION) {
|
||
|
|
+ if !args.condition.eval(crate::rust_version()) {
|
||
|
|
return Ok(input);
|
||
|
|
}
|
||
|
|
|