| use std::env; |
| use std::ffi::OsString; |
| use std::process::Command; |
| |
| fn main() { |
| let rustc = env::var_os("RUSTC").unwrap_or(OsString::from("rustc")); |
| let output = Command::new(&rustc) |
| .arg("--version") |
| .output() |
| .unwrap() |
| .stdout; |
| let version = String::from_utf8(output).unwrap(); |
| |
| // If we're using nightly Rust, then we can enable vector optimizations. |
| // Note that these aren't actually activated unless the `nightly` feature |
| // is enabled. |
| // |
| // We also don't activate these if we've explicitly disabled auto |
| // optimizations. Disabling auto optimizations is intended for use in |
| // tests, so that we can reliably test fallback implementations. |
| if env::var_os("CARGO_CFG_REGEX_DISABLE_AUTO_OPTIMIZATIONS").is_none() { |
| if version.contains("nightly") { |
| println!("cargo:rustc-cfg=regex_runtime_teddy_ssse3"); |
| println!("cargo:rustc-cfg=regex_runtime_teddy_avx2"); |
| } |
| } |
| } |