use std::env;
use std::path::PathBuf;
fn nim_lib_filename() -> &'static str {
if cfg!(target_os = "windows") {
"alopex_sql_parser.dll"
} else if cfg!(target_os = "macos") {
"libalopex_sql_parser.dylib"
} else {
"libalopex_sql_parser.so"
}
}
fn main() {
let lib_filename = nim_lib_filename();
println!("cargo:rerun-if-env-changed=NIM_SQL_PARSER_LIB_DIR");
println!("cargo:rerun-if-changed=nim-sql-parser/{lib_filename}");
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR"));
let lib_dir = env::var_os("NIM_SQL_PARSER_LIB_DIR")
.map(PathBuf::from)
.or_else(|| {
let local = manifest_dir.join("nim-sql-parser");
local.join(lib_filename).exists().then_some(local)
})
.unwrap_or_else(|| PathBuf::from("/usr/local/lib"));
let lib_path = lib_dir.join(lib_filename);
if !lib_path.exists() {
panic!(
"{lib_filename} not found at {}. Run `make nim-parser` or set NIM_SQL_PARSER_LIB_DIR.",
lib_path.display()
);
}
println!("cargo:rustc-link-search=native={}", lib_dir.display());
if !cfg!(target_os = "windows") {
println!("cargo:rustc-link-lib=dylib=alopex_sql_parser");
}
if cfg!(target_os = "linux") || cfg!(target_os = "macos") {
println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display());
}
}