Skip to content
Snippets Groups Projects
  • Nathan Froyd's avatar
    f7fb6722
    Bug 1231764 - part 6 - build rust code via cargo; r=chmanchester · f7fb6722
    Nathan Froyd authored
    This patch is really two separate changes.
    
    The first change is that rust crates are large, standalone entities that
    may contain multitudes of source files.  It therefore doesn't make sense
    to keep them in SOURCES, as we have been doing.  Moving to use cargo
    will require a higher-level approach, which suggests that we need a
    different, higher-level representation for Rust sources in the build
    system.
    
    The representation here is to have the build system refer to things
    defined in Cargo.toml files as the entities dealt with in the build
    system, and let Cargo deal with the details of actually building things.
    This approach means that adding a new crate to an existing library just
    requires editing Rust and Cargo.toml files, rather than dealing with
    moz.build, which seems more natural to Rust programmers.  By having the
    source files for libraries (and binaries in subsequent iterations of
    this support) checked in to the tree, we can also take advantage of
    Cargo.lock files.
    
    The second is that we switch the core build system over to building via
    cargo, rather than invoking rustc directly.
    
    We also clean up a number of leftover things from the Old Way of doing
    things.  A number of tests are added to confirm that we'll only permit
    crates to be built that have dependencies in-tree.
    f7fb6722
    History
    Bug 1231764 - part 6 - build rust code via cargo; r=chmanchester
    Nathan Froyd authored
    This patch is really two separate changes.
    
    The first change is that rust crates are large, standalone entities that
    may contain multitudes of source files.  It therefore doesn't make sense
    to keep them in SOURCES, as we have been doing.  Moving to use cargo
    will require a higher-level approach, which suggests that we need a
    different, higher-level representation for Rust sources in the build
    system.
    
    The representation here is to have the build system refer to things
    defined in Cargo.toml files as the entities dealt with in the build
    system, and let Cargo deal with the details of actually building things.
    This approach means that adding a new crate to an existing library just
    requires editing Rust and Cargo.toml files, rather than dealing with
    moz.build, which seems more natural to Rust programmers.  By having the
    source files for libraries (and binaries in subsequent iterations of
    this support) checked in to the tree, we can also take advantage of
    Cargo.lock files.
    
    The second is that we switch the core build system over to building via
    cargo, rather than invoking rustc directly.
    
    We also clean up a number of leftover things from the Old Way of doing
    things.  A number of tests are added to confirm that we'll only permit
    crates to be built that have dependencies in-tree.
This project manages its dependencies using Cargo. Learn more
Cargo.toml 177 B