@@ -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)
279294if (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 ()
288351endif ()
0 commit comments