// Copyright (c) The camino Contributors // SPDX-License-Identifier: MIT OR Apache-2.0 //! Adapted from //! https://github.com/dtolnay/syn/blob/a54fb0098c6679f1312113ae2eec0305c51c7390/build.rs. use std::{env, process::Command, str}; // The rustc-cfg strings below are *not* public API. Please let us know by // opening a GitHub issue if your build environment requires some way to enable // these cfgs other than by executing our build script. fn main() { let compiler = match rustc_version() { Some(compiler) => compiler, None => return, }; // NOTE: // Adding a new cfg gated by Rust version MUST be accompanied by an addition to the matrix in // .github/workflows/ci.yml. if compiler.minor >= 44 { println!("cargo:rustc-cfg=path_buf_capacity"); } } struct Compiler { minor: u32, } fn rustc_version() -> Option { let rustc = env::var_os("RUSTC")?; let output = Command::new(rustc).arg("--version").output().ok()?; let version = str::from_utf8(&output.stdout).ok()?; let mut pieces = version.split('.'); if pieces.next() != Some("rustc 1") { return None; } let minor = pieces.next()?.parse().ok()?; Some(Compiler { minor }) }