@@ -164,7 +164,6 @@ add_library(qnn_sys_function_interface INTERFACE)
164164add_library (qnn_sys_implementation STATIC )
165165add_library (shared_buffer STATIC )
166166add_library (wrappers STATIC )
167- add_library (utils STATIC )
168167
169168#
170169# declare dependency
@@ -230,24 +229,40 @@ target_link_libraries(
230229)
231230
232231target_link_libraries (
233- qnn_manager
234- PRIVATE qnn_factory
235- qnn_backend_unified_registry
236- wrappers
237- qnn_schema
238- utils
239- shared_buffer
240- qnn_dlc_manager
232+ qnn_manager PRIVATE qnn_factory qnn_backend_unified_registry wrappers
233+ qnn_schema shared_buffer qnn_dlc_manager
241234)
242235target_link_libraries (
243236 qnn_executorch_backend
244237 PRIVATE qnn_executorch_header qnn_schema qnn_manager executorch_core
245238 extension_tensor qnn_backend_options
246239)
240+
241+ # Add CTX_BIN_ALIGNMENT here so all backend files has access to this macro.
242+ add_compile_definitions (QNN_CTX_BIN_ALIGNMENT=256 )
243+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES Hexagon)
244+ # Add macro here so we can dlopen the correct .so library.
245+ if (DSP_TYPE STREQUAL "3" )
246+ string (TOUPPER ${DSP_VERSION} CAPITAL_DSP_VERSION)
247+ set (HEXAGON_LIB "libQnnHtp${CAPITAL_DSP_VERSION} .so" )
248+ add_compile_definitions (HEXAGON_LIB= "${HEXAGON_LIB} " )
249+ message (STATUS "For hexagon build, using HTP Library: ${HEXAGON_LIB} " )
250+ else ()
251+ message (FATAL_ERROR "Unknown DSP_TYPE ${DSP_TYPE} " )
252+ endif ()
253+
254+ target_link_libraries (
255+ qnn_executorch_backend
256+ PRIVATE
257+ ${HEXAGON_TOOLS_ROOT} /Tools/target/hexagon/lib/${DSP_VERSION}/G0/pic/libc.so
258+ ${HEXAGON_TOOLS_ROOT} /Tools/target/hexagon/lib/${DSP_VERSION}/G0/pic/libc++.so.1
259+ ${HEXAGON_TOOLS_ROOT} /Tools/target/hexagon/lib/${DSP_VERSION}/G0/pic/libc++abi.so.1
260+ )
261+ endif ()
262+
247263set_target_properties (
248264 qnn_executorch_backend PROPERTIES LINK_FLAGS "-Wl,-rpath='$ORIGIN'"
249265)
250- target_link_libraries (utils PRIVATE qnn_executorch_logging )
251266target_link_libraries (
252267 shared_buffer PRIVATE qnn_executorch_logging ${CMAKE_DL_LIBS}
253268)
@@ -278,6 +293,13 @@ install(
278293 RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} /executorch/backends/qualcomm
279294)
280295
296+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES Hexagon)
297+ add_subdirectory (
298+ ${QNN_EXECUTORCH_ROOT_DIR} /runtime/backends/direct_mode
299+ ${CMAKE_CURRENT_BINARY_DIR} /qnn_executorch/direct_mode
300+ )
301+ endif ()
302+
281303# QNN pybind
282304if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" )
283305 add_subdirectory (
0 commit comments