fn main() {
    // Use pkg-config to find VPL libraries
    if let Ok(lib) = pkg_config::Config::new().probe("vpl") {
        for path in lib.link_paths {
            println!("cargo:rustc-link-search=native={}", path.display());
        }
        for lib_name in lib.libs {
            println!("cargo:rustc-link-lib={}", lib_name);
        }
        println!("cargo:rustc-link-lib=stdc++"); // VPL requires C++ stdlib
        println!("cargo:rustc-link-lib=dl");     // VPL requires libdl
    } else {
        // Fallback: manual linking
        println!("cargo:rustc-link-search=native=/usr/lib/x86_64-linux-gnu");
        println!("cargo:rustc-link-lib=vpl");
        println!("cargo:rustc-link-lib=mfx");
        println!("cargo:rustc-link-lib=stdc++");
        println!("cargo:rustc-link-lib=dl");
    }
    
    // Direct VA-API linking for hardware acceleration
    if let Ok(lib) = pkg_config::Config::new().probe("libva-drm") {
        for path in lib.link_paths {
            println!("cargo:rustc-link-search=native={}", path.display());
        }
        for lib_name in lib.libs {
            println!("cargo:rustc-link-lib={}", lib_name);
        }
    } else {
        // Fallback: manual VA-API linking with Intel Media SDK path
        println!("cargo:rustc-link-search=native=/opt/intel/media/lib64");
        println!("cargo:rustc-link-search=native=/lib/x86_64-linux-gnu");
        println!("cargo:rustc-link-search=native=/usr/lib/x86_64-linux-gnu");
        println!("cargo:rustc-link-lib=va");
        println!("cargo:rustc-link-lib=va-drm");
    }
    
    // Always add Intel Media SDK paths for hardware acceleration
    println!("cargo:rustc-link-search=native=/opt/intel/media/lib64");
    println!("cargo:rustc-link-lib=va");
    println!("cargo:rustc-link-lib=va-drm");
    
    // Ensure we rebuild when headers change
    println!("cargo:rerun-if-changed=/usr/include/vpl/");
    println!("cargo:rerun-if-changed=/usr/include/va/");
}