-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild.rs
29 lines (23 loc) · 914 Bytes
/
build.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#![allow(dead_code)]
extern crate bindgen;
use std::env;
use std::path::PathBuf;
fn add_binding(header_path: &str) {
println!("cargo:rerun-if-changed={}", header_path);
let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
let binding_path = out_dir.join(header_path.replace(".h", ".rs"));
std::fs::create_dir_all(binding_path.parent().unwrap())
.expect(&format!("Cannot create directory for {}", binding_path.to_string_lossy()));
bindgen::Builder::default()
.header(header_path)
.derive_default(true)
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.generate()
.expect(&format!("Unable to generate binding {}", header_path))
.write_to_file(binding_path)
.expect("Cannot write binding");
}
fn main() {
#[cfg(all(target_os = "linux", feature = "native_scsi"))]
{add_binding("src/driver/scsi/bindings.h");}
}