rustc: Add cargo's lib directory to search paths

This commit is contained in:
Brian Anderson 2012-01-05 16:03:28 -08:00
parent 54cf0e9c0d
commit e746ed6880
2 changed files with 29 additions and 8 deletions

View File

@ -5,6 +5,7 @@ use std;
import rustc::syntax::{ast, codemap, visit};
import rustc::syntax::parse::parser;
import rustc::util::filesearch::get_cargo_root;
import std::fs;
import std::generic_os;
@ -300,14 +301,9 @@ fn load_source_packages(&c: cargo, &src: source) {
}
fn configure() -> cargo {
let p = alt generic_os::getenv("CARGO_ROOT") {
some(_p) { _p }
none. {
alt generic_os::getenv("HOME") {
some(_q) { fs::connect(_q, ".cargo") }
none. { fail "no CARGO_ROOT or HOME"; }
}
}
let p = alt get_cargo_root() {
result::ok(p) { p }
result::err(e) { fail e }
};
let sources = map::new_str_hash::<source>();

View File

@ -6,6 +6,8 @@ import core::option;
import std::fs;
import vec;
import std::os;
import result;
import std::generic_os;
export filesearch;
export mk_filesearch;
@ -13,6 +15,7 @@ export pick;
export pick_file;
export search;
export relative_target_lib_path;
export get_cargo_root;
type pick<T> = block(path: fs::path) -> option::t<T>;
@ -38,6 +41,10 @@ fn mk_filesearch(maybe_sysroot: option::t<fs::path>,
fn lib_search_paths() -> [fs::path] {
addl_lib_search_paths
+ [make_target_lib_path(sysroot, target_triple)]
+ alt get_cargo_lib_path() {
result::ok(p) { [p] }
result::err(p) { [] }
}
}
fn get_target_lib_path() -> fs::path {
@ -99,3 +106,21 @@ fn get_sysroot(maybe_sysroot: option::t<fs::path>) -> fs::path {
option::none. { get_default_sysroot() }
}
}
fn get_cargo_root() -> result::t<fs::path, str> {
alt generic_os::getenv("CARGO_ROOT") {
some(_p) { result::ok(_p) }
none. {
alt generic_os::getenv("HOME") {
some(_q) { result::ok(fs::connect(_q, ".cargo")) }
none. { result::err("no CARGO_ROOT or HOME") }
}
}
}
}
fn get_cargo_lib_path() -> result::t<fs::path, str> {
result::chain(get_cargo_root()) { |p|
result::ok(fs::connect(p, "lib"))
}
}