Newer
Older
use std::env::var;
use std::path::Path;
use std::process::Command;
fn main() {
if cfg!(feature = "cuda") {
let out_dir = var("OUT_DIR").unwrap();
Command::new("nvcc")
.args(&["src/rtdefs.cu", "-c", "-o"])
.arg(&format!("{}/rtdefs.o", out_dir))
.status()
.expect("PANIC: NVCC failed when building runtime. Is NVCC installed?")
.exit_ok()
.expect("NVCC did not succeed");
Command::new("ar")
.current_dir(&Path::new(&out_dir))
.unwrap()
.exit_ok()
.expect("ar did not succeed");
println!("cargo::rustc-link-search=native={}", out_dir);
println!("cargo::rustc-link-search=native=/usr/lib/x86_64-linux-gnu/");
println!("cargo::rustc-link-search=native=/opt/cuda/lib/");
println!("cargo::rustc-link-lib=static=rtdefs");
println!("cargo::rustc-link-lib=cudart");
println!("cargo::rustc-link-lib=cublas");
println!("cargo::rerun-if-changed=src/rtdefs.cu");
}
}