church-api/build.rs
Benjamin Slingo 0c06e159bb Initial commit: Church API Rust implementation
Complete church management system with bulletin management, media processing, live streaming integration, and web interface. Includes authentication, email notifications, database migrations, and comprehensive test suite.
2025-08-19 20:56:41 -04:00

46 lines
1.9 KiB
Rust

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/");
}