Skip to content

Commit cb135f7

Browse files
committed
cfg-target-has-atomic
1 parent d6b7f5b commit cb135f7

File tree

6 files changed

+159
-3
lines changed

6 files changed

+159
-3
lines changed

futures-util/src/future/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,16 @@ pub use self::unit_error::UnitError;
6969
mod chain;
7070
pub(crate) use self::chain::Chain;
7171

72+
#[cfg_attr(
73+
feature = "cfg-target-has-atomic",
74+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
75+
)]
7276
#[cfg(feature = "alloc")]
7377
mod abortable;
78+
#[cfg_attr(
79+
feature = "cfg-target-has-atomic",
80+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
81+
)]
7482
#[cfg(feature = "alloc")]
7583
pub use self::abortable::{abortable, Abortable, AbortHandle, AbortRegistration, Aborted};
7684

futures-util/src/lib.rs

+4
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,9 @@ pub mod io;
101101
#[cfg(feature = "std")]
102102
#[doc(hidden)] pub use crate::io::{AsyncReadExt, AsyncWriteExt};
103103

104+
#[cfg_attr(
105+
feature = "cfg-target-has-atomic",
106+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
107+
)]
104108
#[cfg(feature = "alloc")]
105109
pub mod lock;

futures-util/src/stream/mod.rs

+72
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,29 @@ pub use self::unfold::{unfold, Unfold};
9999
mod zip;
100100
pub use self::zip::Zip;
101101

102+
#[cfg_attr(
103+
feature = "cfg-target-has-atomic",
104+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
105+
)]
102106
#[cfg(feature = "alloc")]
103107
mod buffer_unordered;
108+
#[cfg_attr(
109+
feature = "cfg-target-has-atomic",
110+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
111+
)]
104112
#[cfg(feature = "alloc")]
105113
pub use self::buffer_unordered::BufferUnordered;
106114

115+
#[cfg_attr(
116+
feature = "cfg-target-has-atomic",
117+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
118+
)]
107119
#[cfg(feature = "alloc")]
108120
mod buffered;
121+
#[cfg_attr(
122+
feature = "cfg-target-has-atomic",
123+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
124+
)]
109125
#[cfg(feature = "alloc")]
110126
pub use self::buffered::Buffered;
111127

@@ -119,28 +135,68 @@ mod chunks;
119135
#[cfg(feature = "alloc")]
120136
pub use self::chunks::Chunks;
121137

138+
#[cfg_attr(
139+
feature = "cfg-target-has-atomic",
140+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
141+
)]
122142
#[cfg(feature = "alloc")]
123143
mod for_each_concurrent;
144+
#[cfg_attr(
145+
feature = "cfg-target-has-atomic",
146+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
147+
)]
124148
#[cfg(feature = "alloc")]
125149
pub use self::for_each_concurrent::ForEachConcurrent;
126150

151+
#[cfg_attr(
152+
feature = "cfg-target-has-atomic",
153+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
154+
)]
127155
#[cfg(feature = "alloc")]
128156
mod futures_ordered;
157+
#[cfg_attr(
158+
feature = "cfg-target-has-atomic",
159+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
160+
)]
129161
#[cfg(feature = "alloc")]
130162
pub use self::futures_ordered::{futures_ordered, FuturesOrdered};
131163

164+
#[cfg_attr(
165+
feature = "cfg-target-has-atomic",
166+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
167+
)]
132168
#[cfg(feature = "alloc")]
133169
mod futures_unordered;
170+
#[cfg_attr(
171+
feature = "cfg-target-has-atomic",
172+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
173+
)]
134174
#[cfg(feature = "alloc")]
135175
pub use self::futures_unordered::{futures_unordered, FuturesUnordered};
136176

177+
#[cfg_attr(
178+
feature = "cfg-target-has-atomic",
179+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
180+
)]
137181
#[cfg(feature = "alloc")]
138182
mod split;
183+
#[cfg_attr(
184+
feature = "cfg-target-has-atomic",
185+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
186+
)]
139187
#[cfg(feature = "alloc")]
140188
pub use self::split::{SplitStream, SplitSink, ReuniteError};
141189

