mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-24 01:49:19 +08:00
Simplify bindgen generation
`rusqlite` users cannot use old versions (< 3.8.3) of SQLite anymore. And `libsqlite3-sys` users should not use SQLITE_DETERMINISTIC when using SQLite < 3.8.3.
This commit is contained in:
parent
f0a29020f5
commit
58113b0777
@ -522,7 +522,6 @@ mod bindings {
|
|||||||
|
|
||||||
pub fn write_to_out_dir(header: HeaderLocation, out_path: &Path) {
|
pub fn write_to_out_dir(header: HeaderLocation, out_path: &Path) {
|
||||||
let header: String = header.into();
|
let header: String = header.into();
|
||||||
let mut output = Vec::new();
|
|
||||||
let mut bindings = bindgen::builder()
|
let mut bindings = bindgen::builder()
|
||||||
.default_macro_constant_type(bindgen::MacroTypeVariation::Signed)
|
.default_macro_constant_type(bindgen::MacroTypeVariation::Signed)
|
||||||
.disable_nested_struct_naming()
|
.disable_nested_struct_naming()
|
||||||
@ -631,21 +630,7 @@ mod bindings {
|
|||||||
.layout_tests(false)
|
.layout_tests(false)
|
||||||
.generate()
|
.generate()
|
||||||
.unwrap_or_else(|_| panic!("could not run bindgen on header {}", header))
|
.unwrap_or_else(|_| panic!("could not run bindgen on header {}", header))
|
||||||
.write(Box::new(&mut output))
|
.write_to_file(out_path)
|
||||||
.expect("could not write output of bindgen");
|
|
||||||
let mut output = String::from_utf8(output).expect("bindgen output was not UTF-8?!");
|
|
||||||
|
|
||||||
// rusqlite's functions feature ors in the SQLITE_DETERMINISTIC flag when it
|
|
||||||
// can. This flag was added in SQLite 3.8.3, but oring it in in prior
|
|
||||||
// versions of SQLite is harmless. We don't want to not build just
|
|
||||||
// because this flag is missing (e.g., if we're linking against
|
|
||||||
// SQLite 3.7.x), so append the flag manually if it isn't present in bindgen's
|
|
||||||
// output.
|
|
||||||
if !output.contains("pub const SQLITE_DETERMINISTIC") {
|
|
||||||
output.push_str("\npub const SQLITE_DETERMINISTIC: i32 = 2048;\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
fs::write(out_path, output.as_bytes())
|
|
||||||
.unwrap_or_else(|_| panic!("Could not write to {:?}", out_path));
|
.unwrap_or_else(|_| panic!("Could not write to {:?}", out_path));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user