embeddenator-interop 0.22.0

Kernel interop and system integration for Embeddenator
Documentation
fn main() {
    // Only generate C bindings when the c-bindings feature is enabled
    #[cfg(feature = "c-bindings")]
    {
        use std::env;
        use std::path::PathBuf;

        let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
        let output_dir = PathBuf::from(&crate_dir).join("include");

        // Create include directory if it doesn't exist
        std::fs::create_dir_all(&output_dir).expect("Failed to create include directory");

        let config = cbindgen::Config {
            language: cbindgen::Language::C,
            cpp_compat: true,
            include_guard: Some("EMBEDDENATOR_INTEROP_H".to_string()),
            header: Some("/* Embeddenator Interop FFI Bindings\n * Auto-generated by cbindgen\n * DO NOT EDIT MANUALLY\n */".to_string()),
            include_version: true,
            namespace: None,
            documentation: true,
            documentation_style: cbindgen::DocumentationStyle::C,
            tab_width: 4,
            line_length: 100,
            ..Default::default()
        };

        cbindgen::Builder::new()
            .with_crate(crate_dir)
            .with_config(config)
            .with_src("src/ffi.rs")
            .generate()
            .expect("Unable to generate C bindings")
            .write_to_file(output_dir.join("embeddenator_interop.h"));

        println!("cargo:rerun-if-changed=src/ffi.rs");
    }
}