35 lines
986 B
Rust

use std::{env, path::Path};
use abi_generator::{
abi::{ty::TypeWidth, AbiBuilder},
syntax::UnwrapFancy,
TargetEnv,
};
fn main() {
println!("cargo:rerun-if-changed={}", "syscall.abi");
let output_dir = env::var("OUT_DIR").unwrap();
let output = Path::new(&output_dir);
let abi = AbiBuilder::from_file(
"syscall.abi",
TargetEnv {
thin_pointer_width: TypeWidth::U64,
fat_pointer_width: TypeWidth::U128,
},
)
.unwrap_fancy("syscall.abi");
let types_file = prettyplease::unparse(
&abi.emit_file(true, false)
.unwrap_fancy("Could not emit generated types"),
);
let syscalls_file = prettyplease::unparse(
&abi.emit_file(false, true)
.unwrap_fancy("Could not emit generated syscalls"),
);
std::fs::write(output.join("generated_types.rs"), types_file).unwrap();
std::fs::write(output.join("generated_syscalls.rs"), syscalls_file).unwrap();
}