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