]>
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 matches_os(triple
: &str, name
: &str) -> bool
{
55 // For the wasm32 bare target we ignore anything also ignored on emscripten
56 // and then we also recognize `wasm32-bare` as the os for the target
57 if triple
== "wasm32-unknown-unknown" {
58 return name
== "emscripten" || name
== "wasm32-bare"
60 for &(triple_os
, os
) in OS_TABLE
{
61 if triple
.contains(triple_os
) {
65 panic
!("Cannot determine OS from triple");
67 pub fn get_arch(triple
: &str) -> &'
static str {
68 for &(triple_arch
, arch
) in ARCH_TABLE
{
69 if triple
.contains(triple_arch
) {
73 panic
!("Cannot determine Architecture from triple");
76 pub fn get_env(triple
: &str) -> Option
<&str> {
77 triple
.split('
-'
).nth(3)
80 pub fn get_pointer_width(triple
: &str) -> &'
static str {
81 if (triple
.contains("64") && !triple
.ends_with("gnux32")) || triple
.starts_with("s390x") {
88 pub fn make_new_path(path
: &str) -> String
{
89 assert
!(cfg
!(windows
));
90 // Windows just uses PATH as the library search path, so we have to
91 // maintain the current value while adding our own
92 match env
::var(lib_path_env_var()) {
93 Ok(curr
) => format
!("{}{}{}", path
, path_div(), curr
),
94 Err(..) => path
.to_owned(),
98 pub fn lib_path_env_var() -> &'
static str {
101 fn path_div() -> &'
static str {
105 pub fn logv(config
: &Config
, s
: String
) {