mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-22 16:29:20 +08:00
Use pkg-config to generate sqlite link dependencies
When built as a static library, sqlite (or sqlcipher) doesn't carry additional link dependencies with it, and the libsqlite3-sys rlib doesn't pick them up either. A dependent crate attempting to link against rusqlite then has to specify these additional link commands, and even then they need to be specified before the libsqlite3-sys rlib is specified on the command line. Fix this by attempting to use pkg-config when the (SQLITE3|SQLCIPHER)_LIB_DIR is specified, since these builds produce the pkg-config link dependency information, and the pkg_config crate can automatically generate the correct link commands using that. (Additionally, since (SQLITE3|SQLCIPHER)_STATIC is already defined, or not, the --static flag will be correctly configured for pkg_config)
This commit is contained in:
parent
df493bb217
commit
9f009fe1e0
@ -134,8 +134,14 @@ mod build {
|
||||
}
|
||||
// Allow users to specify where to find SQLite.
|
||||
if let Ok(dir) = env::var(format!("{}_LIB_DIR", env_prefix())) {
|
||||
println!("cargo:rustc-link-lib={}={}", find_link_mode(), link_lib);
|
||||
println!("cargo:rustc-link-search={}", dir);
|
||||
// Try to use pkg-config to determine link commands
|
||||
let pkgconfig_path = Path::new(&dir).join("pkgconfig");
|
||||
env::set_var("PKG_CONFIG_PATH", pkgconfig_path);
|
||||
if let Err(_) = pkg_config::Config::new().probe(link_lib) {
|
||||
// Otherwise just emit the bare minimum link commands.
|
||||
println!("cargo:rustc-link-lib={}={}", find_link_mode(), link_lib);
|
||||
println!("cargo:rustc-link-search={}", dir);
|
||||
}
|
||||
return HeaderLocation::FromEnvironment;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user