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("vendor/HIP-CPU/include");
if !hip_cpu_include.exists() {
panic!(
"rlx-cuda hip-cpu-validate: missing HIP-CPU headers at {}\n\
Initialize the submodule with:\n\
\n\
\tgit submodule add https://github.com/ROCm-Developer-Tools/HIP-CPU.git \\\n\
\t rlx-cuda/vendor/HIP-CPU\n\
\n\
(or whatever upstream HIP-CPU mirror is current)",
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");
}