boxdb 0.4.3

An extended SQLite client with typed columns and readable storage
Documentation
use std::path::{Path, PathBuf};

fn c_sources(directory: &Path) -> Vec<PathBuf> {
    let mut files = Vec::new();
    for entry in std::fs::read_dir(directory).expect("extension source directory") {
        let path = entry.expect("extension source entry").path();
        if path.is_dir() {
            files.extend(c_sources(&path));
        } else if path.extension().is_some_and(|extension| extension == "c") {
            files.push(path);
        }
    }
    files.sort();
    files
}

fn main() {
    println!("cargo:rerun-if-changed=vendor");
    cc::Build::new()
        .files(c_sources(Path::new("vendor/sqlean/text")))
        .files(c_sources(Path::new("vendor/sqlean/regexp")))
        .files(c_sources(Path::new("vendor/sqlite-recovery")))
        .include("vendor/sqlean")
        .include(std::env::var("DEP_SQLITE3_INCLUDE").expect("bundled SQLite headers"))
        .define("SQLITE_CORE", None)
        .define("PCRE2_CODE_UNIT_WIDTH", "8")
        .define("LINK_SIZE", "2")
        .define("HAVE_CONFIG_H", None)
        .define("SUPPORT_UNICODE", None)
        .define("PCRE2_STATIC", None)
        .warnings(false)
        .compile("boxdb_extensions");
}