Signed-off-by: Victor Porof <victor.porof@gmail.com>without.crypto
parent
a4776c0957
commit
6bd379824c
@ -0,0 +1,68 @@ |
|||||||
|
extern crate bindgen; |
||||||
|
|
||||||
|
use bindgen::callbacks::IntKind; |
||||||
|
use bindgen::callbacks::ParseCallbacks; |
||||||
|
use std::env; |
||||||
|
use std::path::PathBuf; |
||||||
|
|
||||||
|
#[derive(Debug)] |
||||||
|
struct Callbacks; |
||||||
|
|
||||||
|
impl ParseCallbacks for Callbacks { |
||||||
|
fn int_macro(&self, name: &str, _value: i64) -> Option<IntKind> { |
||||||
|
match name { |
||||||
|
"MDB_SUCCESS" |
||||||
|
| "MDB_KEYEXIST" |
||||||
|
| "MDB_NOTFOUND" |
||||||
|
| "MDB_PAGE_NOTFOUND" |
||||||
|
| "MDB_CORRUPTED" |
||||||
|
| "MDB_PANIC" |
||||||
|
| "MDB_VERSION_MISMATCH" |
||||||
|
| "MDB_INVALID" |
||||||
|
| "MDB_MAP_FULL" |
||||||
|
| "MDB_DBS_FULL" |
||||||
|
| "MDB_READERS_FULL" |
||||||
|
| "MDB_TLS_FULL" |
||||||
|
| "MDB_TXN_FULL" |
||||||
|
| "MDB_CURSOR_FULL" |
||||||
|
| "MDB_PAGE_FULL" |
||||||
|
| "MDB_MAP_RESIZED" |
||||||
|
| "MDB_INCOMPATIBLE" |
||||||
|
| "MDB_BAD_RSLOT" |
||||||
|
| "MDB_BAD_TXN" |
||||||
|
| "MDB_BAD_VALSIZE" |
||||||
|
| "MDB_BAD_DBI" |
||||||
|
| "MDB_LAST_ERRCODE" => Some(IntKind::Int), |
||||||
|
_ => Some(IntKind::UInt), |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
fn main() { |
||||||
|
let mut lmdb = PathBuf::from(&env::var("CARGO_MANIFEST_DIR").unwrap()); |
||||||
|
lmdb.push("lmdb"); |
||||||
|
lmdb.push("libraries"); |
||||||
|
lmdb.push("liblmdb"); |
||||||
|
|
||||||
|
let mut out_path = PathBuf::from(&env::var("CARGO_MANIFEST_DIR").unwrap()); |
||||||
|
out_path.push("src"); |
||||||
|
|
||||||
|
let bindings = bindgen::Builder::default() |
||||||
|
.header(lmdb.join("lmdb.h").to_string_lossy()) |
||||||
|
.whitelist_var("^(MDB|mdb)_.*") |
||||||
|
.whitelist_type("^(MDB|mdb)_.*") |
||||||
|
.whitelist_function("^(MDB|mdb)_.*") |
||||||
|
.ctypes_prefix("::libc") |
||||||
|
.blacklist_item("mode_t") |
||||||
|
.blacklist_item("^__.*") |
||||||
|
.parse_callbacks(Box::new(Callbacks {})) |
||||||
|
.layout_tests(false) |
||||||
|
.prepend_enum_name(false) |
||||||
|
.rustfmt_bindings(true) |
||||||
|
.generate() |
||||||
|
.expect("Unable to generate bindings"); |
||||||
|
|
||||||
|
bindings |
||||||
|
.write_to_file(out_path.join("bindings.rs")) |
||||||
|
.expect("Couldn't write bindings!"); |
||||||
|
} |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue