Don't build headers for provider
This commit is contained in:
parent
7704614fd7
commit
3a451f704d
@ -26,8 +26,5 @@ rand_core = { version = "0.6.4", "default-features" = false, features = ["getran
|
||||
sha2 = { version = "0.10.8", "default-features" = false }
|
||||
signal-tokenizer = { git = "https://github.com/signalapp/Signal-FTS5-Extension" }
|
||||
|
||||
[features]
|
||||
extension = ["signal-tokenizer/extension"]
|
||||
|
||||
[build-dependencies]
|
||||
cbindgen = "0.27.0"
|
||||
|
||||
10
README.md
10
README.md
@ -22,14 +22,8 @@ RUSTFLAGS="--cfg aes_armv8" cargo build --release
|
||||
|
||||
# Usage
|
||||
|
||||
Cryptography provider needs to be registered right before opening the database:
|
||||
```c
|
||||
int status = signal_register_crypto_provider();
|
||||
assert(status == SQLITE_OK);
|
||||
|
||||
status = sqlite3_open_v2("path", &db, ...);
|
||||
assert(status == SQLITE_OK);
|
||||
```
|
||||
The resulting `.a`/`.lib` file needs to be linked with sqlcipher, and built with
|
||||
`-DSQLCIPHER_CRYPTO_CUSTOM=signal_crypto_provider_setup`.
|
||||
|
||||
# Legal things
|
||||
|
||||
|
||||
49
build.rs
49
build.rs
@ -1,12 +1,12 @@
|
||||
extern crate cbindgen;
|
||||
|
||||
use cbindgen::{Config, EnumConfig, ItemType, Language, Style};
|
||||
use cbindgen::{Config, EnumConfig, ExportConfig, ItemType, Language, Style};
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
|
||||
let config = Config {
|
||||
let mut config = Config {
|
||||
language: Language::C,
|
||||
header: Some(
|
||||
"/*\nCopyright (C) 2024 Signal Messenger, LLC.\nSPDX-License-Identifier: AGPL-3.0-only\n*/"
|
||||
@ -18,54 +18,39 @@ fn main() {
|
||||
prefix_with_name: true,
|
||||
..Default::default()
|
||||
},
|
||||
include_guard: Some("SIGNAL_FTS5_TOKENIZER_H_".into()),
|
||||
export: ExportConfig {
|
||||
item_types: vec![
|
||||
ItemType::Functions,
|
||||
ItemType::OpaqueItems,
|
||||
ItemType::Structs,
|
||||
ItemType::Typedefs,
|
||||
],
|
||||
..Default::default()
|
||||
},
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
let mut ext_config = config.clone();
|
||||
ext_config.include_guard = Some("SIGNAL_SQLCIPHER_EXTENSION_H".into());
|
||||
ext_config.export.exclude = vec![
|
||||
"sqlcipher_malloc".into(),
|
||||
"sqlcipher_register_provider".into(),
|
||||
"SqlCipherProvider".into(),
|
||||
];
|
||||
ext_config.export.item_types = vec![ItemType::Functions];
|
||||
|
||||
cbindgen::Builder::new()
|
||||
.with_crate(crate_dir.clone())
|
||||
.with_config(ext_config)
|
||||
.generate()
|
||||
.expect("Unable to generate bindings")
|
||||
.write_to_file("target/signal-sqlcipher-ext.h");
|
||||
|
||||
let mut fts5_config = config.clone();
|
||||
fts5_config.include_guard = Some("SIGNAL_FTS5_TOKENIZER_H_".into());
|
||||
fts5_config.export.item_types = vec![
|
||||
ItemType::Functions,
|
||||
ItemType::OpaqueItems,
|
||||
ItemType::Structs,
|
||||
ItemType::Typedefs,
|
||||
];
|
||||
|
||||
fts5_config
|
||||
config
|
||||
.export
|
||||
.rename
|
||||
.insert("Sqlite3".into(), "sqlite3".into());
|
||||
fts5_config
|
||||
config
|
||||
.export
|
||||
.rename
|
||||
.insert("SqliteAPIRoutines3".into(), "sqlite3_api_routines".into());
|
||||
fts5_config
|
||||
config
|
||||
.export
|
||||
.rename
|
||||
.insert("TokenFunction".into(), "sqlite3__fts5_token_fn".into());
|
||||
fts5_config.defines.insert(
|
||||
config.defines.insert(
|
||||
"feature = extension".into(),
|
||||
"SIGNAL_FTS5_TOKENIZER_EXTENSION_H_".into(),
|
||||
);
|
||||
|
||||
cbindgen::Builder::new()
|
||||
.with_crate_and_name(crate_dir, "signal-tokenizer")
|
||||
.with_config(fts5_config)
|
||||
.with_config(config)
|
||||
.generate()
|
||||
.expect("Unable to generate bindings")
|
||||
.write_to_file("target/signal-tokenizer.h");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user