This is an automated email from the ASF dual-hosted git repository.
junrushao 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 a1cb746 build: Rename Import Targets (#354)
a1cb746 is described below
commit a1cb746201412a943c29d942e6b2c29b36d97c48
Author: Junru Shao <[email protected]>
AuthorDate: Mon Dec 22 10:15:18 2025 -0800
build: Rename Import Targets (#354)
This PR renames imported targets in `tvm_ffi-config.cmake`
- `tvm_ffi_shared` => `tvm_ffi::shared`
- `tvm_ffi_header` => `tvm_ffi::header`
in order to avoid name conflicts with targets defined in
`CMakeLists.txt`
---
cmake/Utils/EmbedCubin.cmake | 14 +++++++++++--
cmake/Utils/Library.cmake | 23 +++++++++++-----------
cmake/tvm_ffi-config.cmake | 21 ++++++++++----------
docs/get_started/quickstart.rst | 4 ++--
.../cubin_launcher/dynamic_cubin/CMakeLists.txt | 2 +-
.../cubin_launcher/embedded_cubin/CMakeLists.txt | 2 +-
examples/quickstart/CMakeLists.txt | 8 +++-----
examples/stable_c_abi/CMakeLists.txt | 6 ++----
8 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/cmake/Utils/EmbedCubin.cmake b/cmake/Utils/EmbedCubin.cmake
index 7244f0f..26af6d8 100644
--- a/cmake/Utils/EmbedCubin.cmake
+++ b/cmake/Utils/EmbedCubin.cmake
@@ -173,8 +173,18 @@ function (tvm_ffi_embed_cubin)
get_filename_component(OUTPUT_NAME "${ARG_OUTPUT_ABS}" NAME_WE)
set(INTERMEDIATE_OBJ "${OUTPUT_DIR}/${OUTPUT_NAME}_intermediate.o")
- # Get include directories from tvm_ffi_header
- get_target_property(TVM_FFI_INCLUDES tvm_ffi_header
INTERFACE_INCLUDE_DIRECTORIES)
+ # Get include directories from tvm_ffi header target
+ if (TARGET tvm_ffi::header)
+ set(TVM_FFI_HEADER_TARGET tvm_ffi::header)
+ elseif (TARGET tvm_ffi_header)
+ set(TVM_FFI_HEADER_TARGET tvm_ffi_header)
+ else ()
+ message(
+ FATAL_ERROR
+ "tvm_ffi_embed_cubin: required target 'tvm_ffi::header' or
'tvm_ffi_header' does not exist."
+ )
+ endif ()
+ get_target_property(TVM_FFI_INCLUDES ${TVM_FFI_HEADER_TARGET}
INTERFACE_INCLUDE_DIRECTORIES)
# Convert list to -I flags
set(INCLUDE_FLAGS "")
diff --git a/cmake/Utils/Library.cmake b/cmake/Utils/Library.cmake
index 012b3ca..e6d4e2d 100644
--- a/cmake/Utils/Library.cmake
+++ b/cmake/Utils/Library.cmake
@@ -145,17 +145,18 @@ endfunction ()
# [STUB_INIT ON|OFF] [STUB_DIR <dir>] [STUB_PKG <pkg>] [STUB_PREFIX <prefix>]
# )
# Configure a target to integrate with TVM-FFI CMake utilities:
-# - Optionally link against tvm_ffi_header and/or tvm_ffi_shared
+# - Link against tvm_ffi::header and/or tvm_ffi::shared
# - Always apply tvm_ffi_add_prefix_map(target_name <current source dir>)
-# - Optionally enable Apple dSYM generation via
tvm_ffi_add_apple_dsymutil(target_name)
-# - Optionally apply MSVC-specific flags via
tvm_ffi_add_msvc_flags(target_name)
+# - Enable Apple dSYM generation via tvm_ffi_add_apple_dsymutil(target_name)
+# - Apply MSVC-specific flags via tvm_ffi_add_msvc_flags(target_name)
+# - Add post-build step to generate Python stubs via tvm_ffi.stub.cli
#
# Parameters:
# target_name: Existing CMake target to modify (positional, required)
#
# Keyword parameters:
-# LINK_SHARED: Whether to link tvm_ffi_shared into the target (default: ON;
ON/OFF-style)
-# LINK_HEADER: Whether to link tvm_ffi_header into the target (default: ON;
ON/OFF-style)
+# LINK_SHARED: Whether to link tvm_ffi::shared into the target (default:
ON; ON/OFF-style)
+# LINK_HEADER: Whether to link tvm_ffi::header into the target (default:
ON; ON/OFF-style)
# DEBUG_SYMBOL: Whether to enable debug symbol post-processing hooks.
# On Apple this calls tvm_ffi_add_apple_dsymutil(target_name)
(default: ON; ON/OFF-style)
# On non-Apple platforms this is currently a no-op unless you
extend it. (default: ON)
@@ -257,24 +258,24 @@ function (tvm_ffi_configure_target target)
# LINK_HEADER
if (tvm_ffi_arg__LINK_HEADER)
- if (TARGET tvm_ffi_header)
- target_link_libraries("${target}" PRIVATE tvm_ffi_header)
+ if (TARGET tvm_ffi::header)
+ target_link_libraries("${target}" PRIVATE tvm_ffi::header)
else ()
message(
FATAL_ERROR
- "tvm_ffi_configure_target(${target}): LINK_HEADER requested but
target 'tvm_ffi_header' does not exist."
+ "tvm_ffi_configure_target(${target}): LINK_HEADER requested but
targets 'tvm_ffi::header' do not exist."
)
endif ()
endif ()
# LINK_SHARED
if (tvm_ffi_arg__LINK_SHARED)
- if (TARGET tvm_ffi_shared)
- target_link_libraries("${target}" PRIVATE tvm_ffi_shared)
+ if (TARGET tvm_ffi::shared)
+ target_link_libraries("${target}" PRIVATE tvm_ffi::shared)
else ()
message(
FATAL_ERROR
- "tvm_ffi_configure_target(${target}): LINK_SHARED requested but
target 'tvm_ffi_shared' does not exist."
+ "tvm_ffi_configure_target(${target}): LINK_SHARED requested but
targets 'tvm_ffi::shared' do not exist."
)
endif ()
endif ()
diff --git a/cmake/tvm_ffi-config.cmake b/cmake/tvm_ffi-config.cmake
index 2129193..63333da 100644
--- a/cmake/tvm_ffi-config.cmake
+++ b/cmake/tvm_ffi-config.cmake
@@ -42,23 +42,22 @@ execute_process(
message(STATUS "Finding libfiles ${tvm_ffi_LIB_FILES}")
-add_library(tvm_ffi_header INTERFACE)
-target_compile_features(tvm_ffi_header INTERFACE cxx_std_17)
-target_include_directories(tvm_ffi_header INTERFACE "${tvm_ffi_INCLUDE_DIR}")
-target_include_directories(tvm_ffi_header INTERFACE
"${tvm_ffi_DLPACK_INCLUDE_DIR}")
+add_library(tvm_ffi::header INTERFACE IMPORTED)
+target_compile_features(tvm_ffi::header INTERFACE cxx_std_17)
+target_include_directories(tvm_ffi::header INTERFACE "${tvm_ffi_INCLUDE_DIR}")
+target_include_directories(tvm_ffi::header INTERFACE
"${tvm_ffi_DLPACK_INCLUDE_DIR}")
-add_library(tvm_ffi_shared SHARED IMPORTED)
-target_compile_features(tvm_ffi_shared INTERFACE cxx_std_17)
+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}")
+ 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}")
+ 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::shared PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+
"${tvm_ffi_INCLUDE_DIR};${tvm_ffi_DLPACK_INCLUDE_DIR}"
)
include(${CMAKE_CURRENT_LIST_DIR}/Utils/Library.cmake)
diff --git a/docs/get_started/quickstart.rst b/docs/get_started/quickstart.rst
index c702c7c..958b0a4 100644
--- a/docs/get_started/quickstart.rst
+++ b/docs/get_started/quickstart.rst
@@ -132,7 +132,7 @@ TVM-FFI natively integrates with CMake via ``find_package``
as demonstrated belo
execute_process(COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config
--cmakedir OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_ROOT)
find_package(tvm_ffi CONFIG REQUIRED)
- # Link C++ target to `tvm_ffi_header` and `tvm_ffi_shared`
+ # Link C++ target to `tvm_ffi::header` and `tvm_ffi::shared`
add_library(add_one_cpu SHARED compile/add_one_cpu.cc)
tvm_ffi_configure_target(add_one_cpu)
@@ -146,7 +146,7 @@ TVM-FFI natively integrates with CMake via ``find_package``
as demonstrated belo
execute_process(COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config
--cmakedir OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_VARIABLE tvm_ffi_ROOT)
find_package(tvm_ffi CONFIG REQUIRED)
- # Link CUDA target to `tvm_ffi_header` and `tvm_ffi_shared`
+ # Link CUDA target to `tvm_ffi::header` and `tvm_ffi::shared`
add_library(add_one_cuda SHARED compile/add_one_cuda.cu)
tvm_ffi_configure_target(add_one_cuda)
diff --git a/examples/cubin_launcher/dynamic_cubin/CMakeLists.txt
b/examples/cubin_launcher/dynamic_cubin/CMakeLists.txt
index 3ca7462..dd30d8b 100644
--- a/examples/cubin_launcher/dynamic_cubin/CMakeLists.txt
+++ b/examples/cubin_launcher/dynamic_cubin/CMakeLists.txt
@@ -52,7 +52,7 @@ add_custom_target(
# Step 2: Build lib_dynamic shared library (loads CUBIN from file at runtime)
add_library(lib_dynamic SHARED src/lib_dynamic.cc)
-target_link_libraries(lib_dynamic PRIVATE tvm_ffi_header tvm_ffi_shared
CUDA::cudart)
+target_link_libraries(lib_dynamic PRIVATE tvm_ffi::header tvm_ffi::shared
CUDA::cudart)
add_dependencies(lib_dynamic generate_cubin)
set_target_properties(
lib_dynamic
diff --git a/examples/cubin_launcher/embedded_cubin/CMakeLists.txt
b/examples/cubin_launcher/embedded_cubin/CMakeLists.txt
index 5286565..4480417 100644
--- a/examples/cubin_launcher/embedded_cubin/CMakeLists.txt
+++ b/examples/cubin_launcher/embedded_cubin/CMakeLists.txt
@@ -58,7 +58,7 @@ tvm_ffi_embed_cubin(
# Step 3: Build lib_embedded shared library (with embedded CUBIN)
add_library(lib_embedded SHARED
${CMAKE_CURRENT_BINARY_DIR}/lib_embedded_with_cubin.o)
-target_link_libraries(lib_embedded PRIVATE tvm_ffi_header tvm_ffi_shared
CUDA::cudart)
+target_link_libraries(lib_embedded PRIVATE tvm_ffi::header tvm_ffi::shared
CUDA::cudart)
set_target_properties(
lib_embedded
PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/"
diff --git a/examples/quickstart/CMakeLists.txt
b/examples/quickstart/CMakeLists.txt
index eaf7659..0ce0c21 100644
--- a/examples/quickstart/CMakeLists.txt
+++ b/examples/quickstart/CMakeLists.txt
@@ -61,22 +61,20 @@ find_package(tvm_ffi CONFIG REQUIRED)
if (EXAMPLE_NAME STREQUAL "compile_cpu")
# Example 1. C++ `add_one`
add_library(add_one_cpu SHARED compile/add_one_cpu.cc)
- target_link_libraries(add_one_cpu PRIVATE tvm_ffi_header)
- target_link_libraries(add_one_cpu PRIVATE tvm_ffi_shared)
+ target_link_libraries(add_one_cpu PRIVATE tvm_ffi::header tvm_ffi::shared)
set_target_properties(add_one_cpu PROPERTIES PREFIX "" SUFFIX ".so")
set_flat_output_dirs(add_one_cpu)
elseif (EXAMPLE_NAME STREQUAL "compile_cuda")
# Example 2. CUDA `add_one`
enable_language(CUDA)
add_library(add_one_cuda SHARED compile/add_one_cuda.cu)
- target_link_libraries(add_one_cuda PRIVATE tvm_ffi_shared)
+ target_link_libraries(add_one_cuda PRIVATE tvm_ffi::header tvm_ffi::shared)
set_target_properties(add_one_cuda PROPERTIES PREFIX "" SUFFIX ".so")
set_flat_output_dirs(add_one_cuda)
elseif (EXAMPLE_NAME STREQUAL "load_cpp")
# Example 3. Load C++ shared library
add_executable(load_cpp load/load_cpp.cc)
- target_link_libraries(load_cpp PRIVATE tvm_ffi_header)
- target_link_libraries(load_cpp PRIVATE tvm_ffi_shared)
+ target_link_libraries(load_cpp PRIVATE tvm_ffi::header tvm_ffi::shared)
set_flat_output_dirs(load_cpp)
else ()
message(FATAL_ERROR "Unknown EXAMPLE_NAME option: ${EXAMPLE_NAME}. "
diff --git a/examples/stable_c_abi/CMakeLists.txt
b/examples/stable_c_abi/CMakeLists.txt
index a313034..f1d01d3 100644
--- a/examples/stable_c_abi/CMakeLists.txt
+++ b/examples/stable_c_abi/CMakeLists.txt
@@ -58,8 +58,7 @@ find_package(tvm_ffi CONFIG REQUIRED)
if (EXAMPLE_NAME STREQUAL "kernel")
# Example 1. `add_one_cpu` in C
add_library(add_one_cpu SHARED src/add_one_cpu.c)
- target_link_libraries(add_one_cpu PRIVATE tvm_ffi_header)
- target_link_libraries(add_one_cpu PRIVATE tvm_ffi_shared)
+ target_link_libraries(add_one_cpu PRIVATE tvm_ffi::header tvm_ffi::shared)
set_target_properties(
add_one_cpu
PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/"
@@ -73,8 +72,7 @@ if (EXAMPLE_NAME STREQUAL "kernel")
elseif (EXAMPLE_NAME STREQUAL "load")
# Example 2. Load `add_one_cpu` shared library in C
add_executable(load src/load.c)
- target_link_libraries(load PRIVATE tvm_ffi_header)
- target_link_libraries(load PRIVATE tvm_ffi_shared)
+ target_link_libraries(load PRIVATE tvm_ffi::header tvm_ffi::shared)
set_target_properties(
load
PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/"