cfg_if::cfg_if! {
    if #[cfg(any(
        target_os = "linux",
        target_os = "android",
        all(target_os = "emscripten", target_feature = "atomics"),
        target_os = "freebsd",
        target_os = "openbsd",
        target_os = "dragonfly",
    ))] {
        mod futex_mutex;
        mod futex_rwlock;
        mod futex_condvar;
        pub(crate) use futex_mutex::{Mutex, MovableMutex};
        pub(crate) use futex_rwlock::{RwLock, MovableRwLock};
        pub(crate) use futex_condvar::MovableCondvar;
    } else if #[cfg(target_os = "fuchsia")] {
        mod fuchsia_mutex;
        mod futex_rwlock;
        mod futex_condvar;
        pub(crate) use fuchsia_mutex::{Mutex, MovableMutex};
        pub(crate) use futex_rwlock::{RwLock, MovableRwLock};
        pub(crate) use futex_condvar::MovableCondvar;
    } else {
        mod pthread_mutex;
        mod pthread_rwlock;
        mod pthread_condvar;
        pub(crate) use pthread_mutex::{Mutex, MovableMutex};
        pub(crate) use pthread_rwlock::{RwLock, MovableRwLock};
        pub(crate) use pthread_condvar::MovableCondvar;
    }
}
