Skip to content

Commit

Permalink
static feature for proper static linking, on libsqlite3_sys
Browse files Browse the repository at this point in the history
  • Loading branch information
asg017 committed Oct 6, 2023
1 parent 7624c13 commit 84de029
Show file tree
Hide file tree
Showing 11 changed files with 350 additions and 43 deletions.
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@ sqlite-loadable-macros={version="0.0.3", path="./sqlite-loadable-macros"}
serde = {version="1.0.147", features = ["derive"]}
serde_json = "1.0.87"
bitflags = "1.3.2"
libsqlite3-sys = {version="0.26.0", default-features = false, optional=true, features=["bundled"]}

[dev-dependencies]
rusqlite = "0.29.0"
libsqlite3-sys = {version="0.26.0", default-features = false, features=["bundled"]}

[features]
static = ["libsqlite3-sys"]
exec = []

[lib]
Expand Down
2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
test:
cargo test
cargo test --features=exec
cargo test --features=static
cargo build --examples --features=
python3 examples/test-examples.py
7 changes: 0 additions & 7 deletions NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,6 @@ Solution: the `ext.rs` functions need to export different functions (either `pAp

Though there's no `crate_type="cdylib"` macro we can use, so gotta introduce a new feature flag. Also means builds will be weird.

```toml
[dependencies]
libsqlite3-sys = {version="0.26.0", default-features = false, optional=true, features=["bundled"]}

[features]
static = ["libsqlite3-sys"]
```

```rs
#[cfg(feature = "static")]
Expand Down
21 changes: 9 additions & 12 deletions src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,17 @@

use crate::constants::SQLITE_OKAY;
use crate::ext::{
sqlite3ext_context_db_handle, sqlite3ext_get_auxdata, sqlite3ext_mprintf,
sqlite3ext_overload_function, sqlite3ext_result_blob, sqlite3ext_result_double,
sqlite3ext_result_error, sqlite3ext_result_error_code, sqlite3ext_result_int,
sqlite3ext_result_int64, sqlite3ext_result_null, sqlite3ext_result_pointer,
sqlite3ext_result_subtype, sqlite3ext_result_text, sqlite3ext_set_auxdata,
sqlite3ext_value_blob, sqlite3ext_value_bytes, sqlite3ext_value_double, sqlite3ext_value_int,
sqlite3ext_value_int64, sqlite3ext_value_pointer, sqlite3ext_value_subtype,
sqlite3ext_value_text, sqlite3ext_value_type,
sqlite3, sqlite3_context, sqlite3_value, sqlite3ext_context_db_handle, sqlite3ext_get_auxdata,
sqlite3ext_mprintf, sqlite3ext_overload_function, sqlite3ext_result_blob,
sqlite3ext_result_double, sqlite3ext_result_error, sqlite3ext_result_error_code,
sqlite3ext_result_int, sqlite3ext_result_int64, sqlite3ext_result_null,
sqlite3ext_result_pointer, sqlite3ext_result_subtype, sqlite3ext_result_text,
sqlite3ext_set_auxdata, sqlite3ext_value_blob, sqlite3ext_value_bytes, sqlite3ext_value_double,
sqlite3ext_value_int, sqlite3ext_value_int64, sqlite3ext_value_pointer,
sqlite3ext_value_subtype, sqlite3ext_value_text, sqlite3ext_value_type,
};
use crate::Error;
use sqlite3ext_sys::{
sqlite3, sqlite3_context, sqlite3_value, SQLITE_BLOB, SQLITE_FLOAT, SQLITE_INTEGER,
SQLITE_NULL, SQLITE_TEXT,
};
use sqlite3ext_sys::{SQLITE_BLOB, SQLITE_FLOAT, SQLITE_INTEGER, SQLITE_NULL, SQLITE_TEXT};
use std::os::raw::c_int;
use std::slice::from_raw_parts;
use std::str::Utf8Error;
Expand Down
3 changes: 1 addition & 2 deletions src/collation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
use crate::{
constants::SQLITE_OKAY,
errors::{Error, ErrorKind, Result},
ext::sqlite3ext_collation_v2,
ext::{sqlite3, sqlite3ext_collation_v2},
};
use sqlite3ext_sys::sqlite3;
use std::{ffi::CString, os::raw::c_void};

use sqlite3ext_sys::SQLITE_UTF8;
Expand Down
7 changes: 5 additions & 2 deletions src/entrypoints.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
//! Utilities for working with SQLite's "sqlite3_extension_init"-style
//! entrypoints.
use crate::{errors::Result, ext::faux_sqlite_extension_init2};
use crate::{
errors::Result,
ext::{faux_sqlite_extension_init2, sqlite3, sqlite3_api_routines},
};

use sqlite3ext_sys::{sqlite3, sqlite3_api_routines, SQLITE_OK};
use sqlite3ext_sys::SQLITE_OK;

use std::os::raw::{c_char, c_uint};

Expand Down
Loading

0 comments on commit 84de029

Please sign in to comment.