mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-22 16:29:20 +08:00
Add support for forcing cargo:rustc-link-lib to link as native
This commit is contained in:
parent
372291c65e
commit
4fd00a6311
@ -108,18 +108,27 @@ mod build {
|
||||
bindings::write_to_out_dir(header, out_path);
|
||||
}
|
||||
|
||||
fn find_link_mode() -> &'static str {
|
||||
// If the user specifies SQLITE_STATIC (or SQLCIPHER_STATIC), do static
|
||||
// linking, unless it's explicitly set to 0.
|
||||
match &env::var(format!("{}_STATIC", env_prefix())) {
|
||||
Ok(v) if v != "0" => "static",
|
||||
_ => "dylib",
|
||||
}
|
||||
}
|
||||
// Prints the necessary cargo link commands and returns the path to the header.
|
||||
fn find_sqlite() -> HeaderLocation {
|
||||
let link_lib = link_lib();
|
||||
|
||||
println!("cargo:rerun-if-env-changed={}_INCLUDE_DIR", env_prefix());
|
||||
println!("cargo:rerun-if-env-changed={}_LIB_DIR", env_prefix());
|
||||
println!("cargo:rerun-if-env-changed={}_STATIC", env_prefix());
|
||||
if cfg!(target_os = "windows") {
|
||||
println!("cargo:rerun-if-env-changed=PATH");
|
||||
}
|
||||
// Allow users to specify where to find SQLite.
|
||||
if let Ok(dir) = env::var(format!("{}_LIB_DIR", env_prefix())) {
|
||||
println!("cargo:rustc-link-lib={}", link_lib);
|
||||
println!("cargo:rustc-link-lib={}={}", find_link_mode(), link_lib);
|
||||
println!("cargo:rustc-link-search={}", dir);
|
||||
return HeaderLocation::FromEnvironment;
|
||||
}
|
||||
@ -146,7 +155,7 @@ mod build {
|
||||
// request and hope that the library exists on the system paths. We used to
|
||||
// output /usr/lib explicitly, but that can introduce other linking problems;
|
||||
// see https://github.com/jgallagher/rusqlite/issues/207.
|
||||
println!("cargo:rustc-link-lib={}", link_lib);
|
||||
println!("cargo:rustc-link-lib={}={}", find_link_mode(), link_lib);
|
||||
HeaderLocation::Wrapper
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user