d0f8cf32b3
set cfg(rustdoc) when rustdoc is running on a crate When using `#[doc(cfg)]` to document platform-specific items, it's a little cumbersome to get all the platforms' items to appear all at once. For example, the standard library adds `--cfg dox` to rustdoc's command line whenever it builds docs, and the documentation for `#![feature(doc_cfg)]` suggests using a Cargo feature to approximate the same thing. This is a little awkward, because you always need to remember to set `--features dox` whenever you build documentation. This PR proposes making rustdoc set `#[cfg(rustdoc)]` whenever it runs on a crate, to provide an officially-sanctioned version of this that is set automatically. This way, there's a standardized way to declare that a certain version of an item is specifically when building docs. To try to prevent the spread of this feature from happening too quickly, this PR also restricts the use of this flag to whenever `#![feature(doc_cfg)]` is active. I'm sure there are other uses for this, but right now i'm tying it to this feature. (If it makes more sense to give this its own feature, i can easily do that.)
67 lines
2.4 KiB
Rust
67 lines
2.4 KiB
Rust
// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
//! OS-specific functionality.
|
|
|
|
#![stable(feature = "os", since = "1.0.0")]
|
|
#![allow(missing_docs, nonstandard_style, missing_debug_implementations)]
|
|
|
|
cfg_if! {
|
|
if #[cfg(rustdoc)] {
|
|
|
|
// When documenting libstd we want to show unix/windows/linux modules as
|
|
// these are the "main modules" that are used across platforms. This
|
|
// should help show platform-specific functionality in a hopefully
|
|
// cross-platform way in the documentation
|
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use sys::unix_ext as unix;
|
|
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use sys::windows_ext as windows;
|
|
|
|
#[doc(cfg(target_os = "linux"))]
|
|
pub mod linux;
|
|
|
|
} else {
|
|
|
|
// If we're not documenting libstd then we just expose everything as we
|
|
// otherwise would.
|
|
|
|
#[cfg(target_os = "android")] pub mod android;
|
|
#[cfg(target_os = "bitrig")] pub mod bitrig;
|
|
#[cfg(target_os = "dragonfly")] pub mod dragonfly;
|
|
#[cfg(target_os = "freebsd")] pub mod freebsd;
|
|
#[cfg(target_os = "haiku")] pub mod haiku;
|
|
#[cfg(target_os = "ios")] pub mod ios;
|
|
#[cfg(target_os = "macos")] pub mod macos;
|
|
#[cfg(target_os = "netbsd")] pub mod netbsd;
|
|
#[cfg(target_os = "openbsd")] pub mod openbsd;
|
|
#[cfg(target_os = "solaris")] pub mod solaris;
|
|
#[cfg(target_os = "emscripten")] pub mod emscripten;
|
|
#[cfg(target_os = "fuchsia")] pub mod fuchsia;
|
|
#[cfg(target_os = "hermit")] pub mod hermit;
|
|
|
|
#[cfg(any(target_os = "redox", unix))]
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use sys::ext as unix;
|
|
|
|
#[cfg(windows)]
|
|
#[stable(feature = "rust1", since = "1.0.0")]
|
|
pub use sys::ext as windows;
|
|
|
|
#[cfg(any(target_os = "linux", target_os = "l4re"))]
|
|
pub mod linux;
|
|
|
|
}
|
|
}
|
|
|
|
pub mod raw;
|