|
19 | 19 |
|
20 | 20 | extern crate bindgen;
|
21 | 21 |
|
22 |
| -use std::path::{Path, PathBuf}; |
| 22 | +use std::{path::{Path, PathBuf}, str::FromStr}; |
23 | 23 |
|
24 | 24 | use anyhow::{Context, Result};
|
25 |
| -use tvm_build::BuildConfig; |
| 25 | +use tvm_build::{BuildConfig, CMakeSetting}; |
26 | 26 |
|
27 | 27 | /// The necessary information for detecting a TVM installation.
|
28 | 28 | struct TVMInstall {
|
@@ -59,6 +59,146 @@ fn find_using_tvm_build() -> Result<TVMInstall> {
|
59 | 59 | let mut build_config = BuildConfig::default();
|
60 | 60 | build_config.repository = Some("https://github.com/apache/tvm".to_string());
|
61 | 61 | build_config.branch = Some(option_env!("TVM_BRANCH").unwrap_or("main").into());
|
| 62 | + |
| 63 | + if cfg!(feature = "use-cuda") { |
| 64 | + build_config.settings.use_cuda = CMakeSetting::from_str("on").ok(); |
| 65 | + } |
| 66 | + if cfg!(feature = "use-opencl") { |
| 67 | + build_config.settings.use_opencl = CMakeSetting::from_str("on").ok(); |
| 68 | + } |
| 69 | + if cfg!(feature = "use-vulkan") { |
| 70 | + build_config.settings.use_vulkan = CMakeSetting::from_str("on").ok(); |
| 71 | + } |
| 72 | + if cfg!(feature = "use-rocm") { |
| 73 | + build_config.settings.use_rocm = CMakeSetting::from_str("on").ok(); |
| 74 | + } |
| 75 | + if cfg!(feature = "use-metal") { |
| 76 | + build_config.settings.use_metal = CMakeSetting::from_str("on").ok(); |
| 77 | + } |
| 78 | + if cfg!(feature = "use-hexagon-device") { |
| 79 | + build_config.settings.use_hexagon_device = Some(true); |
| 80 | + } |
| 81 | + if cfg!(feature = "use-rpc") { |
| 82 | + build_config.settings.use_rpc = Some(true); |
| 83 | + } |
| 84 | + if cfg!(feature = "use-threads") { |
| 85 | + build_config.settings.use_threads = Some(true); |
| 86 | + } |
| 87 | + if cfg!(feature = "use-llvm") { |
| 88 | + build_config.settings.use_llvm = CMakeSetting::from_str("on").ok(); |
| 89 | + } |
| 90 | + if cfg!(feature = "use-stackvm-runtime") { |
| 91 | + build_config.settings.use_stackvm_runtime = Some(true); |
| 92 | + } |
| 93 | + if cfg!(feature = "use-graph-runtime") { |
| 94 | + build_config.settings.use_graph_runtime = Some(true); |
| 95 | + } |
| 96 | + if cfg!(feature = "use-graph-runtime-debug") { |
| 97 | + build_config.settings.use_graph_runtime_debug = Some(true); |
| 98 | + } |
| 99 | + if cfg!(feature = "use-openmp") { |
| 100 | + build_config.settings.use_openmp = Some(true); |
| 101 | + } |
| 102 | + if cfg!(feature = "use-relay-debug") { |
| 103 | + build_config.settings.use_relay_debug = Some(true); |
| 104 | + } |
| 105 | + if cfg!(feature = "use-rtti") { |
| 106 | + build_config.settings.use_rtti = Some(true); |
| 107 | + } |
| 108 | + if cfg!(feature = "use-mscv-mt") { |
| 109 | + build_config.settings.use_mscv_mt = Some(true); |
| 110 | + } |
| 111 | + if cfg!(feature = "use-micro") { |
| 112 | + build_config.settings.use_micro = Some(true); |
| 113 | + } |
| 114 | + if cfg!(feature = "use-install-dev") { |
| 115 | + build_config.settings.use_install_dev = Some(true); |
| 116 | + } |
| 117 | + if cfg!(feature = "hide_private-symbols") { |
| 118 | + build_config.settings.hide_private_symbols = Some(true); |
| 119 | + } |
| 120 | + if cfg!(feature = "use-fallback-stl-map") { |
| 121 | + build_config.settings.use_fallback_stl_map = Some(true); |
| 122 | + } |
| 123 | + if cfg!(feature = "use-ethosn") { |
| 124 | + build_config.settings.use_ethosn = Some(true); |
| 125 | + } |
| 126 | + if cfg!(feature = "use-index_default-i64") { |
| 127 | + build_config.settings.use_index_default_i64 = Some(true); |
| 128 | + } |
| 129 | + if cfg!(feature = "use-tf-tvmdsoop") { |
| 130 | + build_config.settings.use_tf_tvmdsoop = Some(true); |
| 131 | + } |
| 132 | + if cfg!(feature = "use-byodt-posit") { |
| 133 | + build_config.settings.use_byodt_posit = Some(true); |
| 134 | + } |
| 135 | + if cfg!(feature = "use-mkl") { |
| 136 | + build_config.settings.use_mkl = CMakeSetting::from_str("on").ok(); |
| 137 | + } |
| 138 | + if cfg!(feature = "use-mkldnn") { |
| 139 | + build_config.settings.use_mkldnn = CMakeSetting::from_str("on").ok(); |
| 140 | + } |
| 141 | + if cfg!(feature = "use-dnnl-codegen") { |
| 142 | + build_config.settings.use_dnnl_codegen = Some(true); |
| 143 | + } |
| 144 | + if cfg!(feature = "use-cudnn") { |
| 145 | + build_config.settings.use_cudnn = Some(true); |
| 146 | + } |
| 147 | + if cfg!(feature = "use-cublas") { |
| 148 | + build_config.settings.use_cublas = Some(true); |
| 149 | + } |
| 150 | + if cfg!(feature = "use-thrust") { |
| 151 | + build_config.settings.use_thrust = Some(true); |
| 152 | + } |
| 153 | + if cfg!(feature = "use-miopen") { |
| 154 | + build_config.settings.use_miopen = Some(true); |
| 155 | + } |
| 156 | + if cfg!(feature = "use-rocblas") { |
| 157 | + build_config.settings.use_rocblas = Some(true); |
| 158 | + } |
| 159 | + if cfg!(feature = "use-sort") { |
| 160 | + build_config.settings.use_sort = Some(true); |
| 161 | + } |
| 162 | + if cfg!(feature = "use-nnpack") { |
| 163 | + build_config.settings.use_nnpack = Some(true); |
| 164 | + } |
| 165 | + if cfg!(feature = "use-random") { |
| 166 | + build_config.settings.use_random = Some(true); |
| 167 | + } |
| 168 | + if cfg!(feature = "use-micro-standalone-runtime") { |
| 169 | + build_config.settings.use_micro_standalone_runtime = Some(true); |
| 170 | + } |
| 171 | + if cfg!(feature = "use-cpp-rpc") { |
| 172 | + build_config.settings.use_cpp_rpc = Some(true); |
| 173 | + } |
| 174 | + if cfg!(feature = "use-tflite") { |
| 175 | + build_config.settings.use_tflite = Some(true); |
| 176 | + } |
| 177 | + if cfg!(feature = "use-coreml") { |
| 178 | + build_config.settings.use_coreml = Some(true); |
| 179 | + } |
| 180 | + if cfg!(feature = "use-target-onnx") { |
| 181 | + build_config.settings.use_target_onnx = Some(true); |
| 182 | + } |
| 183 | + if cfg!(feature = "use-arm-compute-lib") { |
| 184 | + build_config.settings.use_arm_compute_lib = Some(true); |
| 185 | + } |
| 186 | + if cfg!(feature = "use-arm-compute-lib-graph-runtime") { |
| 187 | + build_config.settings.use_arm_compute_lib_graph_runtime = CMakeSetting::from_str("on").ok(); |
| 188 | + } |
| 189 | + if cfg!(feature = "use-tensorrt-codegen") { |
| 190 | + build_config.settings.use_tensorrt_codegen = Some(true); |
| 191 | + } |
| 192 | + if cfg!(feature = "use-tensorrt-runtime") { |
| 193 | + build_config.settings.use_tensorrt_runtime = CMakeSetting::from_str("on").ok(); |
| 194 | + } |
| 195 | + if cfg!(feature = "use-vitis-ai") { |
| 196 | + build_config.settings.use_vitis_ai = Some(true); |
| 197 | + } |
| 198 | + if cfg!(any(feature = "static-linking", feature = "build-static-runtime")) { |
| 199 | + build_config.settings.build_static_runtime = Some(true); |
| 200 | + } |
| 201 | + |
62 | 202 | let build_result = tvm_build::build(build_config)?;
|
63 | 203 | let source_path = build_result.revision.source_path();
|
64 | 204 | let build_path = build_result.revision.build_path();
|
|
0 commit comments