use std::{
env,
path::{Path, PathBuf},
};
use risc0_build_kernel::{KernelBuild, KernelType};
fn main() {
build_cpu_kernels();
if env::var("CARGO_FEATURE_CUDA").is_ok() {
build_cuda_kernels();
}
}
fn build_cpu_kernels() {
rerun_if_changed("kernels/cxx");
KernelBuild::new(KernelType::Cpp)
.files(glob_paths("kernels/cxx/*.cpp"))
.include(env::var("DEP_RISC0_SYS_CXX_ROOT").unwrap())
.compile("risc0_recursion_cpu");
}
fn build_cuda_kernels() {
rerun_if_changed("kernels/cuda");
KernelBuild::new(KernelType::Cuda)
.files(glob_paths("kernels/cuda/*.cu"))
.deps(["kernels/cuda"])
.flag("-DFEATURE_BABY_BEAR")
.include(env::var("DEP_RISC0_SYS_CUDA_ROOT").unwrap())
.include(env::var("DEP_RISC0_SYS_CXX_ROOT").unwrap())
.include(env::var("DEP_SPPARK_ROOT").unwrap())
.compile("risc0_recursion_cuda");
}
fn rerun_if_changed<P: AsRef<Path>>(path: P) {
println!("cargo:rerun-if-changed={}", path.as_ref().display());
}
fn glob_paths(pattern: &str) -> Vec<PathBuf> {
glob::glob(pattern).unwrap().map(|x| x.unwrap()).collect()
}