133d722a9Sopenharmony_ciuse std::env; 233d722a9Sopenharmony_ciuse std::path::Path; 333d722a9Sopenharmony_ciuse std::process::Command; 433d722a9Sopenharmony_ci 533d722a9Sopenharmony_cifn main() { 633d722a9Sopenharmony_ci if let Some(rustc) = rustc_version() { 733d722a9Sopenharmony_ci if rustc.minor < 60 { 833d722a9Sopenharmony_ci println!("cargo:warning=The cxx crate requires a rustc version 1.60.0 or newer."); 933d722a9Sopenharmony_ci println!( 1033d722a9Sopenharmony_ci "cargo:warning=You appear to be building with: {}", 1133d722a9Sopenharmony_ci rustc.version, 1233d722a9Sopenharmony_ci ); 1333d722a9Sopenharmony_ci } 1433d722a9Sopenharmony_ci } 1533d722a9Sopenharmony_ci} 1633d722a9Sopenharmony_ci 1733d722a9Sopenharmony_cistruct RustVersion { 1833d722a9Sopenharmony_ci version: String, 1933d722a9Sopenharmony_ci minor: u32, 2033d722a9Sopenharmony_ci} 2133d722a9Sopenharmony_ci 2233d722a9Sopenharmony_cifn rustc_version() -> Option<RustVersion> { 2333d722a9Sopenharmony_ci let rustc = env::var_os("RUSTC")?; 2433d722a9Sopenharmony_ci let output = Command::new(rustc).arg("--version").output().ok()?; 2533d722a9Sopenharmony_ci let version = String::from_utf8(output.stdout).ok()?; 2633d722a9Sopenharmony_ci let mut pieces = version.split('.'); 2733d722a9Sopenharmony_ci if pieces.next() != Some("rustc 1") { 2833d722a9Sopenharmony_ci return None; 2933d722a9Sopenharmony_ci } 3033d722a9Sopenharmony_ci let minor = pieces.next()?.parse().ok()?; 3133d722a9Sopenharmony_ci Some(RustVersion { version, minor }) 3233d722a9Sopenharmony_ci} 33