use std::env;
use std::path::PathBuf;
fn main() {
let target = env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
match target.as_str() {
"macos" => {
let gst_base = "/Library/Frameworks/GStreamer.framework/Versions/Current";
let lib = format!("{}/lib", gst_base);
let pkgconfig = format!("{}/lib/pkgconfig", gst_base);
env::set_var("PKG_CONFIG_PATH", &pkgconfig);
env::set_var("GST_PLUGIN_PATH", &lib);
env::set_var("DYLD_FALLBACK_LIBRARY_PATH", &lib);
println!("cargo:rustc-link-search=framework=/Library/Frameworks");
println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib);
}
"windows" => {
let gst_dir = env::var("GSTREAMER_1_0_ROOT_MSVC_X86_64")
.or_else(|_| env::var("GSTREAMER_1_0_ROOT_X86_64"))
.map(PathBuf::from)
.unwrap_or_else(|_| PathBuf::from("C:\\gstreamer\\1.0\\msvc_x86_64"));
let lib_dir = gst_dir.join("lib");
let pkgconfig_dir = lib_dir.join("pkgconfig");
if lib_dir.exists() {
env::set_var("PKG_CONFIG_PATH", &pkgconfig_dir);
println!("cargo:rustc-link-search=native={}", lib_dir.display());
} else {
println!(
"cargo:warning=GStreamer not found at {}. \
Install GStreamer or set GSTREAMER_1_0_ROOT_MSVC_X86_64.",
gst_dir.display()
);
}
}
"linux" => {
if env::var("PKG_CONFIG_PATH").is_err() {
let common = [
"/usr/lib/x86_64-linux-gnu/pkgconfig",
"/usr/lib64/pkgconfig",
"/usr/local/lib/pkgconfig",
];
for p in &common {
let path = PathBuf::from(p);
if path.exists() {
env::set_var("PKG_CONFIG_PATH", p);
break;
}
}
}
}
_ => {}
}
}