Skip to content

Commit 9e4ef01

Browse files
ai-edge-botcopybara-github
authored andcommitted
Update CMake to support x86 build. The key is to stop depending on ARM KleidiAI as it won't be produced on x86 platforms
LiteRT-PiperOrigin-RevId: 828236941
1 parent 67e6bb5 commit 9e4ef01

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

litert/CMakeLists.txt

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,22 @@ if(NOT EXISTS "${TFLITE_BUILD_DIR}/libtensorflow-lite.a")
107107

108108
# Configure TFLite
109109
message(STATUS "Configuring TFLite...")
110-
set(_tflite_extra_args)
110+
set(_tflite_extra_args -DCMAKE_POLICY_VERSION_MINIMUM=3.5)
111+
set(_litert_disable_kleidiai FALSE)
112+
if(CMAKE_SYSTEM_PROCESSOR)
113+
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" _litert_system_proc_lower)
114+
else()
115+
set(_litert_system_proc_lower "")
116+
endif()
117+
if(_litert_system_proc_lower MATCHES "^(x86_64|amd64|i[3-6]86)$")
118+
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "Linux")
119+
set(_litert_disable_kleidiai TRUE)
120+
endif()
121+
endif()
122+
if(_litert_disable_kleidiai)
123+
list(APPEND _tflite_extra_args -DXNNPACK_ENABLE_KLEIDIAI=OFF)
124+
message(STATUS "Disabling KleidiAI for host ${CMAKE_SYSTEM_NAME}/${CMAKE_SYSTEM_PROCESSOR}")
125+
endif()
111126
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
112127
# Propagate Android toolchain settings to the inner TFLite configure
113128
if(CMAKE_TOOLCHAIN_FILE)
@@ -279,10 +294,58 @@ find_package(absl REQUIRED)
279294
if(NOT TARGET tensorflow-lite)
280295
if(EXISTS "${TFLITE_BUILD_DIR}/libtensorflow-lite.a")
281296
add_library(tensorflow-lite STATIC IMPORTED)
297+
set(_litert_tflite_link_libs
298+
"${TFLITE_BUILD_DIR}/pthreadpool/libpthreadpool.a"
299+
"${TFLITE_BUILD_DIR}/_deps/farmhash-build/libfarmhash.a"
300+
"${TFLITE_BUILD_DIR}/_deps/fft2d-build/libfft2d_fftsg2d.a"
301+
"${TFLITE_BUILD_DIR}/_deps/fft2d-build/libfft2d_fftsg.a"
302+
"${TFLITE_BUILD_DIR}/_deps/cpuinfo-build/libcpuinfo.a"
303+
"${TFLITE_BUILD_DIR}/libxnnpack-delegate.a"
304+
"${TFLITE_BUILD_DIR}/_deps/xnnpack-build/libXNNPACK.a"
305+
"${TFLITE_BUILD_DIR}/_deps/xnnpack-build/libxnnpack-microkernels-prod.a"
306+
)
307+
set(_kleidiai_lib "${TFLITE_BUILD_DIR}/kleidiai/libkleidiai.a")
308+
if(EXISTS "${_kleidiai_lib}")
309+
list(APPEND _litert_tflite_link_libs "${_kleidiai_lib}")
310+
else()
311+
message(STATUS "LiteRT: KleidiAI static library not found at ${_kleidiai_lib}; continuing without it.")
312+
endif()
313+
list(APPEND _litert_tflite_link_libs
314+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_allocator.a"
315+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_apply_multiplier.a"
316+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_block_map.a"
317+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_blocking_counter.a"
318+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_context.a"
319+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_context_get_ctx.a"
320+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_cpuinfo.a"
321+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_ctx.a"
322+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_denormal.a"
323+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_frontend.a"
324+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx.a"
325+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx2_fma.a"
326+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx512.a"
327+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_arm.a"
328+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx.a"
329+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx2_fma.a"
330+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx512.a"
331+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_arm.a"
332+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx.a"
333+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx2_fma.a"
334+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx512.a"
335+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_prepare_packed_matrices.a"
336+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_prepacked_cache.a"
337+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_system_aligned_alloc.a"
338+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_thread_pool.a"
339+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/profiler/libruy_profiler_instrumentation.a"
340+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_trmul.a"
341+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_tune.a"
342+
"${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_wait.a"
343+
"${TFLITE_BUILD_DIR}/_deps/flatbuffers-build/libflatbuffers.a"
344+
)
282345
set_target_properties(tensorflow-lite PROPERTIES
283346
IMPORTED_LOCATION "${TFLITE_BUILD_DIR}/libtensorflow-lite.a"
284347
INTERFACE_INCLUDE_DIRECTORIES "${TFLITE_SOURCE_DIR};${TFLITE_BUILD_DIR}"
285-
INTERFACE_LINK_LIBRARIES "${TFLITE_BUILD_DIR}/pthreadpool/libpthreadpool.a;${TFLITE_BUILD_DIR}/_deps/farmhash-build/libfarmhash.a;${TFLITE_BUILD_DIR}/_deps/fft2d-build/libfft2d_fftsg2d.a;${TFLITE_BUILD_DIR}/_deps/fft2d-build/libfft2d_fftsg.a;${TFLITE_BUILD_DIR}/_deps/cpuinfo-build/libcpuinfo.a;${TFLITE_BUILD_DIR}/libxnnpack-delegate.a;${TFLITE_BUILD_DIR}/_deps/xnnpack-build/libXNNPACK.a;${TFLITE_BUILD_DIR}/_deps/xnnpack-build/libxnnpack-microkernels-prod.a;${TFLITE_BUILD_DIR}/kleidiai/libkleidiai.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_allocator.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_apply_multiplier.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_block_map.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_blocking_counter.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_context.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_context_get_ctx.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_cpuinfo.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_ctx.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_denormal.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_frontend.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx2_fma.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_have_built_path_for_avx512.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_arm.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx2_fma.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_kernel_avx512.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_arm.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx2_fma.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_pack_avx512.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_prepare_packed_matrices.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_prepacked_cache.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_system_aligned_alloc.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_thread_pool.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/profiler/libruy_profiler_instrumentation.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_trmul.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_tune.a;${TFLITE_BUILD_DIR}/_deps/ruy-build/ruy/libruy_wait.a;${TFLITE_BUILD_DIR}/_deps/flatbuffers-build/libflatbuffers.a"
348+
INTERFACE_LINK_LIBRARIES "${_litert_tflite_link_libs}"
286349
)
287350
endif()
288351
endif()

0 commit comments

Comments
 (0)