fn main() {
println!("cargo:rerun-if-changed=build.rs");
#[cfg(feature = "hip-cpu-validate")]
build_hip_cpu();
}
#[cfg(feature = "hip-cpu-validate")]
fn build_hip_cpu() {
use std::path::Path;
let hip_cpu_include = Path::new("docker/vendor/HIP-CPU/include");
if !hip_cpu_include.exists() {
panic!(
"rlx-cuda hip-cpu-validate: missing HIP-CPU headers at {}\n\
HIP-CPU is fetched only inside Docker (linux-gnu libstdc++).\n\
\n\
\tjust test-hip-cpu-validate\n\
\n\
(clones into rlx-cuda/docker/vendor/HIP-CPU via rlx-cuda/docker/fetch-hip-cpu.sh)",
hip_cpu_include.display()
);
}
let kernels_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("../rlx-gpu-kernels/kernels");
println!("cargo:rerun-if-changed=cpp/cpu_dispatch.cpp");
println!("cargo:rerun-if-changed={}", kernels_dir.display());
cc::Build::new()
.cpp(true)
.std("c++17")
.file("cpp/cpu_dispatch.cpp")
.include(hip_cpu_include)
.include(&kernels_dir)
.define("__HIP_CPU_RT__", None)
.flag_if_supported("-Wno-unknown-attributes")
.flag_if_supported("-Wno-deprecated-declarations")
.compile("rlx_cuda_cpu_dispatch");
println!("cargo:rustc-link-lib=pthread");
}