Mark Poliakov d9b70439b8 Add 'tool/abi-generator/' from commit '635bf51bb1cde626d477df477604d58d107bc037'
git-subtree-dir: tool/abi-generator
git-subtree-mainline: 7a0d528cdabd0ff344911b64e447a21e40bcbeaa
git-subtree-split: 635bf51bb1cde626d477df477604d58d107bc037
2024-03-12 16:13:37 +02:00

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();
}