This is an automated email from the ASF dual-hosted git repository.

tqchen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm-ffi.git


The following commit(s) were added to refs/heads/main by this push:
     new 98b26ed  chore: Add cmake-format and cmake-lint (#89)
98b26ed is described below

commit 98b26edda72c3d9b9480cb638a68d07d3df6b88f
Author: Junru Shao <[email protected]>
AuthorDate: Sun Oct 5 14:17:49 2025 -0700

    chore: Add cmake-format and cmake-lint (#89)
    
    Add cmake-format to pre-commit hooks
---
 .cmake-format.json                  |  64 ++++++++++
 .github/workflows/ci_test.yml       |   4 +-
 .pre-commit-config.yaml             |   5 +
 CMakeLists.txt                      | 235 +++++++++++++++++++-----------------
 cmake/Utils/AddGoogleTest.cmake     |  81 ++++++++++---
 cmake/Utils/AddLibbacktrace.cmake   |  76 ++++++------
 cmake/Utils/CxxWarning.cmake        |  22 ++--
 cmake/Utils/Library.cmake           | 126 ++++++++++++-------
 cmake/Utils/Sanitizer.cmake         |  40 +++---
 cmake/tvm_ffi-config.cmake          |  44 ++++---
 examples/packaging/CMakeLists.txt   |  48 +++++---
 examples/quick_start/CMakeLists.txt |  47 +++-----
 tests/cpp/CMakeLists.txt            |  26 ++--
 13 files changed, 496 insertions(+), 322 deletions(-)

diff --git a/.cmake-format.json b/.cmake-format.json
new file mode 100644
index 0000000..b9a900d
--- /dev/null
+++ b/.cmake-format.json
@@ -0,0 +1,64 @@
+{
+  "format": {
+    "disable": false,
+    "line_width": 100,
+    "tab_size": 2,
+    "use_tabchars": false,
+    "fractional_tab_policy": "use-space",
+    "max_subgroups_hwrap": 2,
+    "max_pargs_hwrap": 6,
+    "max_rows_cmdline": 2,
+    "separate_ctrl_name_with_space": true,
+    "separate_fn_name_with_space": false,
+    "dangle_parens": true,
+    "dangle_align": "prefix",
+    "min_prefix_chars": 4,
+    "max_prefix_chars": 10,
+    "max_lines_hwrap": 2,
+    "line_ending": "unix",
+    "command_case": "canonical",
+    "keyword_case": "unchanged",
+    "always_wrap": [],
+    "enable_sort": true,
+    "autosort": false,
+    "require_valid_layout": false,
+    "layout_passes": {}
+  },
+  "markup": {
+    "bullet_char": "*",
+    "enum_char": ".",
+    "first_comment_is_literal": true,
+    "literal_comment_pattern": null,
+    "fence_pattern": "^\\s*([`~]{3}[`~]*)(.*)$",
+    "ruler_pattern": "^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$",
+    "explicit_trailing_pattern": "#<",
+    "hashruler_min_length": 10,
+    "canonicalize_hashrulers": true,
+    "enable_markup": true
+  },
+  "lint": {
+    "disabled_codes": [],
+    "function_pattern": "[0-9a-z_]+",
+    "macro_pattern": "[0-9A-Z_]+",
+    "global_var_pattern": "[A-Z][0-9A-Z_]+",
+    "internal_var_pattern": "_[A-Z][0-9A-Z_]+",
+    "local_var_pattern": "[a-z][a-z0-9_]+",
+    "private_var_pattern": "_[0-9a-z_]+",
+    "public_var_pattern": "[A-Z][0-9A-Z_]+",
+    "argument_var_pattern": "[a-z][a-z0-9_]+",
+    "keyword_pattern": "[A-Z][0-9A-Z_]+",
+    "max_conditionals_custom_parser": 2,
+    "min_statement_spacing": 1,
+    "max_statement_spacing": 2,
+    "max_returns": 6,
+    "max_branches": 12,
+    "max_arguments": 5,
+    "max_localvars": 15,
+    "max_statements": 50
+  },
+  "encode": {
+    "emit_byteorder_mark": false,
+    "input_encoding": "utf-8",
+    "output_encoding": "utf-8"
+  }
+}
diff --git a/.github/workflows/ci_test.yml b/.github/workflows/ci_test.yml
index aec3266..2ea884c 100644
--- a/.github/workflows/ci_test.yml
+++ b/.github/workflows/ci_test.yml
@@ -60,7 +60,7 @@ jobs:
         with:
           submodules: recursive
       - name: Set up uv
-        uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # 
v6.7.0
+        uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4  # 
v6.7.0
         with:
           python-version: 3.13
       - name: Generate docs
@@ -119,7 +119,7 @@ jobs:
 
       # Run Python tests
       - name: Setup Python ${{ matrix.python_version }}
-        uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # 
v6.7.0
+        uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4  # 
v6.7.0
         with:
           python-version: ${{ matrix.python_version }}
           activate-environment: true
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8e842f3..8737cff 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -125,3 +125,8 @@ repos:
           - ml-dtypes>=0.1
           - pytest
           - typing-extensions>=4.5
+  - repo: https://github.com/cheshirekow/cmake-format-precommit
+    rev: v0.6.13
+    hooks:
+      - id: cmake-format
+      - id: cmake-lint
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0a3c0b..3f94aff 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,12 +14,10 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+
 cmake_minimum_required(VERSION 3.18)
 
-project(
-  tvm_ffi
-  LANGUAGES CXX C
-)
+project(tvm_ffi LANGUAGES CXX C)
 
 option(TVM_FFI_USE_LIBBACKTRACE "Enable libbacktrace" ON)
 option(TVM_FFI_USE_EXTRA_CXX_API "Enable extra CXX API in shared lib" ON)
@@ -27,71 +25,68 @@ option(TVM_FFI_BACKTRACE_ON_SEGFAULT "Set signal handler to 
print backtrace on s
 
 if (TVM_FFI_USE_LIBBACKTRACE)
   include(${CMAKE_CURRENT_LIST_DIR}/cmake/Utils/AddLibbacktrace.cmake)
-endif()
+endif ()
 
 include(${CMAKE_CURRENT_LIST_DIR}/cmake/Utils/Library.cmake)
 
+# ######### Target: `tvm_ffi_header` ##########
 
-########## Target: `tvm_ffi_header` ##########
-
-# they can be used in cases where user do not want to link into the library
-# in cases like deferred linking
+# they can be used in cases where user do not want to link into the library in 
cases like deferred
+# linking
 add_library(tvm_ffi_header INTERFACE)
 target_compile_features(tvm_ffi_header INTERFACE cxx_std_17)
 target_include_directories(
-  tvm_ffi_header INTERFACE
-  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
-  $<INSTALL_INTERFACE:include>
+  tvm_ffi_header INTERFACE 
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+                           $<INSTALL_INTERFACE:include>
 )
 target_include_directories(
-  tvm_ffi_header INTERFACE
-  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dlpack/include>
-  $<INSTALL_INTERFACE:include>
+  tvm_ffi_header INTERFACE 
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dlpack/include>
+                           $<INSTALL_INTERFACE:include>
 )
 
-########## Target: `tvm_ffi_objs` ##########
-
-set(tvm_ffi_objs_sources
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/backtrace.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/backtrace_win.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/object.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/error.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/function.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/tensor.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/dtype.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/container.cc"
+# ######### Target: `tvm_ffi_objs` ##########
+
+set(_tvm_ffi_objs_sources
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/backtrace.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/backtrace_win.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/object.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/error.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/function.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/tensor.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/dtype.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/container.cc"
 )
 
-set(tvm_ffi_extra_objs_sources
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/structural_equal.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/structural_hash.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/json_parser.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/json_writer.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/serialization.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/reflection_extra.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/module.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module_system_lib.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module_dynamic_lib.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/env_context.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/env_c_api.cc"
-  "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/testing.cc"
+set(_tvm_ffi_extra_objs_sources
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/structural_equal.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/structural_hash.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/json_parser.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/json_writer.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/serialization.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/reflection_extra.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/module.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module_system_lib.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/library_module_dynamic_lib.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/env_context.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/env_c_api.cc"
+    "${CMAKE_CURRENT_SOURCE_DIR}/src/ffi/extra/testing.cc"
 )
 if (TVM_FFI_USE_EXTRA_CXX_API)
-  list(APPEND tvm_ffi_objs_sources ${tvm_ffi_extra_objs_sources})
-endif()
+  list(APPEND _tvm_ffi_objs_sources ${_tvm_ffi_extra_objs_sources})
+endif ()
 
-add_library(tvm_ffi_objs OBJECT ${tvm_ffi_objs_sources})
+add_library(tvm_ffi_objs OBJECT ${_tvm_ffi_objs_sources})
 target_compile_features(tvm_ffi_objs PRIVATE cxx_std_17)
 
 set_target_properties(
-  tvm_ffi_objs PROPERTIES
-  POSITION_INDEPENDENT_CODE ON
-  CXX_EXTENSIONS OFF
-  CXX_STANDARD_REQUIRED ON
-  CXX_VISIBILITY_PRESET hidden
-  VISIBILITY_INLINES_HIDDEN ON
-  PREFIX "lib"
+  tvm_ffi_objs
+  PROPERTIES POSITION_INDEPENDENT_CODE ON
+             CXX_EXTENSIONS OFF
+             CXX_STANDARD_REQUIRED ON
+             CXX_VISIBILITY_PRESET hidden
+             VISIBILITY_INLINES_HIDDEN ON
+             PREFIX "lib"
 )
 
 # add the include path as public so they are visible to downstreams
@@ -100,18 +95,18 @@ target_link_libraries(tvm_ffi_objs PUBLIC tvm_ffi_header)
 if (TVM_FFI_USE_LIBBACKTRACE)
   message(STATUS "Setting C++ macro TVM_FFI_USE_LIBBACKTRACE - 1")
   target_compile_definitions(tvm_ffi_objs PRIVATE TVM_FFI_USE_LIBBACKTRACE=1)
-else()
+else ()
   message(STATUS "Setting C++ macro TVM_FFI_USE_LIBBACKTRACE - 0")
   target_compile_definitions(tvm_ffi_objs PRIVATE TVM_FFI_USE_LIBBACKTRACE=0)
-endif()
+endif ()
 
 if (TVM_FFI_BACKTRACE_ON_SEGFAULT)
   message(STATUS "Setting C++ macro TVM_FFI_BACKTRACE_ON_SEGFAULT - 1")
   target_compile_definitions(tvm_ffi_objs PRIVATE 
TVM_FFI_BACKTRACE_ON_SEGFAULT=1)
-else()
+else ()
   message(STATUS "Setting C++ macro TVM_FFI_BACKTRACE_ON_SEGFAULT - 0")
   target_compile_definitions(tvm_ffi_objs PRIVATE 
TVM_FFI_BACKTRACE_ON_SEGFAULT=0)
-endif()
+endif ()
 
 tvm_ffi_add_msvc_flags(tvm_ffi_objs)
 tvm_ffi_add_target_from_obj(tvm_ffi tvm_ffi_objs)
@@ -135,106 +130,111 @@ target_link_libraries(tvm_ffi_objs PUBLIC 
tvm_ffi_header)
 target_link_libraries(tvm_ffi_shared PUBLIC tvm_ffi_header)
 target_link_libraries(tvm_ffi_static PUBLIC tvm_ffi_header)
 
-#----------------------------------------------------------------------------
-# The following code section only is triggered when the project is the root
-# and will be skipped when the project is a subproject.
-#----------------------------------------------------------------------------
+# ----------------------------------------------------------------------------
+# The following code section only is triggered when the project is the root 
and will be skipped when
+# the project is a subproject.
+# ----------------------------------------------------------------------------
 if (NOT ${PROJECT_NAME} STREQUAL ${CMAKE_PROJECT_NAME})
   return()
-endif()
+endif ()
 
 option(TVM_FFI_ATTACH_DEBUG_SYMBOLS "Attach debug symbols even in release 
mode" OFF)
 option(TVM_FFI_BUILD_TESTS "Adding test targets." OFF)
 
 if (TVM_FFI_ATTACH_DEBUG_SYMBOLS)
-  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+  if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
     target_compile_options(tvm_ffi_objs PRIVATE -g1)
-  endif()
-endif()
+  endif ()
+endif ()
 
 include(cmake/Utils/CxxWarning.cmake)
 include(cmake/Utils/Sanitizer.cmake)
 
-# remap the file name to the source directory so we can see the
-# exact file name in backtrace relative to the project source root
+# remap the file name to the source directory so we can see the exact file 
name in backtrace
+# relative to the project source root
 tvm_ffi_add_prefix_map(tvm_ffi_objs ${CMAKE_SOURCE_DIR})
 
-########## Adding cpp tests ##########
+# ######### Adding cpp tests ##########
 
-# logics below are only executed when the project is the root project.
-# but not when the project is a subproject.
+# logics below are only executed when the project is the root project. but not 
when the project is a
+# subproject.
 if (TVM_FFI_BUILD_TESTS)
   enable_testing()
   message(STATUS "Enable Testing")
   include(cmake/Utils/AddGoogleTest.cmake)
   add_subdirectory(tests/cpp/)
   tvm_ffi_add_cxx_warning(tvm_ffi_objs)
-endif()
+endif ()
 
-########## Adding python module ##########
+# ######### Adding python module ##########
 option(TVM_FFI_BUILD_PYTHON_MODULE "Adding python module." OFF)
 
 if (TVM_FFI_BUILD_PYTHON_MODULE)
   # Helper function to build the cython module
   message(STATUS "Building cython module..")
   find_package(
-    Python COMPONENTS Interpreter Development.Module Development.SABIModule
-    REQUIRED)
-  set(core_cpp ${CMAKE_CURRENT_BINARY_DIR}/core.cpp)
-  set(core_pyx ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/core.pyx)
-  set(cython_sources
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/core.pyx
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/base.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/device.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/dtype.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/error.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/function.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/tensor.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/object.pxi
-    ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/string.pxi
+    Python
+    COMPONENTS Interpreter Development.Module Development.SABIModule
+    REQUIRED
   )
-  # set working directory to source so we can see the exact file name in 
backtrace
-  # relatived to the project source root
+  set(_core_cpp ${CMAKE_CURRENT_BINARY_DIR}/core.cpp)
+  set(_core_pyx ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/core.pyx)
+  set(_cython_sources
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/core.pyx
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/base.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/device.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/dtype.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/error.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/function.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/tensor.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/object.pxi
+      ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/string.pxi
+  )
+  # set working directory to source so we can see the exact file name in 
backtrace relatived to the
+  # project source root
   add_custom_command(
-      OUTPUT ${core_cpp}
-      COMMAND ${Python_EXECUTABLE} -m cython --cplus ${core_pyx} -o ${core_cpp}
-      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-      COMMENT "Transpiling ${core_pyx} to ${core_cpp}"
-      DEPENDS ${cython_sources}
-      VERBATIM
+    OUTPUT ${_core_cpp}
+    COMMAND ${Python_EXECUTABLE} -m cython --cplus ${_core_pyx} -o ${_core_cpp}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    COMMENT "Transpiling ${_core_pyx} to ${_core_cpp}"
+    DEPENDS ${_cython_sources}
+    VERBATIM
   )
-  if(Python_VERSION VERSION_GREATER_EQUAL "3.12")
+  if (Python_VERSION VERSION_GREATER_EQUAL "3.12")
     # >= Python3.12, use Use_SABI version
-    Python_add_library(tvm_ffi_cython MODULE "${core_cpp}" USE_SABI 3.12)
+    python_add_library(tvm_ffi_cython MODULE "${_core_cpp}" USE_SABI 3.12)
     set_target_properties(tvm_ffi_cython PROPERTIES OUTPUT_NAME "core")
-    if(NOT WIN32)
+    if (NOT WIN32)
       set_target_properties(tvm_ffi_cython PROPERTIES SUFFIX ".abi3.so")
-    endif()
-  else()
+    endif ()
+  else ()
     # before Python3.12, use WITH_SOABI version
-    Python_add_library(tvm_ffi_cython MODULE "${core_cpp}" WITH_SOABI)
+    python_add_library(tvm_ffi_cython MODULE "${_core_cpp}" WITH_SOABI)
     set_target_properties(tvm_ffi_cython PROPERTIES OUTPUT_NAME "core")
-  endif()
-  target_include_directories(tvm_ffi_cython PRIVATE 
${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython)
+  endif ()
+  target_include_directories(
+    tvm_ffi_cython PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython
+  )
   target_compile_features(tvm_ffi_cython PRIVATE cxx_std_17)
   target_link_libraries(tvm_ffi_cython PRIVATE tvm_ffi_header)
   target_link_libraries(tvm_ffi_cython PRIVATE tvm_ffi_shared)
   # Set RPATH for tvm_ffi_cython to find tvm_ffi_shared.so relatively
-  if(APPLE)
+  if (APPLE)
     # macOS uses @loader_path
     set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH 
"@loader_path/lib")
-  elseif(LINUX)
-      # Linux uses $ORIGIN
+  elseif (LINUX)
+    # Linux uses $ORIGIN
     set_target_properties(tvm_ffi_cython PROPERTIES INSTALL_RPATH 
"\$ORIGIN/lib")
-  endif()
+  endif ()
   install(TARGETS tvm_ffi_cython DESTINATION .)
 
-  ########## Installing the source ##########
-  install(
-    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dlpack/include/ DESTINATION 
3rdparty/dlpack/include/
+  # ######### Installing the source ##########
+  install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dlpack/include/
+          DESTINATION 3rdparty/dlpack/include/
   )
   install(
-    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/libbacktrace/ DESTINATION 
3rdparty/libbacktrace/
+    DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/libbacktrace/
+    DESTINATION 3rdparty/libbacktrace/
     PATTERN ".git" EXCLUDE
     PATTERN ".git*" EXCLUDE
     PATTERN "*.tmp" EXCLUDE
@@ -243,20 +243,27 @@ if (TVM_FFI_BUILD_PYTHON_MODULE)
   install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Utils/ DESTINATION 
cmake/Utils)
   install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt DESTINATION .)
   install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/tvm_ffi-config.cmake 
DESTINATION cmake)
-  install(FILES 
${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/tvm_ffi_python_helpers.h 
DESTINATION include/)
-endif()
+  install(FILES 
${CMAKE_CURRENT_SOURCE_DIR}/python/tvm_ffi/cython/tvm_ffi_python_helpers.h
+          DESTINATION include/
+  )
+endif ()
 
-########## Install the related for normal cmake library ##########
+# ######### Install the related for normal cmake library ##########
 
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/tvm/ffi/ DESTINATION 
include/tvm/ffi/)
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/dlpack/include/ 
DESTINATION include/)
-install(TARGETS tvm_ffi_shared  DESTINATION lib)
+install(TARGETS tvm_ffi_shared DESTINATION lib)
 # ship additional dSYM files for debugging symbols on if available
 if (APPLE)
-  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/ DESTINATION lib 
FILES_MATCHING PATTERN "*.dSYM")
-endif()
+  install(
+    DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib/
+    DESTINATION lib
+    FILES_MATCHING
+    PATTERN "*.dSYM"
+  )
+endif ()
 
 if (NOT TVM_FFI_BUILD_PYTHON_MODULE)
   # when building wheel, we do not ship static as we already ships source and 
dll
   install(TARGETS tvm_ffi_static DESTINATION lib)
-endif()
+endif ()
diff --git a/cmake/Utils/AddGoogleTest.cmake b/cmake/Utils/AddGoogleTest.cmake
index 251d713..cd8d093 100644
--- a/cmake/Utils/AddGoogleTest.cmake
+++ b/cmake/Utils/AddGoogleTest.cmake
@@ -16,42 +16,83 @@
 # under the License.
 
 include(FetchContent)
-set(gtest_force_shared_crt ON CACHE BOOL "Always use msvcrt.dll" FORCE)
-set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
-set(BUILD_GTEST ON CACHE BOOL "" FORCE)
+set(gtest_force_shared_crt # cmake-lint: disable=C0103
+    ON
+    CACHE BOOL "Always use msvcrt.dll" FORCE
+)
+set(BUILD_GMOCK
+    ON
+    CACHE BOOL "" FORCE
+)
+set(BUILD_GTEST
+    ON
+    CACHE BOOL "" FORCE
+)
 FetchContent_Declare(
   googletest
   GIT_REPOSITORY https://github.com/google/googletest.git
-  GIT_TAG        v1.14.0
+  GIT_TAG v1.14.0
 )
 FetchContent_GetProperties(googletest)
 if (NOT googletest_POPULATED)
   FetchContent_MakeAvailable(googletest)
   include(GoogleTest)
-  set_target_properties(gtest      PROPERTIES EXPORT_COMPILE_COMMANDS OFF 
EXCLUDE_FROM_ALL ON FOLDER 3rdparty)
-  set_target_properties(gtest_main PROPERTIES EXPORT_COMPILE_COMMANDS OFF 
EXCLUDE_FROM_ALL ON FOLDER 3rdparty)
-  set_target_properties(gmock      PROPERTIES EXPORT_COMPILE_COMMANDS OFF 
EXCLUDE_FROM_ALL ON FOLDER 3rdparty)
-  set_target_properties(gmock_main PROPERTIES EXPORT_COMPILE_COMMANDS OFF 
EXCLUDE_FROM_ALL ON FOLDER 3rdparty)
+  set_target_properties(
+    gtest
+    PROPERTIES EXPORT_COMPILE_COMMANDS OFF
+               EXCLUDE_FROM_ALL ON
+               FOLDER 3rdparty
+  )
+  set_target_properties(
+    gtest_main
+    PROPERTIES EXPORT_COMPILE_COMMANDS OFF
+               EXCLUDE_FROM_ALL ON
+               FOLDER 3rdparty
+  )
+  set_target_properties(
+    gmock
+    PROPERTIES EXPORT_COMPILE_COMMANDS OFF
+               EXCLUDE_FROM_ALL ON
+               FOLDER 3rdparty
+  )
+  set_target_properties(
+    gmock_main
+    PROPERTIES EXPORT_COMPILE_COMMANDS OFF
+               EXCLUDE_FROM_ALL ON
+               FOLDER 3rdparty
+  )
   mark_as_advanced(
-      BUILD_GMOCK BUILD_GTEST BUILD_SHARED_LIBS
-      gmock_build_tests gtest_build_samples gtest_build_tests
-      gtest_disable_pthreads gtest_force_shared_crt gtest_hide_internal_symbols
+    BUILD_GMOCK
+    BUILD_GTEST
+    BUILD_SHARED_LIBS
+    gmock_build_tests
+    gtest_build_samples
+    gtest_build_tests
+    gtest_disable_pthreads
+    gtest_force_shared_crt
+    gtest_hide_internal_symbols
   )
-endif()
+endif ()
 
-macro(tvm_ffi_add_googletest target_name)
+# ~~~
+# TVM_FFI_ADD_GTEST(target_name)
+# Register a GoogleTest executable as a CTest, link it against gtest_main,
+# and configure test discovery and properties.
+#
+# Parameters:
+#   target_name: Name of the test executable target
+# ~~~
+macro (TVM_FFI_ADD_GTEST target_name)
   add_test(
     NAME ${target_name}
     COMMAND ${target_name}
     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
   )
   target_link_libraries(${target_name} PRIVATE gtest_main)
-  gtest_discover_tests(${target_name}
-    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
-    TEST_DISCOVERY_TIMEOUT 600
-    DISCOVERY_MODE PRE_TEST
-    PROPERTIES
-      VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
+  gtest_discover_tests(
+    ${target_name}
+    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} TEST_DISCOVERY_TIMEOUT 600 
DISCOVERY_MODE PRE_TEST
+    PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
   )
   set_target_properties(${target_name} PROPERTIES FOLDER tests)
-endmacro()
+endmacro ()
diff --git a/cmake/Utils/AddLibbacktrace.cmake 
b/cmake/Utils/AddLibbacktrace.cmake
index e920a1f..31d8088 100644
--- a/cmake/Utils/AddLibbacktrace.cmake
+++ b/cmake/Utils/AddLibbacktrace.cmake
@@ -17,52 +17,56 @@
 
 include(ExternalProject)
 
-function(_libbacktrace_compile)
-  set(_libbacktrace_source 
${CMAKE_CURRENT_LIST_DIR}/../../3rdparty/libbacktrace)
-  set(_libbacktrace_prefix ${CMAKE_CURRENT_BINARY_DIR}/libbacktrace)
-  if(CMAKE_SYSTEM_NAME MATCHES "Darwin" AND (CMAKE_C_COMPILER MATCHES 
"^/Library" OR CMAKE_C_COMPILER MATCHES "^/Applications"))
-    set(_cmake_c_compiler "/usr/bin/cc")
-  else()
-    set(_cmake_c_compiler "${CMAKE_C_COMPILER}")
-  endif()
-
+# ~~~
+# _libbacktrace_compile()
+# Build and install libbacktrace as an ExternalProject, then add an imported
+# static target `libbacktrace` exposing headers and archive for consumers.
+# ~~~
+function (_libbacktrace_compile)
+  set(libbacktrace_source 
${CMAKE_CURRENT_LIST_DIR}/../../3rdparty/libbacktrace)
+  set(libbacktrace_prefix ${CMAKE_CURRENT_BINARY_DIR}/libbacktrace)
+  if (CMAKE_SYSTEM_NAME MATCHES "Darwin" AND (CMAKE_C_COMPILER MATCHES 
"^/Library"
+                                              OR CMAKE_C_COMPILER MATCHES 
"^/Applications")
+  )
+    set(cmake_c_compiler "/usr/bin/cc")
+  else ()
+    set(cmake_c_compiler "${CMAKE_C_COMPILER}")
+  endif ()
   message(STATUS CMAKC_C_COMPILER="${CMAKE_C_COMPILER}")
 
-  file(MAKE_DIRECTORY ${_libbacktrace_prefix}/include)
-  file(MAKE_DIRECTORY ${_libbacktrace_prefix}/lib)
+  file(MAKE_DIRECTORY ${libbacktrace_prefix}/include)
+  file(MAKE_DIRECTORY ${libbacktrace_prefix}/lib)
 
-  ExternalProject_Add(project_libbacktrace
+  ExternalProject_Add(
+    project_libbacktrace
     PREFIX libbacktrace
-    SOURCE_DIR ${_libbacktrace_source}
-    BINARY_DIR ${_libbacktrace_prefix}
+    SOURCE_DIR ${libbacktrace_source}
+    BINARY_DIR ${libbacktrace_prefix}
     CONFIGURE_COMMAND
-      "sh"
-      "${_libbacktrace_source}/configure"
-      "--prefix=${_libbacktrace_prefix}"
-      --with-pic
-      "CC=${_cmake_c_compiler}"
-      "CPP=${_cmake_c_compiler} -E"
-      "CFLAGS=${CMAKE_C_FLAGS}"
-      "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}"
-      "NM=${CMAKE_NM}"
-      "STRIP=${CMAKE_STRIP}"
+      "sh" "${libbacktrace_source}/configure" 
"--prefix=${libbacktrace_prefix}" --with-pic
+      "CC=${cmake_c_compiler}" "CPP=${cmake_c_compiler} -E" 
"CFLAGS=${CMAKE_C_FLAGS}"
+      "LDFLAGS=${CMAKE_EXE_LINKER_FLAGS}" "NM=${CMAKE_NM}" 
"STRIP=${CMAKE_STRIP}"
       "--host=${MACHINE_NAME}"
-  INSTALL_DIR ${_libbacktrace_prefix}
-  BUILD_COMMAND make
-  INSTALL_COMMAND make install
-  BUILD_BYPRODUCTS "${_libbacktrace_prefix}/lib/libbacktrace.a"
-                   "${_libbacktrace_prefix}/include/backtrace.h"
+    INSTALL_DIR ${libbacktrace_prefix}
+    BUILD_COMMAND make
+    INSTALL_COMMAND make install
+    BUILD_BYPRODUCTS "${libbacktrace_prefix}/lib/libbacktrace.a"
+                     "${libbacktrace_prefix}/include/backtrace.h"
+  )
+  ExternalProject_Add_Step(
+    project_libbacktrace checkout
+    DEPENDERS configure
+    DEPENDEES download
   )
-  ExternalProject_Add_Step(project_libbacktrace checkout DEPENDERS configure 
DEPENDEES download)
   set_target_properties(project_libbacktrace PROPERTIES EXCLUDE_FROM_ALL TRUE)
   add_library(libbacktrace STATIC IMPORTED)
   add_dependencies(libbacktrace project_libbacktrace)
-  set_target_properties(libbacktrace PROPERTIES
-    IMPORTED_LOCATION ${_libbacktrace_prefix}/lib/libbacktrace.a
-    INTERFACE_INCLUDE_DIRECTORIES ${_libbacktrace_prefix}/include
+  set_target_properties(
+    libbacktrace PROPERTIES IMPORTED_LOCATION 
${libbacktrace_prefix}/lib/libbacktrace.a
+                            INTERFACE_INCLUDE_DIRECTORIES 
${libbacktrace_prefix}/include
   )
-endfunction()
+endfunction ()
 
-if(NOT MSVC)
+if (NOT MSVC)
   _libbacktrace_compile()
-endif()
+endif ()
diff --git a/cmake/Utils/CxxWarning.cmake b/cmake/Utils/CxxWarning.cmake
index a85e588..7bc6f18 100644
--- a/cmake/Utils/CxxWarning.cmake
+++ b/cmake/Utils/CxxWarning.cmake
@@ -15,16 +15,24 @@
 # specific language governing permissions and limitations
 # under the License.
 
-function(tvm_ffi_add_cxx_warning target_name)
+# ~~~
+# tvm_ffi_add_cxx_warning(target_name)
+# Apply a consistent set of warning flags (or placeholders) depending on the 
active compiler family.
+# Parameters:
+#   target_name: CMake target to modify
+# ~~~
+function (tvm_ffi_add_cxx_warning target_name)
   # GNU, Clang, or AppleClang
-  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
-    target_compile_options(${target_name} PRIVATE "-Werror" "-Wall" "-Wextra" 
"-Wpedantic" "-Wno-unused-parameter")
+  if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
+    target_compile_options(
+      ${target_name} PRIVATE "-Werror" "-Wall" "-Wextra" "-Wpedantic" 
"-Wno-unused-parameter"
+    )
     return()
-  endif()
+  endif ()
   # MSVC
-  if(MSVC)
+  if (MSVC)
     # target_compile_options(${target_name} PRIVATE "/W4" "/WX")
     return()
-  endif()
+  endif ()
   message(FATAL_ERROR "Unsupported compiler: ${CMAKE_CXX_COMPILER_ID}")
-endfunction()
+endfunction ()
diff --git a/cmake/Utils/Library.cmake b/cmake/Utils/Library.cmake
index 611f972..1a76fa6 100644
--- a/cmake/Utils/Library.cmake
+++ b/cmake/Utils/Library.cmake
@@ -15,74 +15,110 @@
 # specific language governing permissions and limitations
 # under the License.
 
-function(tvm_ffi_add_prefix_map target_name prefix_path)
+# ~~~
+# tvm_ffi_add_prefix_map(target_name, prefix_path)
+# Add a compile prefix map so absolute paths under `prefix_path` are remapped 
to a stable,
+# relative form for reproducible builds and cleaner diagnostics.
+#
+# Parameters:
+#   target_name: CMake target to modify
+#   prefix_path: Absolute path prefix to remap
+# ~~~
+function (tvm_ffi_add_prefix_map target_name prefix_path)
   # Add prefix map so the path displayed becomes relative to prefix_path
-  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+  if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
     target_compile_options(${target_name} PRIVATE 
"-ffile-prefix-map=${prefix_path}/=")
-  endif()
-endfunction()
+  endif ()
+endfunction ()
 
-function(tvm_ffi_add_apple_dsymutil target_name)
+# ~~~
+# tvm_ffi_add_apple_dsymutil(target_name)
+# On Apple platforms, run `dsymutil` post-build to generate debug symbols for 
better backtraces.
+# No-ops on non-Apple or when libbacktrace is disabled.
+#
+# Parameters:
+#   target_name: CMake target to attach post-build step
+# ~~~
+function (tvm_ffi_add_apple_dsymutil target_name)
   # running dsymutil on macos to generate debugging symbols for backtraces
-  if(APPLE AND TVM_FFI_USE_LIBBACKTRACE)
+  if (APPLE AND TVM_FFI_USE_LIBBACKTRACE)
     find_program(DSYMUTIL dsymutil)
     mark_as_advanced(DSYMUTIL)
-    add_custom_command(TARGET ${target_name}
-        POST_BUILD
-        COMMAND ${DSYMUTIL} ARGS $<TARGET_FILE:${target_name}>
-        COMMENT "[COMMAND] dsymutil $<TARGET_FILE:${target_name}>"
-        VERBATIM
+    add_custom_command(
+      TARGET ${target_name}
+      POST_BUILD
+      COMMAND ${DSYMUTIL} ARGS $<TARGET_FILE:${target_name}>
+      COMMENT "[COMMAND] dsymutil $<TARGET_FILE:${target_name}>"
+      VERBATIM
     )
-  endif()
-endfunction()
+  endif ()
+endfunction ()
 
-function(tvm_ffi_add_msvc_flags target_name)
+# ~~~
+# tvm_ffi_add_msvc_flags(target_name)
+# Apply MSVC-specific definitions and flags to improve build compatibility and 
warnings behavior
+# on Windows.
+#
+# Parameters:
+#   target_name: CMake target to modify
+# ~~~
+function (tvm_ffi_add_msvc_flags target_name)
   # running if we are under msvc
-  if(MSVC)
+  if (MSVC)
     target_compile_definitions(${target_name} PUBLIC -DWIN32_LEAN_AND_MEAN)
     target_compile_definitions(${target_name} PUBLIC -D_CRT_SECURE_NO_WARNINGS)
     target_compile_definitions(${target_name} PUBLIC -D_SCL_SECURE_NO_WARNINGS)
     target_compile_definitions(${target_name} PUBLIC 
-D_ENABLE_EXTENDED_ALIGNED_STORAGE)
     target_compile_definitions(${target_name} PUBLIC -DNOMINMAX)
     target_compile_options(${target_name} PRIVATE "/Zi")
-  endif()
-endfunction()
+  endif ()
+endfunction ()
 
-function(tvm_ffi_add_target_from_obj target_name obj_target_name)
+# ~~~
+# tvm_ffi_add_target_from_obj(target_name, obj_target_name)
+# Create static and shared library targets from an object library and set 
output directories
+# consistently across platforms. Also runs dsymutil on Apple for the shared 
target.
+#
+# Parameters:
+#   target_name: Base name for created targets
+#   obj_target_name: Object library to link into the outputs
+# ~~~
+function (tvm_ffi_add_target_from_obj target_name obj_target_name)
   add_library(${target_name}_static STATIC 
$<TARGET_OBJECTS:${obj_target_name}>)
   set_target_properties(
-    ${target_name}_static PROPERTIES
-    OUTPUT_NAME "${target_name}_static"
-    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-    )
+    ${target_name}_static
+    PROPERTIES OUTPUT_NAME "${target_name}_static"
+               ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+               LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+               RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+  )
   add_library(${target_name}_shared SHARED 
$<TARGET_OBJECTS:${obj_target_name}>)
   set_target_properties(
-    ${target_name}_shared PROPERTIES
-    OUTPUT_NAME "${target_name}"
-    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+    ${target_name}_shared
+    PROPERTIES OUTPUT_NAME "${target_name}"
+               ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+               LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+               RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
   )
   if (WIN32)
     target_compile_definitions(${obj_target_name} PRIVATE TVM_FFI_EXPORTS)
-    # set the output directory for each config type so msbuild also get into 
lib
-    # without appending the config type to the output directory
-    # do both Release and RELEASE suffix, since while cmake docs suggest 
Release is ok.
-    # real runs on MSbuild suggest that we might need RELEASE instead
-    foreach(CONFIG_TYPE Release RELEASE)
-      set_target_properties(${target_name}_shared PROPERTIES
-        RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
-        LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
-        ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
+    # set the output directory for each config type so msbuild also get into 
lib without appending
+    # the config type to the output directory do both Release and RELEASE 
suffix, since while cmake
+    # docs suggest Release is ok. real runs on MSbuild suggest that we might 
need RELEASE instead
+    foreach (config_type Release RELEASE)
+      set_target_properties(
+        ${target_name}_shared
+        PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
+                   LIBRARY_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
+                   ARCHIVE_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
       )
-      set_target_properties(${target_name}_static PROPERTIES
-        RUNTIME_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
-        LIBRARY_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
-        ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_TYPE} "${CMAKE_BINARY_DIR}/lib"
+      set_target_properties(
+        ${target_name}_static
+        PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
+                   LIBRARY_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
+                   ARCHIVE_OUTPUT_DIRECTORY_${config_type} 
"${CMAKE_BINARY_DIR}/lib"
       )
-    endforeach()
-  endif()
+    endforeach ()
+  endif ()
   tvm_ffi_add_apple_dsymutil(${target_name}_shared)
-endfunction()
+endfunction ()
diff --git a/cmake/Utils/Sanitizer.cmake b/cmake/Utils/Sanitizer.cmake
index a20eead..886a853 100644
--- a/cmake/Utils/Sanitizer.cmake
+++ b/cmake/Utils/Sanitizer.cmake
@@ -15,21 +15,31 @@
 # specific language governing permissions and limitations
 # under the License.
 
-function(add_sanitizer_address target_name)
-  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
+# ~~~
+# add_sanitizer_address(target_name)
+# Enable AddressSanitizer (ASan) for the given target when supported by the
+# current compiler. Safe no-op on unsupported compilers.
+#
+# Parameters:
+#   target_name: CMake target to instrument with ASan
+# ~~~
+function (add_sanitizer_address target_name)
+  if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang")
     include(CheckCXXCompilerFlag)
-    set (_saved_CRF ${CMAKE_REQUIRED_FLAGS})
-    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address")
+    set(saved_crf ${CMAKE_REQUIRED_FLAGS})
+    set(CMAKE_REQUIRED_FLAGS "-fsanitize=address") # cmake-lint: disable=C0103
     check_cxx_source_compiles("int main() { return 0; }" 
COMPILER_SUPPORTS_ASAN)
-    set (CMAKE_REQUIRED_FLAGS ${_saved_CRF})
-    get_target_property(_saved_type ${target_name} TYPE)
-    if (${_saved_type} STREQUAL "INTERFACE_LIBRARY")
-      set(_saved_type INTERFACE)
-    else()
-      set(_saved_type PRIVATE)
-    endif()
-    target_link_options(${target_name} ${_saved_type} "-fsanitize=address")
-    target_compile_options(${target_name} ${_saved_type} "-fsanitize=address" 
"-fno-omit-frame-pointer" "-g")
+    set(CMAKE_REQUIRED_FLAGS ${saved_crf}) # cmake-lint: disable=C0103
+    get_target_property(saved_type ${target_name} TYPE)
+    if (${saved_type} STREQUAL "INTERFACE_LIBRARY")
+      set(saved_type INTERFACE)
+    else ()
+      set(saved_type PRIVATE)
+    endif ()
+    target_link_options(${target_name} ${saved_type} "-fsanitize=address")
+    target_compile_options(
+      ${target_name} ${saved_type} "-fsanitize=address" 
"-fno-omit-frame-pointer" "-g"
+    )
     return()
-  endif()
-endfunction()
+  endif ()
+endfunction ()
diff --git a/cmake/tvm_ffi-config.cmake b/cmake/tvm_ffi-config.cmake
index 01f60ca..b04e8b6 100644
--- a/cmake/tvm_ffi-config.cmake
+++ b/cmake/tvm_ffi-config.cmake
@@ -15,20 +15,30 @@
 # specific language governing permissions and limitations
 # under the License.
 
-find_package(Python COMPONENTS Interpreter REQUIRED)
+find_package(
+  Python
+  COMPONENTS Interpreter
+  REQUIRED
+)
 
 # call tvm_ffi.config to get the cmake directory and set it to tvm_ffi_ROOT
 execute_process(
-    COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --includedir
-    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_INCLUDE_DIR)
+  COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --includedir
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  OUTPUT_VARIABLE tvm_ffi_INCLUDE_DIR
+)
 
 execute_process(
-    COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --dlpack-includedir
-    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE 
tvm_ffi_DLPACK_INCLUDE_DIR)
+  COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --dlpack-includedir
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  OUTPUT_VARIABLE tvm_ffi_DLPACK_INCLUDE_DIR
+)
 
 execute_process(
-    COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --libfiles
-    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_LIB_FILES)
+  COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --libfiles
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  OUTPUT_VARIABLE tvm_ffi_LIB_FILES
+)
 
 message(STATUS "Finding libfiles ${tvm_ffi_LIB_FILES}")
 
@@ -40,19 +50,15 @@ target_include_directories(tvm_ffi_header INTERFACE 
"${tvm_ffi_DLPACK_INCLUDE_DI
 add_library(tvm_ffi_shared SHARED IMPORTED)
 target_compile_features(tvm_ffi_shared INTERFACE cxx_std_17)
 
-if(WIN32)
-  set_target_properties(
-    tvm_ffi_shared PROPERTIES IMPORTED_IMPLIB "${tvm_ffi_LIB_FILES}"
-  )
-else()
-  set_target_properties(
-    tvm_ffi_shared PROPERTIES IMPORTED_LOCATION "${tvm_ffi_LIB_FILES}"
-  )
-endif()
-
+if (WIN32)
+  set_target_properties(tvm_ffi_shared PROPERTIES IMPORTED_IMPLIB 
"${tvm_ffi_LIB_FILES}")
+else ()
+  set_target_properties(tvm_ffi_shared PROPERTIES IMPORTED_LOCATION 
"${tvm_ffi_LIB_FILES}")
+endif ()
+# cmake-lint: disable=C0307
 set_target_properties(
   tvm_ffi_shared PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
-  "${tvm_ffi_INCLUDE_DIR};${tvm_ffi_DLPACK_INCLUDE_DIR}"
+                            
"${tvm_ffi_INCLUDE_DIR};${tvm_ffi_DLPACK_INCLUDE_DIR}"
 )
-# extra cmake functions
+
 include(${CMAKE_CURRENT_LIST_DIR}/Utils/Library.cmake)
diff --git a/examples/packaging/CMakeLists.txt 
b/examples/packaging/CMakeLists.txt
index ed55f7c..b577f3a 100644
--- a/examples/packaging/CMakeLists.txt
+++ b/examples/packaging/CMakeLists.txt
@@ -28,30 +28,37 @@ option(TVM_FFI_EXT_SHIP_DEBUG_SYMBOLS "Ship debug symbols" 
ON)
 #
 # This example shows both options, you only need to pick a specific one.
 #
-# - For common build cases, using pre-built and link tvm_ffi_shared is 
sufficient.
-# - For cases where you may want to cross-compile or bundle part of 
tvm_ffi_objects directly
-#   into your project, opt for building tvm_ffi from source path.
-#   Note that it is always safe to build from source and extra cost of 
building tvm_ffi is small.
-#   So when in doubt, you can always choose to the building tvm_ffi from 
source route.
+# * For common build cases, using pre-built and link tvm_ffi_shared is 
sufficient.
+# * For cases where you may want to cross-compile or bundle part of 
tvm_ffi_objects directly into
+#   your project, opt for building tvm_ffi from source path. Note that it is 
always safe to build
+#   from source and extra cost of building tvm_ffi is small. So when in doubt, 
you can always choose
+#   to the building tvm_ffi from source route.
 #
-# In python or other cases when we dynamically load libtvm_ffi_shared. Even 
when you build
-# from source, you do not need to ship libtvm_ffi.so built here as they are 
only
-# used to supply the linking information.
-# first find python related components
-find_package(Python COMPONENTS Interpreter REQUIRED)
+# In python or other cases when we dynamically load libtvm_ffi_shared. Even 
when you build from
+# source, you do not need to ship libtvm_ffi.so built here as they are only 
used to supply the
+# linking information. first find python related components
+find_package(
+  Python
+  COMPONENTS Interpreter
+  REQUIRED
+)
 if (TVM_FFI_BUILD_FROM_SOURCE)
   execute_process(
     COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --sourcedir
-    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_ROOT)
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    OUTPUT_VARIABLE tvm_ffi_ROOT
+  )
   message(STATUS "Building tvm_ffi from source: ${tvm_ffi_ROOT}")
   add_subdirectory(${tvm_ffi_ROOT} tvm_ffi)
-else()
+else ()
   # call tvm_ffi.config to get the cmake directory and set it to tvm_ffi_ROOT
   execute_process(
     COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --cmakedir
-    OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_ROOT)
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    OUTPUT_VARIABLE tvm_ffi_ROOT
+  )
   find_package(tvm_ffi CONFIG REQUIRED)
-endif()
+endif ()
 
 # use the projects as usual
 add_library(my_ffi_extension SHARED src/extension.cc)
@@ -59,15 +66,18 @@ target_link_libraries(my_ffi_extension tvm_ffi_header)
 target_link_libraries(my_ffi_extension tvm_ffi_shared)
 
 # show as my_ffi_extension.so
-set_target_properties(
-  my_ffi_extension PROPERTIES PREFIX ""
-)
+set_target_properties(my_ffi_extension PROPERTIES PREFIX "")
 
 if (TVM_FFI_EXT_SHIP_DEBUG_SYMBOLS)
   # ship debugging symbols for backtrace on macos
   tvm_ffi_add_prefix_map(my_ffi_extension ${CMAKE_CURRENT_SOURCE_DIR})
   tvm_ffi_add_apple_dsymutil(my_ffi_extension)
-  install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ DESTINATION . FILES_MATCHING 
PATTERN "*.dSYM")
-endif()
+  install(
+    DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/
+    DESTINATION .
+    FILES_MATCHING
+    PATTERN "*.dSYM"
+  )
+endif ()
 
 install(TARGETS my_ffi_extension DESTINATION .)
