Skip to content
Snippets Groups Projects
  • Francis Gagné's avatar
    18341fd2
    Rename the dox configuration option to cross_platform_docs · 18341fd2
    Francis Gagné authored
    The libc crate is used as a dependency of the Rust compiler. Its build
    system passes `--cfg dox` to all crates when generating their
    documentation. libc's documentation is generated when the build system
    is asked to generate the compiler documentation because `cargo doc`
    automatically documents all dependencies.
    
    When the dox configuration option is enabled, libc disables its
    dependency on the core crate and provides the necessary definitions
    itself. The dox configuration option is meant for generating
    documentation for a multitude of targets even if the core crate for that
    target is not installed. However, when documenting the compiler, it's
    not necessary to do that; we can just use core or std as usual.
    
    This change is motivated by the changes made to the compiler in
    rust-lang/rust#48171. With these changes, it's necessary to provide
    implementations of the Clone and Copy traits for some primitive types in
    the library that defines these traits (previously, these implementations
    were provided by the compiler). Normally, these traits (and thus the
    implementations) are provided by core, so any crate that uses
    `#![no_core]` must now provide its own copy of the implementations.
    
    Because libc doesn't provide its own copy of the implementations yet,
    and because the compiler's build system passes `--cfg dox` to libc,
    generating the documentation for the compiler fails when generating
    documentation for libc. By renaming the configuration option, libc will
    use core or std and will thus have the necessary definitions for the
    documentation to be generated successfully.
    18341fd2
    History
    Rename the dox configuration option to cross_platform_docs
    Francis Gagné authored
    The libc crate is used as a dependency of the Rust compiler. Its build
    system passes `--cfg dox` to all crates when generating their
    documentation. libc's documentation is generated when the build system
    is asked to generate the compiler documentation because `cargo doc`
    automatically documents all dependencies.
    
    When the dox configuration option is enabled, libc disables its
    dependency on the core crate and provides the necessary definitions
    itself. The dox configuration option is meant for generating
    documentation for a multitude of targets even if the core crate for that
    target is not installed. However, when documenting the compiler, it's
    not necessary to do that; we can just use core or std as usual.
    
    This change is motivated by the changes made to the compiler in
    rust-lang/rust#48171. With these changes, it's necessary to provide
    implementations of the Clone and Copy traits for some primitive types in
    the library that defines these traits (previously, these implementations
    were provided by the compiler). Normally, these traits (and thus the
    implementations) are provided by core, so any crate that uses
    `#![no_core]` must now provide its own copy of the implementations.
    
    Because libc doesn't provide its own copy of the implementations yet,
    and because the compiler's build system passes `--cfg dox` to libc,
    generating the documentation for the compiler fails when generating
    documentation for libc. By renaming the configuration option, libc will
    use core or std and will thus have the necessary definitions for the
    documentation to be generated successfully.