git-subtree-dir: tool/abi-generator git-subtree-mainline: 7a0d528cdabd0ff344911b64e447a21e40bcbeaa git-subtree-split: 635bf51bb1cde626d477df477604d58d107bc037
35 lines
986 B
Rust
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();
|
|
}
|