extern crate pkg_config;
#[cfg(target_env = "msvc")]
extern crate vcpkg;
use std::env;
use std::process::Command;
fn main() {
if pkg_config::probe_library("mysqlclient").is_ok() {
return
} else if try_vcpkg() {
return;
} else if let Ok(path) = env::var("MYSQLCLIENT_LIB_DIR") {
println!("cargo:rustc-link-search=native={}", path);
} else if let Some(path) = mysql_config_variable("pkglibdir") {
println!("cargo:rustc-link-search=native={}", path);
}
if cfg!(all(windows, target_env="gnu")) {
println!("cargo:rustc-link-lib=dylib=mysql");
} else if cfg!(all(windows, target_env="msvc")) {
println!("cargo:rustc-link-lib=static=mysqlclient");
} else {
println!("cargo:rustc-link-lib=mysqlclient");
}
}
fn mysql_config_variable(var_name: &str) -> Option<String> {
Command::new("mysql_config")
.arg(format!("--variable={}", var_name))
.output()
.into_iter()
.filter(|output| output.status.success())
.flat_map(|output| String::from_utf8(output.stdout).ok())
.map(|output| output.trim().to_string())
.next()
}
#[cfg(target_env = "msvc")]
fn try_vcpkg() -> bool {
vcpkg::find_package("libmysql").is_ok()
}
#[cfg(not(target_env = "msvc"))]
fn try_vcpkg() -> bool {
false
}