forked from mirrors/gecko-dev
		
	Depends on D6168 Differential Revision: https://phabricator.services.mozilla.com/D6169 --HG-- rename : third_party/rust/num/bors.toml => third_party/rust/num-integer/bors.toml extra : moz-landing-system : lando
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			929 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			929 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
use std::env;
 | 
						|
use std::io::Write;
 | 
						|
use std::process::{Command, Stdio};
 | 
						|
 | 
						|
fn main() {
 | 
						|
    if probe("fn main() { 0i128; }") {
 | 
						|
        println!("cargo:rustc-cfg=has_i128");
 | 
						|
    } else if env::var_os("CARGO_FEATURE_I128").is_some() {
 | 
						|
        panic!("i128 support was not detected!");
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
/// Test if a code snippet can be compiled
 | 
						|
fn probe(code: &str) -> bool {
 | 
						|
    let rustc = env::var_os("RUSTC").unwrap_or_else(|| "rustc".into());
 | 
						|
    let out_dir = env::var_os("OUT_DIR").expect("environment variable OUT_DIR");
 | 
						|
 | 
						|
    let mut child = Command::new(rustc)
 | 
						|
        .arg("--out-dir")
 | 
						|
        .arg(out_dir)
 | 
						|
        .arg("--emit=obj")
 | 
						|
        .arg("-")
 | 
						|
        .stdin(Stdio::piped())
 | 
						|
        .spawn()
 | 
						|
        .expect("rustc probe");
 | 
						|
 | 
						|
    child
 | 
						|
        .stdin
 | 
						|
        .as_mut()
 | 
						|
        .expect("rustc stdin")
 | 
						|
        .write_all(code.as_bytes())
 | 
						|
        .expect("write rustc stdin");
 | 
						|
 | 
						|
    child.wait().expect("rustc probe").success()
 | 
						|
}
 |