27 lines
1.3 KiB
Rust
27 lines
1.3 KiB
Rust
use std::path::PathBuf;
|
|
|
|
fn main() {
|
|
let manifest_directory = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let dialect = manifest_directory.join("definitions/kaptan.xml");
|
|
let config = manifest_directory.join("definitions/kaptan/config.xml");
|
|
let log = manifest_directory.join("definitions/kaptan/log.xml");
|
|
for definition in [&dialect, &config, &log] {
|
|
println!("cargo::rerun-if-changed={}", definition.display());
|
|
}
|
|
println!("cargo::rustc-check-cfg=cfg(kaptan_has_messages)");
|
|
// The upstream generator conditionally emits derives for these optional
|
|
// ecosystem crates. Kaptan deliberately does not expose those incomplete
|
|
// features, so tell rustc the generated inactive cfgs are intentional.
|
|
println!("cargo::rustc-check-cfg=cfg(feature, values(\"serde\", \"arbitrary\", \"ts-rs\"))");
|
|
if std::env::var_os("CARGO_FEATURE_DIALECT_KAPTAN").is_some() {
|
|
let output_directory = std::env::var("OUT_DIR").unwrap();
|
|
let generated = mavlink_bindgen::generate(
|
|
mavlink_bindgen::XmlDefinitions::Files(vec![dialect]),
|
|
output_directory,
|
|
)
|
|
.unwrap();
|
|
mavlink_bindgen::emit_cargo_build_messages(&generated);
|
|
println!("cargo::rustc-cfg=kaptan_has_messages");
|
|
}
|
|
}
|