use std::{env, fs, path::PathBuf}; fn main() { let root = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()) .parent() .unwrap() .to_path_buf(); let mut bytes = Vec::new(); for (index, path) in [ "os-context-switch/src/context.rs", "scripts/os-acceptance/k1040-context-handoff.rs", "scripts/os-acceptance/k1040-context-completion.rs", ] .iter() .enumerate() { let path = root.join(path); println!("cargo:rerun-if-changed={}", path.display()); if index != 0 { bytes.extend_from_slice(b"\n"); } bytes.extend_from_slice(&fs::read(path).unwrap()); } let out = PathBuf::from(env::var("OUT_DIR").unwrap()); let output = out.join("context.rs"); fs::write(&output, bytes).unwrap(); fs::write( out.join("module.rs"), format!( "#[path = {:?}] pub mod context;\n", output.to_str().unwrap() ), ) .unwrap(); }