servicepoint/crates/servicepoint_binding_cs/build.rs

40 lines
1.2 KiB
Rust
Raw Normal View History

2024-05-28 19:38:43 +02:00
//! Build script generating the C# code needed to call methods from the `servicepoint` C library.
use std::fs;
fn main() {
2024-05-30 21:55:55 +02:00
println!("cargo::rerun-if-changed=../servicepoint_binding_c/src");
println!("cargo::rerun-if-changed=build.rs");
let mut builder = csbindgen::Builder::default();
let mut paths = fs::read_dir("../servicepoint_binding_c/src").unwrap()
.map(|x| x.unwrap().path())
.collect::<Vec<_>>();
paths.sort();
for path in paths {
println!("cargo:rerun-if-changed={}", path.display());
builder = builder.input_extern_file(path);
}
builder
.csharp_dll_name("servicepoint_binding_c")
.csharp_namespace("ServicePoint.BindGen")
.csharp_use_nint_types(true)
.csharp_class_accessibility("public")
.csharp_generate_const_filter(|_| true)
2024-08-29 21:40:33 +02:00
.csharp_type_rename(move |name| {
2024-09-05 21:15:53 +02:00
if name.len() > 2
&& name.starts_with("SP")
&& name.chars().nth(2).unwrap().is_uppercase()
2024-08-29 21:40:33 +02:00
{
2024-09-05 21:15:53 +02:00
name[2..].to_string()
2024-08-29 21:40:33 +02:00
} else {
name
}
})
.generate_csharp_file("ServicePoint/BindGen/ServicePoint.g.cs")
.unwrap();
}