use std::path::PathBuf;
fn generate_bindings(async_enabled: bool, sources: &[&str], output: &str) {
let builder = sources.iter().fold(
rsbinder_aidl::Builder::new()
.set_crate_support(true)
.set_async_support(async_enabled),
|builder, source| builder.source(PathBuf::from(source)),
);
if let Err(err) = builder.output(PathBuf::from(output)).generate() {
eprintln!("generating {output}: {:?}", miette::Report::new(err));
std::process::exit(1);
}
}
fn main() {
let async_enabled = std::env::var_os("CARGO_FEATURE_ASYNC").is_some();
let generate =
|sources: &[&str], output: &str| generate_bindings(async_enabled, sources, output);
generate(
&["aidl/11/android/os/IServiceManager.aidl"],
"service_manager_11.rs",
);
generate(
&["aidl/12/android/os/IServiceManager.aidl"],
"service_manager_12.rs",
);
generate(
&["aidl/13/android/os/IServiceManager.aidl"],
"service_manager_13.rs",
);
generate(
&["aidl/14/android/os/IServiceManager.aidl"],
"service_manager_14.rs",
);
generate(
&["aidl/15/android/os/IServiceManager.aidl"],
"service_manager_15.rs",
);
generate(
&["aidl/16/android/os/IServiceManager.aidl"],
"service_manager_16.rs",
);
generate(&["aidl/16/android/os/IAccessor.aidl"], "accessor_16.rs");
generate(
&["aidl/permission/android/os/IPermissionController.aidl"],
"permission_controller.rs",
);
generate(
&["aidl/cancel/android/os/ICancellationSignal.aidl"],
"cancellation_signal.rs",
);
generate(
&[
"aidl/fmq/android/hardware/common/NativeHandle.aidl",
"aidl/fmq/android/hardware/common/fmq/GrantorDescriptor.aidl",
"aidl/fmq/android/hardware/common/fmq/MQDescriptor.aidl",
"aidl/fmq/android/hardware/common/fmq/SynchronizedReadWrite.aidl",
"aidl/fmq/android/hardware/common/fmq/UnsynchronizedWrite.aidl",
],
"fmq.rs",
);
generate(
&[
"aidl/stream/rsbinder/stream/StreamEndpoint.aidl",
"aidl/stream/rsbinder/stream/IStreamSink.aidl",
"aidl/stream/rsbinder/stream/IStreamSource.aidl",
],
"stream.rs",
);
}