diff --git a/examples/quick_start/CMakeLists.txt 
b/examples/quick_start/CMakeLists.txt
index d3cd4b2..ed4f771 100644
--- a/examples/quick_start/CMakeLists.txt
+++ b/examples/quick_start/CMakeLists.txt
@@ -18,14 +18,19 @@
 cmake_minimum_required(VERSION 3.18)
 project(tvm_ffi_example)
 
-
 # Discover the Python interpreter so we can query tvm-ffi for its CMake 
package path.
-find_package(Python COMPONENTS Interpreter REQUIRED)
+find_package(
+  Python
+  COMPONENTS Interpreter
+  REQUIRED
+)
 
 # Ask tvm-ffi where it stores its exported CMake files.
 execute_process(
   COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --cmakedir
-  OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_ROOT)
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+  OUTPUT_VARIABLE tvm_ffi_ROOT
+)
 # Pull in the tvm-ffi CMake targets so we can link against them below.
 find_package(tvm_ffi CONFIG REQUIRED)
 
@@ -36,45 +41,27 @@ target_link_libraries(add_one_cpu tvm_ffi_header)
 target_link_libraries(add_one_cpu tvm_ffi_shared)
 target_link_libraries(add_one_c tvm_ffi_shared)
 # show as add_one_cpu.so
