aboutsummaryrefslogtreecommitdiff
path: root/adapters/fparkan-render-vulkan/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'adapters/fparkan-render-vulkan/build.rs')
-rw-r--r--adapters/fparkan-render-vulkan/build.rs92
1 files changed, 0 insertions, 92 deletions
diff --git a/adapters/fparkan-render-vulkan/build.rs b/adapters/fparkan-render-vulkan/build.rs
deleted file mode 100644
index d66c022..0000000
--- a/adapters/fparkan-render-vulkan/build.rs
+++ /dev/null
@@ -1,92 +0,0 @@
-//! Build-time shader tool metadata for Vulkan reports.
-
-use std::env;
-use std::path::Path;
-use std::process::Command;
-
-const SHADER_COMPILER_NAME: &str = "glslangValidator";
-const SPIRV_VALIDATOR_NAME: &str = "spirv-val";
-
-fn main() {
- println!("cargo:rerun-if-env-changed=PATH");
- println!("cargo:rerun-if-env-changed=FPARKAN_GLSLANG_VALIDATOR");
- println!("cargo:rerun-if-env-changed=FPARKAN_SPIRV_VAL");
-
- emit_tool_metadata(
- "FPARKAN_BUILD_SHADER_COMPILER",
- &tool_path("FPARKAN_GLSLANG_VALIDATOR", SHADER_COMPILER_NAME),
- );
- emit_tool_metadata(
- "FPARKAN_BUILD_SPIRV_VALIDATOR",
- &tool_path("FPARKAN_SPIRV_VAL", SPIRV_VALIDATOR_NAME),
- );
-}
-
-fn tool_path(env_var: &str, fallback: &str) -> String {
- env::var(env_var).unwrap_or_else(|_| fallback.to_string())
-}
-
-fn emit_tool_metadata(prefix: &str, tool: &str) {
- let Some(path) = resolve_tool(tool) else {
- return;
- };
- println!("cargo:rerun-if-changed={}", path.display());
- let Some(version) = tool_version(&path) else {
- return;
- };
- let Some(binary_sha256) = tool_sha256(&path) else {
- return;
- };
- let name = path
- .file_name()
- .and_then(|value| value.to_str())
- .unwrap_or(tool)
- .to_string();
- println!("cargo:rustc-env={prefix}_NAME={name}");
- println!("cargo:rustc-env={prefix}_VERSION={version}");
- println!("cargo:rustc-env={prefix}_SHA256={binary_sha256}");
-}
-
-fn resolve_tool(tool: &str) -> Option<std::path::PathBuf> {
- let candidate = Path::new(tool);
- if candidate.components().count() > 1 {
- return candidate.is_file().then(|| candidate.to_path_buf());
- }
- let output = Command::new("which").arg(tool).output().ok()?;
- if !output.status.success() {
- return None;
- }
- let path = String::from_utf8(output.stdout).ok()?;
- let path = path.trim();
- (!path.is_empty()).then(|| path.into())
-}
-
-fn tool_version(path: &Path) -> Option<String> {
- let output = Command::new(path).arg("--version").output().ok()?;
- if !output.status.success() {
- return None;
- }
- let stdout = String::from_utf8(output.stdout).ok()?;
- stdout
- .lines()
- .find(|line| !line.trim().is_empty())
- .map(str::trim)
- .map(|line| {
- line.strip_prefix("Glslang Version: ")
- .unwrap_or(line)
- .to_string()
- })
-}
-
-fn tool_sha256(path: &Path) -> Option<String> {
- let output = Command::new("shasum")
- .args(["-a", "256"])
- .arg(path)
- .output()
- .ok()?;
- if !output.status.success() {
- return None;
- }
- let stdout = String::from_utf8(output.stdout).ok()?;
- stdout.split_whitespace().next().map(ToString::to_string)
-}