Skip to content

Commit e92ac85

Browse files
committed
Use ExternalProject_Add to build tokenizers
This way it avoids the CMake target name collision between XNNPACK's `memory` and Abseil's `memory`
1 parent 09a4b9d commit e92ac85

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

extension/llm/runner/CMakeLists.txt

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,23 @@ target_include_directories(
4444
add_library(extension_llm_runner STATIC ${_extension_llm_runner__srcs})
4545

4646
# add tokenizers
47-
add_subdirectory(
48-
${EXECUTORCH_ROOT}/extension/llm/tokenizers
49-
${CMAKE_CURRENT_BINARY_DIR}/../../../extension/llm/tokenizers
47+
ExternalProject_Add(
48+
tokenizers_external_project
49+
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/../tokenizers
50+
SOURCE_DIR ${EXECUTORCH_ROOT}/extension/llm/tokenizers
51+
CMAKE_ARGS -DSUPPORT_REGEX_LOOKAHEAD=ON -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR}/../tokenizers
52+
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../tokenizers
5053
)
51-
52-
set(runner_deps executorch_core extension_module extension_tensor tokenizers)
54+
add_dependencies(extension_llm_runner tokenizers_external_project)
55+
find_package(tokenizers CONFIG HINTS ${CMAKE_INSTALL_PREFIX} ${CMAKE_CURRENT_BINARY_DIR}/../tokenizers)
56+
set(runner_deps executorch extension_module extension_tensor ${TOKENIZERS_LIBRARIES})
5357

5458
target_link_libraries(extension_llm_runner PUBLIC ${runner_deps})
5559

5660
target_include_directories(
57-
extension_llm_runner INTERFACE ${_common_include_directories}
58-
${EXECUTORCH_ROOT}/extension/llm/tokenizers/include
61+
extension_llm_runner PUBLIC ${_common_include_directories}
62+
${TOKENIZERS_INCLUDE_DIRS}
63+
${CMAKE_CURRENT_BINARY_DIR}/../tokenizers/include
5964
)
6065

6166
if(BUILD_TESTING)

0 commit comments

Comments
 (0)