-set_target_properties(
-  add_one_cpu PROPERTIES
-  PREFIX ""
-  SUFFIX ".so"
-)
-set_target_properties(
-  add_one_c PROPERTIES
-  PREFIX ""
-  SUFFIX ".so"
-)
+set_target_properties(add_one_cpu PROPERTIES PREFIX "" SUFFIX ".so")
+set_target_properties(add_one_c PROPERTIES PREFIX "" SUFFIX ".so")
 
 # Optionally build the CUDA variant if the CUDA toolkit is present.
-if(NOT WIN32)
+if (NOT WIN32)
   find_package(CUDAToolkit QUIET)
-  if(CUDAToolkit_FOUND)
+  if (CUDAToolkit_FOUND)
     enable_language(CUDA)
 
     add_library(add_one_cuda SHARED src/add_one_cuda.cu)
     target_link_libraries(add_one_cuda PRIVATE tvm_ffi_shared)
 
-    set_target_properties(
-      add_one_cuda PROPERTIES
-      PREFIX ""
-      SUFFIX ".so"
-    )
+    set_target_properties(add_one_cuda PROPERTIES PREFIX "" SUFFIX ".so")
 
     add_executable(run_example_cuda src/run_example_cuda.cc)
-    set_target_properties(
-      run_example_cuda PROPERTIES
-      CXX_STANDARD 17
-    )
+    set_target_properties(run_example_cuda PROPERTIES CXX_STANDARD 17)
     target_link_libraries(run_example_cuda PRIVATE tvm_ffi_shared CUDA::cudart)
