]> git.proxmox.com Git - cargo.git/commitdiff
Auto merge of #1657 - alexcrichton:share-target-dirs, r=brson
authorbors <bors@rust-lang.org>
Thu, 4 Jun 2015 17:30:58 +0000 (17:30 +0000)
committerbors <bors@rust-lang.org>
Thu, 4 Jun 2015 17:30:58 +0000 (17:30 +0000)
This commit adds support to allow specifying a custom output directory to Cargo.
First, the `build.target-dir` configuration key is checked, and failing that the
`CARGO_TARGET_DIR` environment variable is checked, and failing that the root
package's directory joined with the directory name "target" is used.

There are a few caveats to switching target directories, however:

* If the target directory is in the current source tree, and the folder name is
  not called "target", then Cargo may walk the output directory when determining
  whether a tree is fresh.
* If the target directory is not called "target", then Cargo may look inside it
  currently for `Cargo.toml` files to learn about local packages.
* Concurrent usage of Cargo will still result in badness (#354), and this is now
  exascerbated because many Cargo projects can share the same output directory.
* The top-level crate is not cached for future compilations, so if a crate is
  built into directory `foo` and then that crate is later used as a dependency,
  it will be recompiled.

The naming limitations can be overcome in time, but for now it greatly
simplifies the crawling routines and shouldn't have much of a negative impact
other than some Cargo runtimes (which can in turn be negated by following the
"target" name convention).

Closes #482

1  2 
Cargo.lock
Cargo.toml
src/cargo/ops/cargo_rustc/mod.rs
src/cargo/util/config.rs

diff --cc Cargo.lock
Simple merge
diff --cc Cargo.toml
Simple merge
Simple merge
Simple merge