Skip to content

Commit 4e689bb

Browse files
committed
Revert "Remove build.rs file"
This reverts commit 7f09d72.
1 parent 3ea1c66 commit 4e689bb

File tree

4 files changed

+61
-19
lines changed

4 files changed

+61
-19
lines changed

.github/workflows/main.yml

+2-5
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,8 @@ jobs:
127127
- uses: actions/checkout@master
128128
- name: Install Rust
129129
run: |
130-
rustup update 1.60.0 --no-self-update
131-
rustup default 1.60.0
132-
- run: cargo build --verbose
133-
- run: cargo build --verbose --features serde
134-
- run: cargo build --verbose --features std
130+
rustup update 1.31.0 --no-self-update
131+
rustup default 1.31.0
135132
- run: cargo test --verbose --manifest-path tests/Cargo.toml
136133

137134
embedded:

Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ A lightweight logging facade for Rust
1313
categories = ["development-tools::debugging"]
1414
keywords = ["logging"]
1515
exclude = ["rfcs/**/*"]
16-
rust-version = "1.60.0"
16+
build = "build.rs"
1717

1818
[package.metadata.docs.rs]
1919
features = ["std", "serde", "kv_unstable_std", "kv_unstable_sval", "kv_unstable_serde"]
@@ -56,12 +56,12 @@ kv_unstable_serde = ["kv_unstable_std", "value-bag/serde", "serde"]
5656
serde = { version = "1.0", optional = true, default-features = false }
5757
sval = { version = "2.1", optional = true, default-features = false }
5858
sval_ref = { version = "2.1", optional = true, default-features = false }
59-
value-bag = { version = "1.1", optional = true, default-features = false }
59+
value-bag = { version = "1.4", optional = true, default-features = false }
6060

6161
[dev-dependencies]
6262
rustversion = "1.0"
6363
serde = { version = "1.0", features = ["derive"] }
6464
serde_test = "1.0"
6565
sval = { version = "2.1" }
6666
sval_derive = { version = "2.1" }
67-
value-bag = { version = "1.1", features = ["test"] }
67+
value-bag = { version = "1.4", features = ["test"] }

build.rs

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//! This build script detects target platforms that lack proper support for
2+
//! atomics and sets `cfg` flags accordingly.
3+
4+
use std::env;
5+
use std::str;
6+
7+
fn main() {
8+
let target = match rustc_target() {
9+
Some(target) => target,
10+
None => return,
11+
};
12+
13+
if target_has_atomic_cas(&target) {
14+
println!("cargo:rustc-cfg=atomic_cas");
15+
}
16+
17+
if target_has_atomics(&target) {
18+
println!("cargo:rustc-cfg=has_atomics");
19+
}
20+
21+
println!("cargo:rerun-if-changed=build.rs");
22+
}
23+
24+
fn target_has_atomic_cas(target: &str) -> bool {
25+
match target {
26+
"thumbv6m-none-eabi"
27+
| "msp430-none-elf"
28+
| "riscv32i-unknown-none-elf"
29+
| "riscv32imc-unknown-none-elf" => false,
30+
_ => true,
31+
}
32+
}
33+
34+
fn target_has_atomics(target: &str) -> bool {
35+
match target {
36+
"thumbv4t-none-eabi"
37+
| "msp430-none-elf"
38+
| "riscv32i-unknown-none-elf"
39+
| "riscv32imc-unknown-none-elf" => false,
40+
_ => true,
41+
}
42+
}
43+
44+
fn rustc_target() -> Option<String> {
45+
env::var("TARGET").ok()
46+
}

src/lib.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -344,20 +344,20 @@ mod serde;
344344
#[cfg(feature = "kv_unstable")]
345345
pub mod kv;
346346

347-
#[cfg(target_has_atomic = "ptr")]
347+
#[cfg(has_atomics)]
348348
use std::sync::atomic::{AtomicUsize, Ordering};
349349

350-
#[cfg(not(target_has_atomic = "ptr"))]
350+
#[cfg(not(has_atomics))]
351351
use std::cell::Cell;
352-
#[cfg(not(target_has_atomic = "ptr"))]
352+
#[cfg(not(has_atomics))]
353353
use std::sync::atomic::Ordering;
354354

355-
#[cfg(not(target_has_atomic = "ptr"))]
355+
#[cfg(not(has_atomics))]
356356
struct AtomicUsize {
357357
v: Cell<usize>,
358358
}
359359

360-
#[cfg(not(target_has_atomic = "ptr"))]
360+
#[cfg(not(has_atomics))]
361361
impl AtomicUsize {
362362
const fn new(v: usize) -> AtomicUsize {
363363
AtomicUsize { v: Cell::new(v) }
@@ -371,7 +371,7 @@ impl AtomicUsize {
371371
self.v.set(val)
372372
}
373373

374-
#[cfg(target_has_atomic = "ptr")]
374+
#[cfg(atomic_cas)]
375375
fn compare_exchange(
376376
&self,
377377
current: usize,
@@ -389,7 +389,7 @@ impl AtomicUsize {
389389

390390
// Any platform without atomics is unlikely to have multiple cores, so
391391
// writing via Cell will not be a race condition.
392-
#[cfg(not(target_has_atomic = "ptr"))]
392+
#[cfg(not(has_atomics))]
393393
unsafe impl Sync for AtomicUsize {}
394394

395395
// The LOGGER static holds a pointer to the global logger. It is protected by
@@ -1217,7 +1217,6 @@ where
12171217
///
12181218
/// Note that `Trace` is the maximum level, because it provides the maximum amount of detail in the emitted logs.
12191219
#[inline]
1220-
#[cfg(target_has_atomic = "ptr")]
12211220
pub fn set_max_level(level: LevelFilter) {
12221221
MAX_LOG_LEVEL_FILTER.store(level as usize, Ordering::Relaxed);
12231222
}
@@ -1286,7 +1285,7 @@ pub fn max_level() -> LevelFilter {
12861285
/// An error is returned if a logger has already been set.
12871286
///
12881287
/// [`set_logger`]: fn.set_logger.html
1289-
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
1288+
#[cfg(all(feature = "std", atomic_cas))]
12901289
pub fn set_boxed_logger(logger: Box<dyn Log>) -> Result<(), SetLoggerError> {
12911290
set_logger_inner(|| Box::leak(logger))
12921291
}
@@ -1344,12 +1343,12 @@ pub fn set_boxed_logger(logger: Box<dyn Log>) -> Result<(), SetLoggerError> {
13441343
/// ```
13451344
///
13461345
/// [`set_logger_racy`]: fn.set_logger_racy.html
1347-
#[cfg(target_has_atomic = "ptr")]
1346+
#[cfg(atomic_cas)]
13481347
pub fn set_logger(logger: &'static dyn Log) -> Result<(), SetLoggerError> {
13491348
set_logger_inner(|| logger)
13501349
}
13511350

1352-
#[cfg(target_has_atomic = "ptr")]
1351+
#[cfg(atomic_cas)]
13531352
fn set_logger_inner<F>(make_logger: F) -> Result<(), SetLoggerError>
13541353
where
13551354
F: FnOnce() -> &'static dyn Log,

0 commit comments

Comments
 (0)