-  endif()
-endif()
+  endif ()
+endif ()
 
 # CPU-only C++ driver used in the quick start guide.
 add_executable(run_example src/run_example.cc)
-set_target_properties(
-  run_example PROPERTIES
-  CXX_STANDARD 17
-)
+set_target_properties(run_example PROPERTIES CXX_STANDARD 17)
 target_link_libraries(run_example tvm_ffi_shared)
diff --git a/tests/cpp/CMakeLists.txt b/tests/cpp/CMakeLists.txt
index c807fad..069ba4b 100644
--- a/tests/cpp/CMakeLists.txt
+++ b/tests/cpp/CMakeLists.txt
@@ -3,22 +3,18 @@ file(GLOB _test_extra_sources 
"${CMAKE_CURRENT_SOURCE_DIR}/extra/test*.cc")
 
 if (TVM_FFI_USE_EXTRA_CXX_API)
   list(APPEND _test_sources ${_test_extra_sources})
-endif()
+endif ()
 
-add_executable(
-  tvm_ffi_tests
-  EXCLUDE_FROM_ALL
-  ${_test_sources}
-)
+add_executable(tvm_ffi_tests EXCLUDE_FROM_ALL ${_test_sources})
 
 set_target_properties(
-  tvm_ffi_tests PROPERTIES
-  CXX_STANDARD 17
-  CXX_STANDARD_REQUIRED ON
-  CXX_EXTENSIONS OFF
-  ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-  LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
-  RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+  tvm_ffi_tests
+  PROPERTIES CXX_STANDARD 17
+             CXX_STANDARD_REQUIRED ON
+             CXX_EXTENSIONS OFF
+             ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+             LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
+             RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
 )
 
 tvm_ffi_add_cxx_warning(tvm_ffi_tests)
@@ -26,8 +22,8 @@ add_sanitizer_address(tvm_ffi_tests)
 tvm_ffi_add_apple_dsymutil(tvm_ffi_tests)
 tvm_ffi_add_msvc_flags(tvm_ffi_tests)
 target_link_libraries(tvm_ffi_tests PRIVATE tvm_ffi_shared)
-tvm_ffi_add_googletest(tvm_ffi_tests)
+tvm_ffi_add_gtest(tvm_ffi_tests)
 
 if (MSVC)
   target_link_options(tvm_ffi_tests PRIVATE /DEBUG)
-endif()
+endif ()


Reply via email to