mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-31 23:27:43 +00:00
cmake changes for SNPE EP (#11821)
* move code used to find the SNPE libs to a separate cmake file * Roll back the change for libc++_shared, it's the one from SNPE SDK, otherwise it will cause uncaught exception of type std::bad_cast because of conflict
This commit is contained in:
parent
0869f4f4ea
commit
7582644f57
3 changed files with 48 additions and 38 deletions
|
|
@ -1007,28 +1007,8 @@ if (onnxruntime_USE_CUDA)
|
|||
endif()
|
||||
|
||||
if(onnxruntime_USE_SNPE)
|
||||
if (NOT SNPE_ARCH_ABI)
|
||||
if(MSVC)
|
||||
string(TOLOWER ${CMAKE_GENERATOR_PLATFORM} GEN_PLATFORM)
|
||||
message(STATUS "Building MSVC for architecture ${CMAKE_SYSTEM_PROCESSOR} with CMAKE_GENERATOR_PLATFORM as ${GEN_PLATFORM}")
|
||||
if (${GEN_PLATFORM} STREQUAL "arm64")
|
||||
set(SNPE_ARCH_ABI aarch64-windows-vc19)
|
||||
else()
|
||||
set(SNPE_ARCH_ABI x86_64-windows-vc19)
|
||||
endif()
|
||||
else()
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(SNPE_ARCH_ABI aarch64-android-clang6.0)
|
||||
elseif (LINUX)
|
||||
if (${GEN_PLATFORM} STREQUAL "x64")
|
||||
set(SNPE_ARCH_ABI x86_64-linux-clang)
|
||||
else()
|
||||
set(SNPE_ARCH_ABI aarch64-linux-gcc4.9)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND onnxruntime_LINK_DIRS ${SNPE_ROOT}/lib/${SNPE_ARCH_ABI})
|
||||
endif()
|
||||
include(find_snpe.cmake)
|
||||
list(APPEND onnxruntime_EXTERNAL_LIBRARIES ${SNPE_NN_LIBS})
|
||||
endif()
|
||||
|
||||
FILE(TO_NATIVE_PATH ${CMAKE_BINARY_DIR} ORT_BINARY_DIR)
|
||||
|
|
|
|||
46
cmake/find_snpe.cmake
Normal file
46
cmake/find_snpe.cmake
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
if (NOT SNPE_ARCH_ABI)
|
||||
if(MSVC)
|
||||
string(TOLOWER ${CMAKE_GENERATOR_PLATFORM} GEN_PLATFORM)
|
||||
message(STATUS "Building MSVC for architecture ${CMAKE_SYSTEM_PROCESSOR} with CMAKE_GENERATOR_PLATFORM as ${GEN_PLATFORM}")
|
||||
if (${GEN_PLATFORM} STREQUAL "arm64")
|
||||
set(SNPE_ARCH_ABI aarch64-windows-vc19)
|
||||
else()
|
||||
set(SNPE_ARCH_ABI x86_64-windows-vc19)
|
||||
endif()
|
||||
else()
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(SNPE_ARCH_ABI aarch64-android-clang6.0)
|
||||
elseif (LINUX)
|
||||
if (${GEN_PLATFORM} STREQUAL "x64")
|
||||
set(SNPE_ARCH_ABI x86_64-linux-clang)
|
||||
else()
|
||||
set(SNPE_ARCH_ABI aarch64-linux-gcc4.9)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
list(APPEND onnxruntime_LINK_DIRS ${SNPE_ROOT}/lib/${SNPE_ARCH_ABI})
|
||||
endif()
|
||||
file(TO_CMAKE_PATH ${SNPE_ROOT} SNPE_ROOT)
|
||||
get_filename_component(SNPE_CMAKE_DIR ${SNPE_ROOT} ABSOLUTE)
|
||||
file(TO_CMAKE_PATH "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}" SNPE_LIB_DIR)
|
||||
file(TO_NATIVE_PATH ${SNPE_LIB_DIR} SNPE_NATIVE_DIR)
|
||||
message(STATUS "Looking for SNPE library in ${SNPE_NATIVE_DIR}")
|
||||
find_library(SNPE NAMES snpe SNPE libSNPE.so PATHS "${SNPE_NATIVE_DIR}" "${SNPE_ROOT}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH REQUIRED)
|
||||
|
||||
file(GLOB SNPE_SO_FILES LIST_DIRECTORIES false "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}/*.so" "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}/*.dll")
|
||||
# add dsp skel files to distribution
|
||||
file(GLOB SNPE_DSP_FILES LIST_DIRECTORIES false "${SNPE_CMAKE_DIR}/lib/dsp/*.so")
|
||||
list(APPEND SNPE_SO_FILES ${QCDK_FILES} ${SNPE_DSP_FILES})
|
||||
|
||||
if(NOT SNPE OR NOT SNPE_SO_FILES)
|
||||
message(ERROR "Snpe not found in ${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI} for platform ${CMAKE_GENERATOR_PLATFORM}")
|
||||
endif()
|
||||
|
||||
set(SNPE_NN_LIBS ${SNPE})
|
||||
if(ANDROID)
|
||||
# Use libc++_shared.so from SNPE SDK
|
||||
list(APPEND SNPE_NN_LIBS libc++_shared.so)
|
||||
endif()
|
||||
|
||||
message(STATUS "SNPE library at ${SNPE}")
|
||||
message(STATUS "SNPE so/dlls in ${SNPE_SO_FILES}")
|
||||
|
|
@ -10,19 +10,6 @@ file(GLOB_RECURSE
|
|||
"${ONNXRUNTIME_ROOT}/core/providers/snpe/*.cc"
|
||||
)
|
||||
|
||||
if(ANDROID)
|
||||
# Specify the link libraries
|
||||
set(SNPE_NN_LIBS ${SNPE} libc++_shared.so)
|
||||
else()
|
||||
set(SNPE_NN_LIBS ${SNPE})
|
||||
endif()
|
||||
|
||||
file(TO_CMAKE_PATH ${SNPE_ROOT} SNPE_ROOT)
|
||||
get_filename_component(SNPE_CMAKE_DIR ${SNPE_ROOT} ABSOLUTE)
|
||||
file(TO_CMAKE_PATH "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}" SNPE_LIB_DIR)
|
||||
file(TO_NATIVE_PATH ${SNPE_LIB_DIR} SNPE_NATIVE_DIR)
|
||||
message(STATUS "Looking for SNPE library in ${SNPE_NATIVE_DIR}")
|
||||
find_library(SNPE NAMES snpe SNPE libSNPE.so PATHS "${SNPE_NATIVE_DIR}" "${SNPE_ROOT}" NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH REQUIRED)
|
||||
file(GLOB SNPE_SO_FILES LIST_DIRECTORIES false "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}/*.so" "${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI}/*.dll")
|
||||
# add dsp skel files to distribution
|
||||
file(GLOB SNPE_DSP_FILES LIST_DIRECTORIES false "${SNPE_CMAKE_DIR}/lib/dsp/*.so")
|
||||
|
|
@ -31,14 +18,11 @@ list(APPEND SNPE_SO_FILES ${QCDK_FILES} ${SNPE_DSP_FILES})
|
|||
if(NOT SNPE OR NOT SNPE_SO_FILES)
|
||||
message(ERROR "Snpe not found in ${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI} for platform ${CMAKE_GENERATOR_PLATFORM}")
|
||||
endif()
|
||||
message(STATUS "SNPE library at ${SNPE}")
|
||||
message(STATUS "SNPE so/dlls in ${SNPE_SO_FILES}")
|
||||
|
||||
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_snpe_cc_srcs})
|
||||
onnxruntime_add_static_library(onnxruntime_providers_snpe ${onnxruntime_providers_snpe_cc_srcs})
|
||||
onnxruntime_add_include_to_target(onnxruntime_providers_snpe onnxruntime_common onnxruntime_framework onnx onnx_proto protobuf::libprotobuf-lite flatbuffers)
|
||||
link_directories(${SNPE_CMAKE_DIR}/lib/${SNPE_ARCH_ABI} ${SNPE_CMAKE_DIR}/lib/dsp)
|
||||
target_link_libraries(onnxruntime_providers_snpe PRIVATE SNPE ${SNPE_NN_LIBS})
|
||||
add_dependencies(onnxruntime_providers_snpe onnx ${onnxruntime_EXTERNAL_DEPENDENCIES})
|
||||
set_target_properties(onnxruntime_providers_snpe PROPERTIES CXX_STANDARD_REQUIRED ON)
|
||||
set_target_properties(onnxruntime_providers_snpe PROPERTIES FOLDER "ONNXRuntime")
|
||||
|
|
|
|||
Loading…
Reference in a new issue