lifeblood_os/build.rs

39 lines
1.2 KiB
Rust
Raw Permalink Normal View History

2025-09-08 20:52:06 -07:00
fn main() {
2025-09-14 23:42:26 -07:00
// define LBOS_FONT
if std::env::var("LBOS_FONT").is_err() {
println!("cargo:rustc-env=LBOS_FONT=charset1.data");
}
2025-09-08 20:52:06 -07:00
let arch = std::env::var("LBOS_ARCH").unwrap_or("virt".to_string());
println!("cargo:rerun-if-env-changed=LBOS_ARCH");
2025-09-12 18:25:48 -07:00
println!("cargo:rerun-if-env-changed=LBOS_FONT");
2025-09-08 20:52:06 -07:00
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");
}