sqlite3-src 0.7.0

The package provides SQLite.
Documentation
use std::env;
use std::path::PathBuf;

fn main() {
    if !cfg!(feature = "bundled") && pkg_config::find_library("sqlite3").is_ok() {
        return;
    }

    let mut build = cc::Build::new();
    build.file("source/sqlite3.c");

    for (name, value) in env::vars() {
        if name.starts_with("SQLITE_") {
            build.define(&name, value.as_str());
        }
    }

    let target_family = env::var("CARGO_CFG_TARGET_FAMILY").unwrap();
    if target_family == "wasm" {
        let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap();
        let path = PathBuf::from(
            env::var("CARGO_CFG_SQLITE3_SRC_WASI_SDK_PATH")
                .or(env::var("WASI_SDK_PATH"))
                .expect("sqlite3_src_wasi_sdk_path or WASI_SDK_PATH should be set"),
        );
        let path = path.canonicalize().expect("the SDK path should be valid");
        build.compiler(path.join("bin/clang"));
        if target_os != "wasi" {
            let target_env = env::var("CARGO_CFG_SQLITE3_SRC_WASI_TARGET_ENV")
                .or(env::var("WASI_TARGET_ENV"))
                .expect("sqlite3_src_wasi_target_env or WASI_TARGET_ENV should be set");
            build.target(&format!("wasm32-wasi{target_env}"));
        }
        build.define("__wasi__", None);
        build.define("SQLITE_OMIT_LOAD_EXTENSION", "1");
        build.define("SQLITE_THREADSAFE", "0");
        build.flag("-Wno-unused");
        build.flag("-Wno-unused-parameter");
    }

    build.compile("libsqlite3.a");
}