diff --git a/libsql-ffi/Cargo.toml b/libsql-ffi/Cargo.toml index f769cacf1c..ad78acafe1 100644 --- a/libsql-ffi/Cargo.toml +++ b/libsql-ffi/Cargo.toml @@ -40,6 +40,7 @@ sqlean-extension-fuzzy = [] sqlean-extension-math = [] sqlean-extension-stats = [] sqlean-extension-text = [] +sqlean-extension-regexp = [] sqlean-extensions = [ "sqlean-extension-uuid", "sqlean-extension-crypto", @@ -47,6 +48,7 @@ sqlean-extensions = [ "sqlean-extension-math", "sqlean-extension-stats", "sqlean-extension-text", + "sqlean-extension-regexp", ] libsql-disable-checkpoint-downgrade = [] libsql-checkpoint-only-full= [] diff --git a/libsql-ffi/build.rs b/libsql-ffi/build.rs index c3c5beb0c4..dc599b48a9 100644 --- a/libsql-ffi/build.rs +++ b/libsql-ffi/build.rs @@ -252,6 +252,13 @@ pub fn build_bundled(out_dir: &str, out_path: &Path) { sqlean_patterns.push("uuid/*.c"); } + if cfg!(feature = "sqlean-extension-regexp") { + enabled_extensions.push("regexp"); + sqlean_patterns.push("regexp/*.c"); + sqlean_patterns.push("regexp/pcre2/pcre2_internal.h"); + sqlean_patterns.push("regexp/pcre2/*.c"); + } + if sqlean_patterns.is_empty() { cfg.file(format!("{BUNDLED_DIR}/src/sqlite3.c")); } else { @@ -263,6 +270,12 @@ pub fn build_bundled(out_dir: &str, out_path: &Path) { sqlean_sources.extend(glob(&full_pattern).unwrap().filter_map(Result::ok)); } + if cfg!(feature = "sqlean-extension-regexp") { + // PCRE2 needs some macroses defined externally in constants.h file + cfg.flag("-include") + .flag(format!("{BUNDLED_DIR}/sqlean/regexp/constants.h")); + } + cfg.files(sqlean_sources); let sqlean = Path::new(&env::var("OUT_DIR").unwrap()).join("sqlite3-sqlean-generated.c"); diff --git a/libsql-sys/Cargo.toml b/libsql-sys/Cargo.toml index 69839292d2..24d2e1465b 100644 --- a/libsql-sys/Cargo.toml +++ b/libsql-sys/Cargo.toml @@ -31,4 +31,5 @@ sqlean-extension-fuzzy = ["libsql-ffi/sqlean-extension-fuzzy"] sqlean-extension-math = ["libsql-ffi/sqlean-extension-math"] sqlean-extension-stats = ["libsql-ffi/sqlean-extension-stats"] sqlean-extension-text = ["libsql-ffi/sqlean-extension-text"] +sqlean-extension-regexp = ["libsql-ffi/sqlean-extension-regexp"] sqlean-extensions = ["libsql-ffi/sqlean-extensions"]