You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1008 B
37 lines
1008 B
extern crate cbindgen; |
|
|
|
use std::env; |
|
use std::path::PathBuf; |
|
use cbindgen::{Config, Language}; |
|
|
|
fn main() { |
|
let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); |
|
|
|
let package_name = env::var("CARGO_PKG_NAME").unwrap(); |
|
let output_file = target_dir() |
|
.join(format!("{}.h", package_name)) |
|
.display() |
|
.to_string(); |
|
|
|
let config = Config { |
|
language: Language::C, |
|
cpp_compat: true, |
|
namespace: Some(String::from("zeroidc")), |
|
..Default::default() |
|
}; |
|
|
|
cbindgen::generate_with_config(&crate_dir, config) |
|
.unwrap() |
|
.write_to_file(&output_file); |
|
} |
|
|
|
/// Find the location of the `target/` directory. Note that this may be |
|
/// overridden by `cmake`, so we also need to check the `CARGO_TARGET_DIR` |
|
/// variable. |
|
fn target_dir() -> PathBuf { |
|
if let Ok(target) = env::var("CARGO_TARGET_DIR") { |
|
PathBuf::from(target) |
|
} else { |
|
PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("target") |
|
} |
|
} |