mirror of
https://github.com/rust-lang/cargo
synced 2024-09-05 23:55:43 +00:00
|
||
---|---|---|
.vagrant/machines/default/virtualbox | ||
DESIGN | ||
libs | ||
src | ||
tests | ||
.gitignore | ||
.gitmodules | ||
.travis.check.style.sh | ||
.travis.install.deps.sh | ||
.travis.yml | ||
.vimrc | ||
Makefile | ||
MANIFEST.md | ||
README.md | ||
Vagrantfile |
Compiling cargo
You'll want to clone cargo using --recursive on git, to clone in it's submodule dependencies.
$ git clone --recursive https://github.com/carlhuda/cargo
or
$ git submodule init
$ git submodule update
Then it's as simple as make
and you're ready to go.
Porcelain
cargo-compile
$ cargo compile
This command assumes the following directory structure:
|Cargo.toml
|~src
| | {main,lib}.rs
|~target
| |~x86_64-apple-darwin
| | |~lib
| | | |~[symlinked dependencies]
| | | | [build artifacts]
| |~...
When running cargo compile
, Cargo runs the following steps:
cargo verify --manifest=[location of Cargo.toml]
- ... TODO: dependency resolution and downloading ...
cargo prepare
cargo rustc --out-dir=[from Cargo.toml]/[platform] -L [from Cargo.toml]/[platform]/lib ...
Plumbing
cargo-verify
$ cargo verify --manifest=MANIFEST
Verifies that the manifest is in the location specified, in a valid format, and contains all of the required sections.
Success
{ "success": true }
Errors
{
"invalid": < "not-found" | "invalid-format" >,
"missing-field": [ required-field... ],
"missing-source": bool,
"unwritable-target": bool
}
cargo-rustc
$ cargo rustc --out-dir=LOCATION -L LIBDIR -- ...ARGS
cargo-prepare
Prepare the directories (including symlinking dependency libraries) to
be ready for the flags Cargo plans to pass into rustc
.
NOTES and OPEN QUESTIONS
- We need to support per-platform calls to
make
(et al) to build native (mostly C) code. Should this be part ofprepare
or a different step betweenprepare
andcargo-rustc
.