]>
git.proxmox.com Git - rustc.git/blob - src/tools/compiletest/src/util.rs
1 // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
14 /// Conversion table from triple OS name to Rust SYSNAME
15 const OS_TABLE
: &'
static [(&'
static str, &'
static str)] = &[
16 ("android", "android"),
19 ("dragonfly", "dragonfly"),
20 ("freebsd", "freebsd"),
24 ("mingw32", "windows"),
26 ("openbsd", "openbsd"),
28 ("windows", "windows"),
29 ("solaris", "solaris"),
30 ("emscripten", "emscripten"),
33 const ARCH_TABLE
: &'
static [(&'
static str, &'
static str)] = &[
34 ("aarch64", "aarch64"),
38 ("hexagon", "hexagon"),
44 ("powerpc", "powerpc"),
45 ("powerpc64", "powerpc64"),
54 pub fn get_os(triple
: &str) -> &'
static str {
55 for &(triple_os
, os
) in OS_TABLE
{
56 if triple
.contains(triple_os
) {
60 panic
!("Cannot determine OS from triple");
62 pub fn get_arch(triple
: &str) -> &'
static str {
63 for &(triple_arch
, arch
) in ARCH_TABLE
{
64 if triple
.contains(triple_arch
) {
68 panic
!("Cannot determine Architecture from triple");
71 pub fn get_env(triple
: &str) -> Option
<&str> {
72 triple
.split('
-'
).nth(3)
75 pub fn get_pointer_width(triple
: &str) -> &'
static str {
76 if triple
.contains("64") || triple
.starts_with("s390x") {
83 pub fn make_new_path(path
: &str) -> String
{
84 assert
!(cfg
!(windows
));
85 // Windows just uses PATH as the library search path, so we have to
86 // maintain the current value while adding our own
87 match env
::var(lib_path_env_var()) {
88 Ok(curr
) => format
!("{}{}{}", path
, path_div(), curr
),
89 Err(..) => path
.to_owned(),
93 pub fn lib_path_env_var() -> &'
static str {
96 fn path_div() -> &'
static str {
100 pub fn logv(config
: &Config
, s
: String
) {