diff --git a/Cargo.toml b/Cargo.toml index 93f7d19..c198d9f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ version = "0.1.0" [build-dependencies] gcc = "0.3.35" -rustc-cfg = "0.1.2" +rustc-cfg = "0.2.0" [dependencies] diff --git a/build.rs b/build.rs index a05a1a5..cf9a24e 100644 --- a/build.rs +++ b/build.rs @@ -2,8 +2,9 @@ extern crate gcc; extern crate rustc_cfg; use std::collections::BTreeMap; -use std::env; +use std::io::Write; use std::path::Path; +use std::{env, io, process}; use rustc_cfg::Cfg; @@ -50,7 +51,10 @@ fn main() { let target = env::var("TARGET").unwrap(); let Cfg { ref target_arch, ref target_os, ref target_env, ref target_vendor, .. } = - Cfg::new(&target).unwrap(); + Cfg::new(&target).unwrap_or_else(|e| { + writeln!(io::stderr(), "{}", e).ok(); + process::exit(1) + }); // NOTE we are going to assume that llvm-target, what determines our codegen option, matches the // target triple. This is usually correct for our built-in targets but can break in presence of // custom targets, which can have arbitrary names.