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