190+
#[cfg_attr(
191+
feature = "cfg-target-has-atomic",
192+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
193+
)]
142194
#[cfg(feature = "alloc")]
143195
mod select_all;
196+
#[cfg_attr(
197+
feature = "cfg-target-has-atomic",
198+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
199+
)]
144200
#[cfg(feature = "alloc")]
145201
pub use self::select_all::{select_all, SelectAll};
146202

@@ -613,6 +669,10 @@ pub trait StreamExt: Stream {
613669
/// await!(fut);
614670
/// # })
615671
/// ```
672+
#[cfg_attr(
673+
feature = "cfg-target-has-atomic",
674+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
675+
)]
616676
#[cfg(feature = "alloc")]
617677
fn for_each_concurrent<Fut, F>(
618678
self,
@@ -809,6 +869,10 @@ pub trait StreamExt: Stream {
809869
///
810870
/// This method is only available when the `std` feature of this
811871
/// library is activated, and it is activated by default.
872+
#[cfg_attr(
873+
feature = "cfg-target-has-atomic",
874+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
875+
)]
812876
#[cfg(feature = "alloc")]
813877
fn buffered(self, n: usize) -> Buffered<Self>
814878
where Self::Item: Future,
@@ -853,6 +917,10 @@ pub trait StreamExt: Stream {
853917
/// assert_eq!(await!(buffered.next()), None);
854918
/// # })
855919
/// ```
920+
#[cfg_attr(
921+
feature = "cfg-target-has-atomic",
922+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
923+
)]
856924
#[cfg(feature = "alloc")]
857925
fn buffer_unordered(self, n: usize) -> BufferUnordered<Self>
858926
where Self::Item: Future,
@@ -992,6 +1060,10 @@ pub trait StreamExt: Stream {
9921060
///
9931061
/// This method is only available when the `std` feature of this
9941062
/// library is activated, and it is activated by default.
1063+
#[cfg_attr(
1064+
feature = "cfg-target-has-atomic",
1065+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
1066+
)]
9951067
#[cfg(feature = "alloc")]
9961068
fn split(self) -> (SplitSink<Self>, SplitStream<Self>)
9971069
where Self: Sink + Sized

futures-util/src/task/mod.rs

+21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
33
/// A macro for creating a `RawWaker` vtable for a type that implements
44
/// the `ArcWake` trait.
5+
#[cfg_attr(
6+
feature = "cfg-target-has-atomic",
7+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
8+
)]
9+
#[cfg(feature = "alloc")]
510
macro_rules! waker_vtable {
611
($ty:ident) => {
712
&RawWakerVTable {
@@ -12,8 +17,16 @@ macro_rules! waker_vtable {
1217
};
1318
}
1419

20+
#[cfg_attr(
21+
feature = "cfg-target-has-atomic",
22+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
23+
)]
1524
#[cfg(feature = "alloc")]
1625
mod arc_wake;
26+
#[cfg_attr(
27+
feature = "cfg-target-has-atomic",
28+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
29+
)]
1730
#[cfg(feature = "alloc")]
1831
pub use self::arc_wake::ArcWake;
1932

@@ -25,8 +38,16 @@ pub use self::noop_waker::noop_waker_ref;
2538
mod spawn;
2639
pub use self::spawn::{SpawnExt, LocalSpawnExt};
2740

41+
#[cfg_attr(
42+
feature = "cfg-target-has-atomic",
43+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
44+
)]
2845
#[cfg(feature = "alloc")]
2946
mod waker_ref;
47+
#[cfg_attr(
48+
feature = "cfg-target-has-atomic",
49+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
50+
)]
3051
#[cfg(feature = "alloc")]
3152
pub use self::waker_ref::{waker_ref, WakerRef};
3253

futures-util/src/try_stream/mod.rs

+28
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,35 @@ pub use self::try_fold::TryFold;
4444
mod try_skip_while;
4545
pub use self::try_skip_while::TrySkipWhile;
4646

47+
#[cfg_attr(
48+
feature = "cfg-target-has-atomic",
49+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
50+
)]
4751
#[cfg(feature = "alloc")]
4852
mod try_buffer_unordered;
53+
#[cfg_attr(
54+
feature = "cfg-target-has-atomic",
55+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
56+
)]
4957
#[cfg(feature = "alloc")]
5058
pub use self::try_buffer_unordered::TryBufferUnordered;
5159

