01fcb01019
The nvenc build linked nvEncodeAPI64.dll's entry points at load time, so a --features nvenc binary hard-crashed on any box without the NVIDIA driver (AMD/Intel). Entry points now come from a runtime LoadLibrary table (encode/windows/nvenc.rs load_api); a missing DLL just falls through the encoder auto-detect to AMF/QSV/software. The generated import lib and all its plumbing (gen-nvenc-importlib.ps1, nvenc.def, PUNKTFUNK_NVENC_LIB_DIR, setup-build-env wiring) are gone. Live-validated on the RTX 4090 box (NVENC session, 7000+ frames). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
21 lines
1.4 KiB
Rust
21 lines
1.4 KiB
Rust
//! Build script: stamps the build version. NVENC deliberately needs NOTHING here — the entry
|
|
//! points (`NvEncodeAPICreateInstance` / `NvEncodeAPIGetMaxSupportedVersion`) live in
|
|
//! `nvEncodeAPI64.dll`, which only exists where the NVIDIA driver is installed, so
|
|
//! `encode/windows/nvenc.rs` resolves them at RUNTIME (`LoadLibraryExW`). The former link-time
|
|
//! import (`cargo:rustc-link-lib=nvencodeapi`) made the Windows loader kill the all-vendor host
|
|
//! binary on every AMD/Intel-only box before `main` ("nvencodeapi64.dll was not found").
|
|
fn main() {
|
|
// Build provenance: stamp the exact package/build version into the binary so a running host
|
|
// can report what it is (mgmt /health, the startup log, `--version`) and a stale/shadowed
|
|
// install is detectable. CI (deb.yml / rpm.yml / the RPM spec / the PKGBUILD) sets
|
|
// PUNKTFUNK_BUILD_VERSION to the full package version (e.g. `0.2.0~ci120.g802e98d`); a plain
|
|
// `cargo build` falls back to the crate version. Deliberately NOT git-derived — the RPM builds
|
|
// from a `git archive` tarball with no .git, and a hard git dependency would break it.
|
|
let version = std::env::var("PUNKTFUNK_BUILD_VERSION")
|
|
.ok()
|
|
.filter(|v| !v.trim().is_empty())
|
|
.unwrap_or_else(|| std::env::var("CARGO_PKG_VERSION").unwrap_or_else(|_| "unknown".into()));
|
|
println!("cargo:rustc-env=PUNKTFUNK_VERSION={version}");
|
|
println!("cargo:rerun-if-env-changed=PUNKTFUNK_BUILD_VERSION");
|
|
}
|