diff --git a/Cargo.toml b/Cargo.toml index 0d322ba..11cc6a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,3 +15,6 @@ name = "rusqlite" [dependencies] time = "~0.1.0" bitflags = "~0.1" + +[dependencies.libsqlite3-sys] +path = "libsqlite3-sys" diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..5001b67 --- /dev/null +++ b/build.rs @@ -0,0 +1,5 @@ +extern crate "pkg-config" as pkg_config; + +fn main() { + pkg_config::find_library("sqlite3").unwrap(); +} diff --git a/libsqlite3-sys/.gitignore b/libsqlite3-sys/.gitignore new file mode 100644 index 0000000..5f0a3e1 --- /dev/null +++ b/libsqlite3-sys/.gitignore @@ -0,0 +1,3 @@ +/target/ +/doc/ +Cargo.lock diff --git a/libsqlite3-sys/Cargo.toml b/libsqlite3-sys/Cargo.toml new file mode 100644 index 0000000..149c3f6 --- /dev/null +++ b/libsqlite3-sys/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "libsqlite3-sys" +version = "0.0.9" +authors = ["John Gallagher "] +description = "Native bindings to the libsqlite3 library" +license = "MIT" +links = "sqlite3" +build = "build.rs" + +[build-dependencies] +pkg-config = "~0.2" diff --git a/libsqlite3-sys/build.rs b/libsqlite3-sys/build.rs new file mode 100644 index 0000000..5001b67 --- /dev/null +++ b/libsqlite3-sys/build.rs @@ -0,0 +1,5 @@ +extern crate "pkg-config" as pkg_config; + +fn main() { + pkg_config::find_library("sqlite3").unwrap(); +} diff --git a/src/ffi/bindgen.rs b/libsqlite3-sys/src/bindgen.rs similarity index 99% rename from src/ffi/bindgen.rs rename to libsqlite3-sys/src/bindgen.rs index e6d3871..b79b0f8 100644 --- a/src/ffi/bindgen.rs +++ b/libsqlite3-sys/src/bindgen.rs @@ -1,4 +1,4 @@ -#![allow(raw_pointer_derive)] +#![allow(raw_pointer_derive, non_snake_case, non_camel_case_types)] /* Running `target/bindgen /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sqlite3.h -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.0/include` */ /* automatically generated by rust-bindgen */ @@ -521,7 +521,6 @@ pub struct Struct_sqlite3_rtree_geometry { pub xDelUser: ::std::option::Option, } -#[link(name = "sqlite3")] extern "C" { pub static mut sqlite3_version: *const ::libc::c_char; pub static mut sqlite3_temp_directory: *mut ::libc::c_char; diff --git a/src/ffi/mod.rs b/libsqlite3-sys/src/lib.rs similarity index 98% rename from src/ffi/mod.rs rename to libsqlite3-sys/src/lib.rs index 62213a9..8f4712d 100644 --- a/src/ffi/mod.rs +++ b/libsqlite3-sys/src/lib.rs @@ -1,4 +1,10 @@ +#![feature(libc)] +#![allow(non_snake_case)] + +extern crate libc; + pub use self::bindgen::*; + use std::mem; use libc::{c_int, c_void}; diff --git a/src/lib.rs b/src/lib.rs index 2efedb7..a911809 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -52,6 +52,7 @@ #![cfg_attr(test, feature(test))] extern crate libc; +extern crate "libsqlite3-sys" as ffi; #[macro_use] extern crate rustc_bitflags; use std::mem; @@ -76,9 +77,6 @@ pub use transaction::{SqliteTransactionBehavior, pub mod types; mod transaction; -/// Automatically generated FFI bindings (via [bindgen](https://github.com/crabtw/rust-bindgen)). -#[allow(dead_code,non_snake_case,non_camel_case_types)] pub mod ffi; - /// A typedef of the result returned by many methods. pub type SqliteResult = Result; @@ -705,6 +703,7 @@ impl<'stmt> SqliteRow<'stmt> { #[cfg(test)] mod test { + extern crate "libsqlite3-sys" as ffi; use super::*; fn checked_memory_handle() -> SqliteConnection {