1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19#include <tvm/runtime/object.h>
20#include <tvm/runtime/registry.h>
21
22#ifndef TVM_INFO_GIT_COMMIT_HASH
23#define TVM_INFO_GIT_COMMIT_HASH "NOT-FOUND"
24#endif
25
26#ifndef TVM_INFO_GIT_COMMIT_TIME
27#define TVM_INFO_GIT_COMMIT_TIME "NOT-FOUND"
28#endif
29
30#ifndef TVM_INFO_LLVM_VERSION
31#define TVM_INFO_LLVM_VERSION "NOT-FOUND"
32#endif
33
34#ifndef TVM_INFO_USE_CUDA
35#define TVM_INFO_USE_CUDA "NOT-FOUND"
36#endif
37
38#ifndef TVM_INFO_CUDA_VERSION
39#define TVM_INFO_CUDA_VERSION "NOT-FOUND"
40#endif
41
42#ifndef TVM_INFO_USE_OPENCL
43#define TVM_INFO_USE_OPENCL "NOT-FOUND"
44#endif
45
46#ifndef TVM_INFO_USE_OPENCL_ENABLE_HOST_PTR
47#define TVM_INFO_USE_OPENCL_ENABLE_HOST_PTR "NOT-FOUND"
48#endif
49
50#ifndef TVM_INFO_USE_OPENCL_GTEST
51#define TVM_INFO_USE_OPENCL_GTEST "NOT-FOUND"
52#endif
53
54#ifndef TVM_INFO_USE_VULKAN
55#define TVM_INFO_USE_VULKAN "NOT-FOUND"
56#endif
57
58#ifndef TVM_INFO_USE_METAL
59#define TVM_INFO_USE_METAL "NOT-FOUND"
60#endif
61
62#ifndef TVM_INFO_USE_ROCM
63#define TVM_INFO_USE_ROCM "NOT-FOUND"
64#endif
65
66#ifndef TVM_INFO_ROCM_PATH
67#define TVM_INFO_ROCM_PATH "NOT-FOUND"
68#endif
69
70#ifndef TVM_INFO_USE_HEXAGON
71#define TVM_INFO_USE_HEXAGON "NOT-FOUND"
72#endif
73
74#ifndef TVM_INFO_USE_HEXAGON_SDK
75#define TVM_INFO_USE_HEXAGON_SDK "NOT-FOUND"
76#endif
77
78#ifndef TVM_INFO_USE_HEXAGON_GTEST
79#define TVM_INFO_USE_HEXAGON_GTEST "NOT-FOUND"
80#endif
81
82#ifndef TVM_INFO_USE_RPC
83#define TVM_INFO_USE_RPC "NOT-FOUND"
84#endif
85
86#ifndef TVM_INFO_USE_THREADS
87#define TVM_INFO_USE_THREADS "NOT-FOUND"
88#endif
89
90#ifndef TVM_INFO_USE_LLVM
91#define TVM_INFO_USE_LLVM "NOT-FOUND"
92#endif
93
94#ifndef TVM_INFO_USE_STACKVM_RUNTIME
95#define TVM_INFO_USE_STACKVM_RUNTIME "NOT-FOUND"
96#endif
97
98#ifndef TVM_INFO_USE_GRAPH_EXECUTOR
99#define TVM_INFO_USE_GRAPH_EXECUTOR "NOT-FOUND"
100#endif
101
102#ifndef TVM_INFO_USE_PROFILER
103#define TVM_INFO_USE_PROFILER "NOT-FOUND"
104#endif
105
106#ifndef TVM_INFO_USE_OPENMP
107#define TVM_INFO_USE_OPENMP "NOT-FOUND"
108#endif
109
110#ifndef TVM_INFO_USE_RELAY_DEBUG
111#define TVM_INFO_USE_RELAY_DEBUG "NOT-FOUND"
112#endif
113
114#ifndef TVM_INFO_USE_RTTI
115#define TVM_INFO_USE_RTTI "NOT-FOUND"
116#endif
117
118#ifndef TVM_INFO_USE_MSVC_MT
119#define TVM_INFO_USE_MSVC_MT "NOT-FOUND"
120#endif
121
122#ifndef TVM_INFO_USE_MICRO
123#define TVM_INFO_USE_MICRO "NOT-FOUND"
124#endif
125
126#ifndef TVM_INFO_INSTALL_DEV
127#define TVM_INFO_INSTALL_DEV "NOT-FOUND"
128#endif
129
130#ifndef TVM_INFO_HIDE_PRIVATE_SYMBOLS
131#define TVM_INFO_HIDE_PRIVATE_SYMBOLS "NOT-FOUND"
132#endif
133
134#ifndef TVM_INFO_USE_TF_TVMDSOOP
135#define TVM_INFO_USE_TF_TVMDSOOP "NOT-FOUND"
136#endif
137
138#ifndef TVM_INFO_USE_FALLBACK_STL_MAP
139#define TVM_INFO_USE_FALLBACK_STL_MAP "NOT-FOUND"
140#endif
141
142#ifndef TVM_INFO_USE_BYODT_POSIT
143#define TVM_INFO_USE_BYODT_POSIT "NOT-FOUND"
144#endif
145
146#ifndef TVM_INFO_USE_BLAS
147#define TVM_INFO_USE_BLAS "NOT-FOUND"
148#endif
149
150#ifndef TVM_INFO_USE_MKL
151#define TVM_INFO_USE_MKL "NOT-FOUND"
152#endif
153
154#ifndef TVM_INFO_USE_AMX
155#define TVM_INFO_USE_AMX "NOT-FOUND"
156#endif
157
158#ifndef TVM_INFO_USE_DNNL
159#define TVM_INFO_USE_DNNL "NOT-FOUND"
160#endif
161
162#ifndef TVM_INFO_USE_CUDNN
163#define TVM_INFO_USE_CUDNN "NOT-FOUND"
164#endif
165
166#ifndef TVM_INFO_USE_CUBLAS
167#define TVM_INFO_USE_CUBLAS "NOT-FOUND"
168#endif
169
170#ifndef TVM_INFO_USE_THRUST
171#define TVM_INFO_USE_THRUST "NOT-FOUND"
172#endif
173
174#ifndef TVM_INFO_USE_CURAND
175#define TVM_INFO_USE_CURAND "NOT-FOUND"
176#endif
177
178#ifndef TVM_INFO_USE_MIOPEN
179#define TVM_INFO_USE_MIOPEN "NOT-FOUND"
180#endif
181
182#ifndef TVM_INFO_USE_ROCBLAS
183#define TVM_INFO_USE_ROCBLAS "NOT-FOUND"
184#endif
185
186#ifndef TVM_INFO_USE_SORT
187#define TVM_INFO_USE_SORT "NOT-FOUND"
188#endif
189
190#ifndef TVM_INFO_USE_NNPACK
191#define TVM_INFO_USE_NNPACK "NOT-FOUND"
192#endif
193
194#ifndef TVM_INFO_USE_RANDOM
195#define TVM_INFO_USE_RANDOM "NOT-FOUND"
196#endif
197
198#ifndef TVM_INFO_USE_MICRO_STANDALONE_RUNTIME
199#define TVM_INFO_USE_MICRO_STANDALONE_RUNTIME "NOT-FOUND"
200#endif
201
202#ifndef TVM_INFO_USE_CPP_RPC
203#define TVM_INFO_USE_CPP_RPC "NOT-FOUND"
204#endif
205
206#ifndef TVM_INFO_USE_CPP_RTVM
207#define TVM_INFO_USE_CPP_RTVM "NOT-FOUND"
208#endif
209
210#ifndef TVM_INFO_USE_TFLITE
211#define TVM_INFO_USE_TFLITE "NOT-FOUND"
212#endif
213
214#ifndef TVM_INFO_USE_TENSORFLOW_PATH
215#define TVM_INFO_USE_TENSORFLOW_PATH "NOT-FOUND"
216#endif
217
218#ifndef TVM_INFO_USE_COREML
219#define TVM_INFO_USE_COREML "NOT-FOUND"
220#endif
221
222#ifndef TVM_INFO_USE_TARGET_ONNX
223#define TVM_INFO_USE_TARGET_ONNX "NOT-FOUND"
224#endif
225
226#ifndef TVM_INFO_USE_ARM_COMPUTE_LIB
227#define TVM_INFO_USE_ARM_COMPUTE_LIB "NOT-FOUND"
228#endif
229
230#ifndef TVM_INFO_USE_ARM_COMPUTE_LIB_GRAPH_EXECUTOR
231#define TVM_INFO_USE_ARM_COMPUTE_LIB_GRAPH_EXECUTOR "NOT-FOUND"
232#endif
233
234#ifndef TVM_INFO_INDEX_DEFAULT_I64
235#define TVM_INFO_INDEX_DEFAULT_I64 "NOT-FOUND"
236#endif
237
238#ifndef TVM_CXX_COMPILER_PATH
239#define TVM_CXX_COMPILER_PATH ""
240#endif
241
242#ifndef TVM_INFO_USE_CCACHE
243#define TVM_INFO_USE_CCACHE "NOT-FOUND"
244#endif
245
246namespace tvm {
247
248/*!
249 * \brief Get a dictionary containing compile-time info, including cmake flags and git commit hash
250 * \return The compile-time info
251 */
252TVM_DLL Map<String, String> GetLibInfo() {
253 Map<String, String> result = {
254 {"BUILD_STATIC_RUNTIME", TVM_INFO_BUILD_STATIC_RUNTIME},
255 {"COMPILER_RT_PATH", TVM_INFO_COMPILER_RT_PATH},
256 {"CUDA_VERSION", TVM_INFO_CUDA_VERSION},
257 {"DLPACK_PATH", TVM_INFO_DLPACK_PATH},
258 {"DMLC_PATH", TVM_INFO_DMLC_PATH},
259 {"GIT_COMMIT_HASH", TVM_INFO_GIT_COMMIT_HASH},
260 {"GIT_COMMIT_TIME", TVM_INFO_GIT_COMMIT_TIME},
261 {"HIDE_PRIVATE_SYMBOLS", TVM_INFO_HIDE_PRIVATE_SYMBOLS},
262 {"INDEX_DEFAULT_I64", TVM_INFO_INDEX_DEFAULT_I64},
263 {"INSTALL_DEV", TVM_INFO_INSTALL_DEV},
264 {"LLVM_VERSION", TVM_INFO_LLVM_VERSION},
265 {"PICOJSON_PATH", TVM_INFO_PICOJSON_PATH},
266 {"RANG_PATH", TVM_INFO_RANG_PATH},
267 {"ROCM_PATH", TVM_INFO_ROCM_PATH},
268 {"SUMMARIZE", TVM_INFO_SUMMARIZE},
269 {"TVM_CXX_COMPILER_PATH", TVM_CXX_COMPILER_PATH},
270 {"USE_ALTERNATIVE_LINKER", TVM_INFO_USE_ALTERNATIVE_LINKER},
271 {"USE_AOT_EXECUTOR", TVM_INFO_USE_AOT_EXECUTOR},
272 {"USE_ARM_COMPUTE_LIB_GRAPH_EXECUTOR", TVM_INFO_USE_ARM_COMPUTE_LIB_GRAPH_EXECUTOR},
273 {"USE_ARM_COMPUTE_LIB", TVM_INFO_USE_ARM_COMPUTE_LIB},
274 {"USE_BLAS", TVM_INFO_USE_BLAS},
275 {"USE_BNNS", TVM_INFO_USE_BNNS},
276 {"USE_BYODT_POSIT", TVM_INFO_USE_BYODT_POSIT},
277 {"USE_CMSISNN", TVM_INFO_USE_CMSISNN},
278 {"USE_COREML", TVM_INFO_USE_COREML},
279 {"USE_CPP_RPC", TVM_INFO_USE_CPP_RPC},
280 {"USE_CPP_RTVM", TVM_INFO_USE_CPP_RTVM},
281 {"USE_CUBLAS", TVM_INFO_USE_CUBLAS},
282 {"USE_CUDA", TVM_INFO_USE_CUDA},
283 {"USE_CUDNN", TVM_INFO_USE_CUDNN},
284 {"USE_CUSTOM_LOGGING", TVM_INFO_USE_CUSTOM_LOGGING},
285 {"USE_CUTLASS", TVM_INFO_USE_CUTLASS},
286 {"USE_AMX", TVM_INFO_USE_AMX},
287 {"USE_DNNL", TVM_INFO_USE_DNNL},
288 {"USE_ETHOSN", TVM_INFO_USE_ETHOSN},
289 {"USE_FALLBACK_STL_MAP", TVM_INFO_USE_FALLBACK_STL_MAP},
290 {"USE_GRAPH_EXECUTOR_CUDA_GRAPH", TVM_INFO_USE_GRAPH_EXECUTOR_CUDA_GRAPH},
291 {"USE_GRAPH_EXECUTOR", TVM_INFO_USE_GRAPH_EXECUTOR},
292 {"USE_GTEST", TVM_INFO_USE_GTEST},
293 {"USE_HEXAGON", TVM_INFO_USE_HEXAGON},
294 {"USE_HEXAGON_RPC", TVM_INFO_USE_HEXAGON_RPC},
295 {"USE_HEXAGON_SDK", TVM_INFO_USE_HEXAGON_SDK},
296 {"USE_HEXAGON_GTEST", TVM_INFO_USE_HEXAGON_GTEST},
297 {"USE_HEXAGON_EXTERNAL_LIBS", TVM_INFO_USE_HEXAGON_EXTERNAL_LIBS},
298 {"USE_IOS_RPC", TVM_INFO_USE_IOS_RPC},
299 {"USE_KHRONOS_SPIRV", TVM_INFO_USE_KHRONOS_SPIRV},
300 {"USE_LIBBACKTRACE", TVM_INFO_USE_LIBBACKTRACE},
301 {"USE_LIBTORCH", TVM_INFO_USE_LIBTORCH},
302 {"USE_LLVM", TVM_INFO_USE_LLVM},
303 {"USE_METAL", TVM_INFO_USE_METAL},
304 {"USE_MICRO_STANDALONE_RUNTIME", TVM_INFO_USE_MICRO_STANDALONE_RUNTIME},
305 {"USE_MICRO", TVM_INFO_USE_MICRO},
306 {"USE_MIOPEN", TVM_INFO_USE_MIOPEN},
307 {"USE_MKL", TVM_INFO_USE_MKL},
308 {"USE_MSVC_MT", TVM_INFO_USE_MSVC_MT},
309 {"USE_NNPACK", TVM_INFO_USE_NNPACK},
310 {"USE_OPENCL", TVM_INFO_USE_OPENCL},
311 {"USE_OPENCL_ENABLE_HOST_PTR", TVM_INFO_USE_OPENCL_ENABLE_HOST_PTR},
312 {"USE_OPENCL_GTEST", TVM_INFO_USE_OPENCL_GTEST},
313 {"USE_OPENMP", TVM_INFO_USE_OPENMP},
314 {"USE_PAPI", TVM_INFO_USE_PAPI},
315 {"USE_PROFILER", TVM_INFO_USE_PROFILER},
316 {"USE_PT_TVMDSOOP", TVM_INFO_USE_PT_TVMDSOOP},
317 {"USE_RANDOM", TVM_INFO_USE_RANDOM},
318 {"USE_RELAY_DEBUG", TVM_INFO_USE_RELAY_DEBUG},
319 {"USE_ROCBLAS", TVM_INFO_USE_ROCBLAS},
320 {"USE_ROCM", TVM_INFO_USE_ROCM},
321 {"USE_RPC", TVM_INFO_USE_RPC},
322 {"USE_RTTI", TVM_INFO_USE_RTTI},
323 {"USE_RUST_EXT", TVM_INFO_USE_RUST_EXT},
324 {"USE_SORT", TVM_INFO_USE_SORT},
325 {"USE_SPIRV_KHR_INTEGER_DOT_PRODUCT", TVM_INFO_USE_SPIRV_KHR_INTEGER_DOT_PRODUCT},
326 {"USE_STACKVM_RUNTIME", TVM_INFO_USE_STACKVM_RUNTIME},
327 {"USE_TARGET_ONNX", TVM_INFO_USE_TARGET_ONNX},
328 {"USE_TENSORFLOW_PATH", TVM_INFO_USE_TENSORFLOW_PATH},
329 {"USE_TENSORRT_CODEGEN", TVM_INFO_USE_TENSORRT_CODEGEN},
330 {"USE_TENSORRT_RUNTIME", TVM_INFO_USE_TENSORRT_RUNTIME},
331 {"USE_TF_TVMDSOOP", TVM_INFO_USE_TF_TVMDSOOP},
332 {"USE_TFLITE", TVM_INFO_USE_TFLITE},
333 {"USE_THREADS", TVM_INFO_USE_THREADS},
334 {"USE_THRUST", TVM_INFO_USE_THRUST},
335 {"USE_CURAND", TVM_INFO_USE_CURAND},
336 {"USE_VITIS_AI", TVM_INFO_USE_VITIS_AI},
337 {"USE_VULKAN", TVM_INFO_USE_VULKAN},
338 {"USE_CLML", TVM_INFO_USE_CLML},
339 {"USE_CLML_GRAPH_EXECUTOR", TVM_INFO_USE_CLML_GRAPH_EXECUTOR},
340 {"USE_UMA", TVM_INFO_USE_UMA},
341 {"USE_VERILATOR", TVM_INFO_USE_VERILATOR},
342 {"USE_CCACHE", TVM_INFO_USE_CCACHE},
343 {"BACKTRACE_ON_SEGFAULT", TVM_INFO_BACKTRACE_ON_SEGFAULT},
344 };
345 return result;
346}
347
348TVM_REGISTER_GLOBAL("support.GetLibInfo").set_body_typed(GetLibInfo);
349
350} // namespace tvm
351