60+
#[cfg_attr(
61+
feature = "cfg-target-has-atomic",
62+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
63+
)]
5264
#[cfg(feature = "alloc")]
5365
mod try_for_each_concurrent;
66+
#[cfg_attr(
67+
feature = "cfg-target-has-atomic",
68+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
69+
)]
5470
#[cfg(feature = "alloc")]
5571
pub use self::try_for_each_concurrent::TryForEachConcurrent;
72+
#[cfg_attr(
73+
feature = "cfg-target-has-atomic",
74+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
75+
)]
5676
#[cfg(feature = "alloc")]
5777
use futures_core::future::Future;
5878

@@ -310,6 +330,10 @@ pub trait TryStreamExt: TryStream {
310330
/// assert_eq!(Err(oneshot::Canceled), await!(fut));
311331
/// # })
312332
/// ```
333+
#[cfg_attr(
334+
feature = "cfg-target-has-atomic",
335+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
336+
)]
313337
#[cfg(feature = "alloc")]
314338
fn try_for_each_concurrent<Fut, F>(
315339
self,
@@ -545,6 +569,10 @@ pub trait TryStreamExt: TryStream {
545569
/// assert_eq!(await!(buffered.next()), Some(Err("error in the stream")));
546570
/// # })
547571
/// ```
572+
#[cfg_attr(
573+
feature = "cfg-target-has-atomic",
574+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
575+
)]
548576
#[cfg(feature = "alloc")]
549577
fn try_buffer_unordered(self, n: usize) -> TryBufferUnordered<Self>
550578
where Self::Ok: TryFuture<Error = Self::Error>,

futures/src/lib.rs

+26-3
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,16 @@ pub mod future {
202202
Join5, Map, Then,
203203
};
204204

205+
#[cfg(feature = "alloc")]
206+
pub use futures_util::future::{join_all, JoinAll};
207+
208+
#[cfg_attr(
209+
feature = "cfg-target-has-atomic",
210+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
211+
)]
205212
#[cfg(feature = "alloc")]
206213
pub use futures_util::future::{
207214
abortable, Abortable, AbortHandle, AbortRegistration, Aborted,
208-
209-
join_all, JoinAll,
210215
};
211216

212217
#[cfg(feature = "std")]
@@ -340,13 +345,23 @@ pub mod stream {
340345
Take, TakeWhile, Then, Zip
341346
};
342347

348+
#[cfg(feature = "alloc")]
349+
pub use futures_util::stream::{
350+
// For StreamExt:
351+
Chunks,
352+
};
353+
354+
#[cfg_attr(
355+
feature = "cfg-target-has-atomic",
356+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
357+
)]
343358
#[cfg(feature = "alloc")]
344359
pub use futures_util::stream::{
345360
futures_ordered, FuturesOrdered,
346361
futures_unordered, FuturesUnordered,
347362

348363
// For StreamExt:
349-
BufferUnordered, Buffered, Chunks, SplitStream, SplitSink,
364+
BufferUnordered, Buffered, SplitStream, SplitSink,
350365

351366
select_all, SelectAll,
352367
};
@@ -365,6 +380,10 @@ pub mod stream {
365380
// ToDo: AndThen, ErrInto, InspectErr, MapErr, OrElse
366381
};
367382

383+
#[cfg_attr(
384+
feature = "cfg-target-has-atomic",
385+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
386+
)]
368387
#[cfg(feature = "alloc")]
369388
pub use futures_util::try_stream::{
370389
// For TryStreamExt:
@@ -391,6 +410,10 @@ pub mod task {
391410

392411
pub use futures_util::task::noop_waker;
393412

413+
#[cfg_attr(
414+
feature = "cfg-target-has-atomic",
415+
cfg(all(target_has_atomic = "cas", target_has_atomic = "ptr"))
416+
)]
394417
#[cfg(feature = "alloc")]
395418
pub use futures_util::task::{
396419
WakerRef, waker_ref, ArcWake,

0 commit comments

Comments
 (0)