lifeblood_os/build.rs
2025-09-08 20:56:44 -07:00

33 lines
No EOL
1 KiB
Rust

fn main() {
let arch = std::env::var("LBOS_ARCH").unwrap_or("virt".to_string());
println!("cargo:rerun-if-env-changed=LBOS_ARCH");
println!("cargo:rustc-cfg=feature=\"arch_{}\"", arch);
println!("cargo:rerun-if-changed=src/arch/{}/asm", arch);
if arch == "ppc32" {
let mut cc_build = cc::Build::new();
let cc_build = cc_build
.file(format!("src/arch/{}/asm/realmode.S", arch))
.file(format!("src/arch/{}/asm/trap.S", arch));
match &arch[..] {
"ppc32" => {
cc_build
.flag("-mcpu=powerpc")
.flag("-m32")
.flag("-nostdlib")
.flag("-msoft-float");
},
_ => panic!("unknown architecture: {}", arch),
}
cc_build.compile("vap_asm");
// link to the assembly file
println!("cargo:rustc-link-lib=static=vap_asm");
}
// specify the linker.ld script
println!("cargo:rustc-link-arg=-Tsrc/arch/{arch}/asm/linker.ld");
}