windows-sandbox-rs/build.rs
39 lines
use std::env;use std::path::PathBuf;const SETUP_BIN: &str = "codex-windows-sandbox-setup";const SETUP_MANIFEST: &str = "codex-windows-sandbox-setup.manifest";fn main() -> Result<(), String> { println!("cargo:rerun-if-changed={SETUP_MANIFEST}"); if env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("windows") { return Ok(()); } let manifest_dir = env::var_os("CARGO_MANIFEST_DIR") .ok_or_else(|| "CARGO_MANIFEST_DIR should be set for build scripts".to_string())?; let manifest_path = PathBuf::from(manifest_dir).join(SETUP_MANIFEST); let manifest_path = manifest_path.display(); // Keep this scoped to the setup helper so Codex binaries that link the // library do not inherit any resource metadata from this package. match ( env::var("CARGO_CFG_TARGET_ENV").as_deref(), env::var("CARGO_CFG_TARGET_ABI").as_deref(), ) { (Ok("msvc"), _) => { println!("cargo:rustc-link-arg-bin={SETUP_BIN}=/MANIFEST:EMBED"); println!("cargo:rustc-link-arg-bin={SETUP_BIN}=/MANIFESTINPUT:{manifest_path}"); } (Ok("gnu"), Ok("llvm")) => { println!("cargo:rustc-link-arg-bin={SETUP_BIN}=-Wl,-Xlink=/manifest:embed"); println!( "cargo:rustc-link-arg-bin={SETUP_BIN}=-Wl,-Xlink=/manifestinput:{manifest_path}" ); } _ => {} } Ok(())}