fn find_using_tvm_build()

in rust/tvm-sys/build.rs [61:200]


fn find_using_tvm_build() -> Result<TVMInstall> {
    let mut build_config = BuildConfig::default();
    build_config.repository = Some("https://github.com/apache/tvm".to_string());
    build_config.branch = Some(option_env!("TVM_BRANCH").unwrap_or("main").into());

    if cfg!(feature = "use-cuda") {
        build_config.settings.use_cuda = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-opencl") {
        build_config.settings.use_opencl = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-vulkan") {
        build_config.settings.use_vulkan = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-rocm") {
        build_config.settings.use_rocm = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-metal") {
        build_config.settings.use_metal = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-hexagon-device") {
        build_config.settings.use_hexagon_device = Some(true);
    }
    if cfg!(feature = "use-rpc") {
        build_config.settings.use_rpc = Some(true);
    }
    if cfg!(feature = "use-threads") {
        build_config.settings.use_threads = Some(true);
    }
    if cfg!(feature = "use-llvm") {
        build_config.settings.use_llvm = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-stackvm-runtime") {
        build_config.settings.use_stackvm_runtime = Some(true);
    }
    if cfg!(feature = "use-graph-runtime") {
        build_config.settings.use_graph_runtime = Some(true);
    }
    if cfg!(feature = "use-graph-runtime-debug") {
        build_config.settings.use_graph_runtime_debug = Some(true);
    }
    if cfg!(feature = "use-openmp") {
        build_config.settings.use_openmp = Some(true);
    }
    if cfg!(feature = "use-rtti") {
        build_config.settings.use_rtti = Some(true);
    }
    if cfg!(feature = "use-mscv-mt") {
        build_config.settings.use_mscv_mt = Some(true);
    }
    if cfg!(feature = "use-install-dev") {
        build_config.settings.use_install_dev = Some(true);
    }
    if cfg!(feature = "hide_private-symbols") {
        build_config.settings.hide_private_symbols = Some(true);
    }
    if cfg!(feature = "use-fallback-stl-map") {
        build_config.settings.use_fallback_stl_map = Some(true);
    }
    if cfg!(feature = "use-index_default-i64") {
        build_config.settings.use_index_default_i64 = Some(true);
    }
    if cfg!(feature = "use-tf-tvmdsoop") {
        build_config.settings.use_tf_tvmdsoop = Some(true);
    }
    if cfg!(feature = "use-byodt-posit") {
        build_config.settings.use_byodt_posit = Some(true);
    }
    if cfg!(feature = "use-mkl") {
        build_config.settings.use_mkl = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-mkldnn") {
        build_config.settings.use_mkldnn = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-dnnl-codegen") {
        build_config.settings.use_dnnl_codegen = Some(true);
    }
    if cfg!(feature = "use-cudnn") {
        build_config.settings.use_cudnn = Some(true);
    }
    if cfg!(feature = "use-cublas") {
        build_config.settings.use_cublas = Some(true);
    }
    if cfg!(feature = "use-thrust") {
        build_config.settings.use_thrust = Some(true);
    }
    if cfg!(feature = "use-miopen") {
        build_config.settings.use_miopen = Some(true);
    }
    if cfg!(feature = "use-rocblas") {
        build_config.settings.use_rocblas = Some(true);
    }
    if cfg!(feature = "use-sort") {
        build_config.settings.use_sort = Some(true);
    }
    if cfg!(feature = "use-nnpack") {
        build_config.settings.use_nnpack = Some(true);
    }
    if cfg!(feature = "use-random") {
        build_config.settings.use_random = Some(true);
    }
    if cfg!(feature = "use-cpp-rpc") {
        build_config.settings.use_cpp_rpc = Some(true);
    }
    if cfg!(feature = "use-tflite") {
        build_config.settings.use_tflite = Some(true);
    }
    if cfg!(feature = "use-coreml") {
        build_config.settings.use_coreml = Some(true);
    }
    if cfg!(feature = "use-target-onnx") {
        build_config.settings.use_target_onnx = Some(true);
    }
    if cfg!(feature = "use-arm-compute-lib") {
        build_config.settings.use_arm_compute_lib = Some(true);
    }
    if cfg!(feature = "use-arm-compute-lib-graph-runtime") {
        build_config.settings.use_arm_compute_lib_graph_runtime = CMakeSetting::from_str("on").ok();
    }
    if cfg!(feature = "use-tensorrt-codegen") {
        build_config.settings.use_tensorrt_codegen = Some(true);
    }
    if cfg!(feature = "use-tensorrt-runtime") {
        build_config.settings.use_tensorrt_runtime = CMakeSetting::from_str("on").ok();
    }
    if cfg!(any(
        feature = "static-linking",
        feature = "build-static-runtime"
    )) {
        build_config.settings.build_static_runtime = Some(true);
    }

    let build_result = tvm_build::build(build_config)?;
    let source_path = build_result.revision.source_path();
    let build_path = build_result.revision.build_path();
    Ok(TVMInstall {
        source_path,
        build_path,
    })
}