use std::env::{self, var};
fn main() {
println!("cargo:rerun-if-changed=build.rs");
let tarpaulin = var("CARGO_FEATURE_TARPAULIN").is_ok();
if tarpaulin {
use_feature("tarpaulin");
} else {
println!("cargo:rerun-if-env-changed=CARGO_TARPAULIN");
println!("cargo:rerun-if-env-changed=CARGO_CFG_TARPAULIN");
if env::var("CARGO_TARPAULIN").is_ok() || env::var("CARGO_CFG_TARPAULIN").is_ok() {
use_feature("tarpaulin");
}
}
println!("cargo:rerun-if-env-changed=CARGO_FEATURE_TARPAULIN");
configure_videotoolbox();
}
fn use_feature(feature: &str) {
println!("cargo:rustc-cfg={}", feature);
}
fn configure_videotoolbox() {
println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS");
println!("cargo:rerun-if-env-changed=MEDIADECODE_FFMPEG_NO_VIDEOTOOLBOX");
let Ok(os) = var("CARGO_CFG_TARGET_OS") else {
return;
};
if !matches!(os.as_str(), "macos" | "visionos") {
return;
}
if env::var_os("MEDIADECODE_FFMPEG_NO_VIDEOTOOLBOX").is_some() {
println!(
"cargo:warning=mediadecode-ffmpeg: MEDIADECODE_FFMPEG_NO_VIDEOTOOLBOX is set, so the \
VideoToolbox scaled-output stage was compiled out by request (scaled_output_capability \
will answer Unsupported)"
);
return;
}
use_feature("ffmpeg_videotoolbox");
for framework in ["VideoToolbox", "CoreVideo", "CoreFoundation"] {
println!("cargo:rustc-link-lib=framework={framework}");
}
}