Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,15 @@ target_include_directories(
)
target_link_libraries(tokenizers PUBLIC sentencepiece-static re2::re2)

# Link with atomic library on aarch64/arm64 systems
# Some aarch64 systems require explicit linking with libatomic for certain atomic operations
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
find_library(ATOMIC_LIB NAMES atomic libatomic.so libatomic.so.1)
if(ATOMIC_LIB)
target_link_libraries(tokenizers PUBLIC ${ATOMIC_LIB})
endif()
endif()

if(SUPPORT_REGEX_LOOKAHEAD)
set(PCRE2_STATIC_PIC ON)
set(PCRE2_BUILD_PCRE2_8 ON)
Expand Down Expand Up @@ -160,6 +169,18 @@ if(TOKENIZERS_BUILD_PYTHON)
# Link with the tokenizers library
target_link_libraries(pytorch_tokenizers_cpp PRIVATE tokenizers)

# Link with atomic library on aarch64/arm64 systems
# Some aarch64 systems require explicit linking with libatomic for certain atomic operations
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
find_library(ATOMIC_LIB NAMES atomic libatomic.so libatomic.so.1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we have to duplicate 1) the find_library call 2) the gating? can't we just if(ATOMIC_LIB) since the previous time we look, on lines 97-105, is unconditional?

if(ATOMIC_LIB)
target_link_libraries(pytorch_tokenizers_cpp PRIVATE ${ATOMIC_LIB})
message(STATUS "Found libatomic: ${ATOMIC_LIB}")
else()
message(WARNING "libatomic not found on aarch64 - build may fail")
endif()
endif()

# Set properties for the Python extension
target_compile_definitions(pytorch_tokenizers_cpp PRIVATE VERSION_INFO=${PROJECT_VERSION})

Expand Down