diff --git a/optee-utee/Cargo.toml b/optee-utee/Cargo.toml index 56bcfffe..e109cc3e 100644 --- a/optee-utee/Cargo.toml +++ b/optee-utee/Cargo.toml @@ -50,3 +50,6 @@ no_panic_handler = [] [workspace] resolver = "2" members = ['systest'] + +[build-dependencies] +rustc_version = "0.4.1" diff --git a/optee-utee/build.rs b/optee-utee/build.rs new file mode 100644 index 00000000..d90fc243 --- /dev/null +++ b/optee-utee/build.rs @@ -0,0 +1,28 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +use rustc_version::{version, Version}; + +fn main() { + // fix lint + println!("cargo::rustc-check-cfg=cfg(optee_utee_rustc_has_stable_error_in_core)"); + + let v = version().expect("infailable"); + if v >= Version::new(1, 81, 0) { + println!("cargo:rustc-cfg=optee_utee_rustc_has_stable_error_in_core"); + } +} diff --git a/optee-utee/src/lib.rs b/optee-utee/src/lib.rs index 1622a9ae..1945236d 100644 --- a/optee-utee/src/lib.rs +++ b/optee-utee/src/lib.rs @@ -16,7 +16,13 @@ // under the License. #![cfg_attr(not(feature = "std"), no_std)] -#![cfg_attr(not(feature = "std"), feature(error_in_core))] +#![cfg_attr(all( + not(feature = "std"), + // A temporary workaround to let optee-utee build on stable Rust. We should + // remove it once we upgrade to a newer toolchain, though that’s currently + // blocked by our patched STD. + not(optee_utee_rustc_has_stable_error_in_core), +), feature(error_in_core))] // Requires `alloc`. #[macro_use]