33 lines
No EOL
1 KiB
Rust
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");
|
|
} |