Skip to content

Commit dc7ea3a

Browse files
authored
add support for Xcode and MacOS (#65)
1 parent 832b872 commit dc7ea3a

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

CMakeLists.txt

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,25 @@ else()
102102
endif()
103103
set(TOKENIZERS_CPP_INCLUDE ${TOKENIZERS_CPP_ROOT}/include)
104104

105+
# Find cargo executable
106+
if(CMAKE_HOST_WIN32)
107+
set(USER_HOME "$ENV{USERPROFILE}")
108+
else()
109+
set(USER_HOME "$ENV{HOME}")
110+
endif()
111+
if(NOT DEFINED CARGO_HOME)
112+
if("$ENV{CARGO_HOME}" STREQUAL "")
113+
set(CARGO_HOME "${USER_HOME}/.cargo")
114+
else()
115+
set(CARGO_HOME "$ENV{CARGO_HOME}")
116+
endif()
117+
endif()
118+
119+
find_program(CARGO_EXECUTABLE cargo
120+
HINTS "${CARGO_HOME}"
121+
PATH_SUFFIXES "bin")
122+
mark_as_advanced(CARGO_EXECUTABLE)
123+
105124
# NOTE: need to use cmake -E env to be portable in win
106125
add_custom_command(
107126
OUTPUT ${TOKENIZERS_RUST_LIB}
@@ -110,7 +129,7 @@ add_custom_command(
110129
CARGO_TARGET_DIR=${TOKENIZERS_CPP_CARGO_TARGET_DIR}
111130
${CARGO_EXTRA_ENVS}
112131
RUSTFLAGS="${TOKENIZERS_CPP_RUST_FLAGS}"
113-
cargo build ${TOKENIZERS_CPP_CARGO_FLAGS}
132+
${CARGO_EXECUTABLE} build ${TOKENIZERS_CPP_CARGO_FLAGS}
114133
WORKING_DIRECTORY ${TOKENIZERS_CPP_CARGO_SOURCE_PATH}
115134
POST_BUILD COMMAND
116135
${CMAKE_COMMAND} -E copy
@@ -123,14 +142,14 @@ set(
123142
src/huggingface_tokenizer.cc
124143
src/rwkv_world_tokenizer.cc
125144
)
126-
add_library(tokenizer_cpp_objs OBJECT ${TOKENIZER_CPP_SRCS})
127-
target_include_directories(tokenizer_cpp_objs PRIVATE sentencepiece/src)
128-
target_include_directories(tokenizer_cpp_objs PRIVATE msgpack/include)
129-
target_include_directories(tokenizer_cpp_objs PUBLIC ${TOKENIZERS_CPP_INCLUDE})
145+
add_library(tokenizers_cpp STATIC ${TOKENIZER_CPP_SRCS})
146+
target_include_directories(tokenizers_cpp PRIVATE sentencepiece/src)
147+
target_include_directories(tokenizers_cpp PRIVATE msgpack/include)
148+
target_include_directories(tokenizers_cpp PUBLIC ${TOKENIZERS_CPP_INCLUDE})
130149
if (MLC_ENABLE_SENTENCEPIECE_TOKENIZER STREQUAL "ON")
131-
target_compile_definitions(tokenizer_cpp_objs PUBLIC MLC_ENABLE_SENTENCEPIECE_TOKENIZER)
150+
target_compile_definitions(tokenizers_cpp PUBLIC MLC_ENABLE_SENTENCEPIECE_TOKENIZER)
132151
endif ()
133-
target_link_libraries(tokenizer_cpp_objs PRIVATE msgpack-cxx)
152+
target_link_libraries(tokenizers_cpp PRIVATE msgpack-cxx)
134153

135154
# sentencepiece config
136155
option(SPM_ENABLE_SHARED "override sentence piece config" OFF)
@@ -149,6 +168,5 @@ add_subdirectory(sentencepiece sentencepiece EXCLUDE_FROM_ALL)
149168
add_library(tokenizers_c INTERFACE ${TOKENIZERS_RUST_LIB})
150169
target_link_libraries(tokenizers_c INTERFACE ${TOKENIZERS_RUST_LIB} ${TOKENIZERS_C_LINK_LIBS})
151170

152-
add_library(tokenizers_cpp STATIC $<TARGET_OBJECTS:tokenizer_cpp_objs>)
153171
target_link_libraries(tokenizers_cpp PRIVATE tokenizers_c sentencepiece-static ${TOKENIZERS_CPP_LINK_LIBS})
154172
target_include_directories(tokenizers_cpp PUBLIC ${TOKENIZERS_CPP_INCLUDE})

0 commit comments

Comments
 (0)