kernel-demo/build.rs

31 lines
974 B
Rust

use std::{env, path::Path, process::Command};
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
Command::new("llvm-as")
.args(&["src/kernel_end.ll", "-o"])
.arg(&format!("{}/kernel_end.bc", out_dir))
.status()
.unwrap();
Command::new("llc")
.arg(&format!("{}/kernel_end.bc", out_dir))
.arg("-o")
.arg(&format!("{}/kernel_end.s", out_dir))
.status()
.unwrap();
Command::new("as")
.arg("-o")
.arg(&format!("{}/kernel_end.o", out_dir))
.arg(&format!("{}/kernel_end.s", out_dir))
.status()
.unwrap();
Command::new("ar")
.args(&["crus", "libkernel_end.a", "kernel_end.o"])
.current_dir(&Path::new(&out_dir))
.status()
.unwrap();
println!("cargo::rustc-link-search=native={}", out_dir);
println!("cargo::rustc-link-lib=static=kernel_end");
println!("cargo::rerun-if-changed=src/kernel_end.ll");
}