lifeblood_os/build.rs

39 lines
No EOL
1.2 KiB
Rust

fn main() {
// define LBOS_FONT
if std::env::var("LBOS_FONT").is_err() {
println!("cargo:rustc-env=LBOS_FONT=charset1.data");
}
let arch = std::env::var("LBOS_ARCH").unwrap_or("virt".to_string());
println!("cargo:rerun-if-env-changed=LBOS_ARCH");
println!("cargo:rerun-if-env-changed=LBOS_FONT");
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");
}