Skip to content

Commit 4b5b5f7

Browse files
ashrit-msadrianlizarragajustinchubyfs-eireedgchen1
authored
Update win-ort-main to tip main 250123 (#23473)
### Description This PR is to update the win-ort-main branch to the tip main branch as of 2025-01-23. ### PR List ddf0d37 [QNN EP] Add LoggingManager::HasDefaultLogger() to provider bridge API (#23467) 05fbbdf [QNN EP] Make QNN EP a shared library (#23120) 1336566 Add custom vcpkg ports (#23456) 2e1173c Update the compile flags for vcpkg packages (#23455) 1f628a9 [Mobile] Add BrowserStack Android MAUI Test (#23383) 009cae0 [js/webgpu] Optimize ConvTranspose (Continue) (#23429) 04a4a69 Use onnx_protobuf.h to suppress some GCC warnings (#23453) 2e3b62b Suppress some strict-aliasing related warnings in WebGPU EP (#23454) b708f9b Bump ruff from 0.9.1 to 0.9.2 (#23427) c0afc66 [WebNN] Remove workarounds for TFLite backend (#23406) 8a821ff Bump vite from 6.0.7 to 6.0.11 in /js/web/test/e2e/exports/testcases/vite-default (#23446) 220c1a2 Make ORT and Dawn use the same protobuf/abseil source code (#23447) b7b5792 Change MacOS-13 to ubuntu on for android-java-api-aar-test.yml. (#23444) 19d0d2a WIP: Dp4MatMulNBits accuracy level 4 matmul for WebGPU EP (#23365) 95b8eff [QNN EP]: Clean up QNN logging resources if an error occurs during initialization (#23435) 626134c Bump clang-format from 19.1.6 to 19.1.7 (#23428) 0cf9753 Fix eigen external deps (#23439) f9440ae Moving RN_CI Android Testing to Linux (#23422) 1aa5902 [QNN EP] workaround for QNN validation bug for Tanh with uint16 quantized output (#23432) 7f5582a Seperate RN andriod and IOS into 2 separated Stages. (#23400) 73deac2 Implement some missing element wise Add/Sub/Mul/Div/Neg operations for CPU and CUDA EPs (#23090) 949fe42 Upgrade Java version from react-native/android to Java 17 (#23066) 0892c23 Update Qnn SDK default version to 2.30 (#23411) 94c099b Fix type cast build error (#23423) d633e57 [WebNN EP] Fix AddInitializersToSkip issues (#23354) e988ef0 [QNN EP] Fix regression for MatMul with two quantized/dynamic uint16 inputs (#23419) 7538795 Update onnxruntime binary size checks ci pipeline's docker image (#23405) 6c5ea41 Revert "[QNN EP] Clean up correctly from a partial setup (#23320)" (#23420) e866804 Enable comprehension simplification in ruff rules (#23414) 0a5f1f3 bugfix: string_view of invalid memory (#23417) 4cc38e0 fix crash when first input of BatchNormalization is 1-D (#23387) 0334414 Target py310 and modernize codebase with ruff (#23401) 87341ac [QNN EP] Fix segfault when unregistering HTP shared memory handles (#23402) ### Motivation and Context This update includes the change to make QNN-EP a shared library. --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Adrian Lizarraga <[email protected]> Co-authored-by: Justin Chu <[email protected]> Co-authored-by: Yulong Wang <[email protected]> Co-authored-by: Edward Chen <[email protected]> Co-authored-by: Changming Sun <[email protected]> Co-authored-by: Peishen Yan <[email protected]> Co-authored-by: Tianlei Wu <[email protected]> Co-authored-by: Hector Li <[email protected]> Co-authored-by: Jian Chen <[email protected]> Co-authored-by: Alexis Tsogias <[email protected]> Co-authored-by: junchao-zhao <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: sushraja-msft <[email protected]> Co-authored-by: Wanming Lin <[email protected]> Co-authored-by: Jiajia Qin <[email protected]> Co-authored-by: Caroline Zhu <[email protected]>
1 parent df87317 commit 4b5b5f7

File tree

623 files changed

+7024
-3892
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

623 files changed

+7024
-3892
lines changed

cmake/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ option(onnxruntime_USE_OPENVINO "Build with OpenVINO support" OFF)
9393
option(onnxruntime_USE_COREML "Build with CoreML support" OFF)
9494
option(onnxruntime_USE_NNAPI_BUILTIN "Build with builtin NNAPI lib for Android NNAPI support" OFF)
9595
option(onnxruntime_USE_QNN "Build with QNN support" OFF)
96+
option(onnxruntime_BUILD_QNN_EP_STATIC_LIB "Build with QNN EP as a static library" OFF)
9697
option(onnxruntime_USE_SNPE "Build with SNPE support" OFF)
9798
option(onnxruntime_USE_RKNPU "Build with RKNPU support" OFF)
9899
option(onnxruntime_USE_DNNL "Build with DNNL support" OFF)

cmake/external/abseil-cpp.cmake

+7-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,13 @@ FetchContent_Declare(
3232

3333
onnxruntime_fetchcontent_makeavailable(abseil_cpp)
3434
FetchContent_GetProperties(abseil_cpp)
35-
set(ABSEIL_SOURCE_DIR ${abseil_cpp_SOURCE_DIR})
35+
if(abseil_cpp_SOURCE_DIR)
36+
set(ABSEIL_SOURCE_DIR ${abseil_cpp_SOURCE_DIR})
37+
if(onnxruntime_USE_WEBGPU)
38+
set(DAWN_ABSEIL_DIR ${abseil_cpp_SOURCE_DIR})
39+
endif()
40+
endif()
41+
3642
# abseil_cpp_SOURCE_DIR is non-empty if we build it from source
3743
message(STATUS "Abseil source dir:" ${ABSEIL_SOURCE_DIR})
3844
# abseil_cpp_VERSION is non-empty if we find a preinstalled ABSL

cmake/external/onnxruntime_external_deps.cmake

+6-6
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,11 @@ onnxruntime_fetchcontent_makeavailable(Protobuf)
222222
if(Protobuf_FOUND)
223223
message(STATUS "Protobuf version: ${Protobuf_VERSION}")
224224
else()
225+
if(protobuf_SOURCE_DIR)
226+
if(onnxruntime_USE_WEBGPU)
227+
set(DAWN_PROTOBUF_DIR ${protobuf_SOURCE_DIR})
228+
endif()
229+
endif()
225230
# Adjust warning flags
226231
if (TARGET libprotoc)
227232
if (NOT MSVC)
@@ -522,12 +527,7 @@ if(TARGET ONNX::onnx_proto AND NOT TARGET onnx_proto)
522527
add_library(onnx_proto ALIAS ONNX::onnx_proto)
523528
endif()
524529

525-
find_package(Eigen3 CONFIG)
526-
if(Eigen3_FOUND)
527-
get_target_property(eigen_INCLUDE_DIRS Eigen3::Eigen INTERFACE_INCLUDE_DIRECTORIES)
528-
else()
529-
include(eigen) # FetchContent
530-
endif()
530+
include(external/eigen.cmake)
531531

532532
if(onnxruntime_USE_VCPKG)
533533
find_package(wil CONFIG REQUIRED)

cmake/onnxruntime.cmake

+13-6
Original file line numberDiff line numberDiff line change
@@ -199,17 +199,12 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android" AND onnxruntime_BUILD_JAVA)
199199
endforeach()
200200
endif()
201201

202-
# This list is a reversed topological ordering of library dependencies.
203-
# Earlier entries may depend on later ones. Later ones should not depend on earlier ones.
204-
set(onnxruntime_INTERNAL_LIBRARIES
205-
onnxruntime_session
206-
${onnxruntime_libs}
202+
set(onnxruntime_INTERNAL_PROVIDER_LIBRARIES
207203
${PROVIDERS_ACL}
208204
${PROVIDERS_ARMNN}
209205
${PROVIDERS_COREML}
210206
${PROVIDERS_DML}
211207
${PROVIDERS_NNAPI}
212-
${PROVIDERS_QNN}
213208
${PROVIDERS_SNPE}
214209
${PROVIDERS_RKNPU}
215210
${PROVIDERS_VSINPU}
@@ -218,6 +213,18 @@ set(onnxruntime_INTERNAL_LIBRARIES
218213
${PROVIDERS_WEBNN}
219214
${PROVIDERS_AZURE}
220215
${PROVIDERS_INTERNAL_TESTING}
216+
)
217+
218+
if (onnxruntime_BUILD_QNN_EP_STATIC_LIB)
219+
list(APPEND onnxruntime_INTERNAL_PROVIDER_LIBRARIES onnxruntime_providers_qnn)
220+
endif()
221+
222+
# This list is a reversed topological ordering of library dependencies.
223+
# Earlier entries may depend on later ones. Later ones should not depend on earlier ones.
224+
set(onnxruntime_INTERNAL_LIBRARIES
225+
onnxruntime_session
226+
${onnxruntime_libs}
227+
${onnxruntime_INTERNAL_PROVIDER_LIBRARIES}
221228
${onnxruntime_winml}
222229
onnxruntime_optimizer
223230
onnxruntime_providers

cmake/onnxruntime_java.cmake

+8-2
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ if (WIN32)
148148
if(NOT onnxruntime_ENABLE_STATIC_ANALYSIS)
149149
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_FILE_NAME:onnxruntime>)
150150
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime4j_jni> ${JAVA_PACKAGE_JNI_DIR}/$<TARGET_FILE_NAME:onnxruntime4j_jni>)
151-
if (onnxruntime_USE_CUDA OR onnxruntime_USE_DNNL OR onnxruntime_USE_OPENVINO OR onnxruntime_USE_TENSORRT)
151+
if (onnxruntime_USE_CUDA OR onnxruntime_USE_DNNL OR onnxruntime_USE_OPENVINO OR onnxruntime_USE_TENSORRT OR (onnxruntime_USE_QNN AND NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB))
152152
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_shared> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_FILE_NAME:onnxruntime_providers_shared>)
153153
endif()
154154
if (onnxruntime_USE_CUDA)
@@ -163,11 +163,14 @@ if (WIN32)
163163
if (onnxruntime_USE_TENSORRT)
164164
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_tensorrt> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_FILE_NAME:onnxruntime_providers_tensorrt>)
165165
endif()
166+
if (onnxruntime_USE_QNN AND NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB)
167+
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_qnn> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_FILE_NAME:onnxruntime_providers_qnn>)
168+
endif()
166169
endif()
167170
else()
168171
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_LINKER_FILE_NAME:onnxruntime>)
169172
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime4j_jni> ${JAVA_PACKAGE_JNI_DIR}/$<TARGET_LINKER_FILE_NAME:onnxruntime4j_jni>)
170-
if (onnxruntime_USE_CUDA OR onnxruntime_USE_DNNL OR onnxruntime_USE_OPENVINO OR onnxruntime_USE_TENSORRT)
173+
if (onnxruntime_USE_CUDA OR onnxruntime_USE_DNNL OR onnxruntime_USE_OPENVINO OR onnxruntime_USE_TENSORRT OR (onnxruntime_USE_QNN AND NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB))
171174
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_shared> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_LINKER_FILE_NAME:onnxruntime_providers_shared>)
172175
endif()
173176
if (onnxruntime_USE_CUDA)
@@ -182,6 +185,9 @@ else()
182185
if (onnxruntime_USE_TENSORRT)
183186
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_tensorrt> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_LINKER_FILE_NAME:onnxruntime_providers_tensorrt>)
184187
endif()
188+
if (onnxruntime_USE_QNN AND NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB)
189+
add_custom_command(TARGET onnxruntime4j_jni POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:onnxruntime_providers_qnn> ${JAVA_PACKAGE_LIB_DIR}/$<TARGET_LINKER_FILE_NAME:onnxruntime_providers_qnn>)
190+
endif()
185191
endif()
186192

187193
# run the build process (this copies the results back into CMAKE_CURRENT_BINARY_DIR)

cmake/onnxruntime_providers.cmake

-3
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ endif()
7474
if(onnxruntime_USE_JSEP)
7575
set(PROVIDERS_JS onnxruntime_providers_js)
7676
endif()
77-
if(onnxruntime_USE_QNN)
78-
set(PROVIDERS_QNN onnxruntime_providers_qnn)
79-
endif()
8077
if(onnxruntime_USE_RKNPU)
8178
set(PROVIDERS_RKNPU onnxruntime_providers_rknpu)
8279
endif()

cmake/onnxruntime_providers_cpu.cmake

+3-1
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,9 @@ if (NOT onnxruntime_MINIMAL_BUILD AND NOT onnxruntime_EXTENDED_MINIMAL_BUILD
239239
set_property(TARGET onnxruntime_providers_shared APPEND_STRING PROPERTY LINK_FLAGS "-Xlinker -exported_symbols_list ${ONNXRUNTIME_ROOT}/core/providers/shared/exported_symbols.lst")
240240
elseif(UNIX)
241241
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
242-
set_property(TARGET onnxruntime_providers_shared APPEND_STRING PROPERTY LINK_FLAGS "-Xlinker --version-script=${ONNXRUNTIME_ROOT}/core/providers/shared/version_script.lds -Xlinker --gc-sections")
242+
target_link_options(onnxruntime_providers_shared PRIVATE
243+
"LINKER:--version-script=${ONNXRUNTIME_ROOT}/core/providers/shared/version_script.lds"
244+
"LINKER:--gc-sections")
243245
endif()
244246
elseif(WIN32)
245247
set_property(TARGET onnxruntime_providers_shared APPEND_STRING PROPERTY LINK_FLAGS "-DEF:${ONNXRUNTIME_ROOT}/core/providers/shared/symbols.def")

cmake/onnxruntime_providers_qnn.cmake

+79-31
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,89 @@
33

44
add_compile_definitions(USE_QNN=1)
55

6-
# These are shared utils,
7-
# TODO, move to a separate lib when used by EPs other than QNN, NNAPI and CoreML
8-
file(GLOB onnxruntime_providers_shared_utils_cc_srcs CONFIGURE_DEPENDS
9-
"${ONNXRUNTIME_ROOT}/core/providers/shared/utils/utils.h"
10-
"${ONNXRUNTIME_ROOT}/core/providers/shared/utils/utils.cc"
11-
)
6+
if(onnxruntime_BUILD_QNN_EP_STATIC_LIB)
7+
add_compile_definitions(BUILD_QNN_EP_STATIC_LIB=1)
8+
endif()
129

1310
file(GLOB_RECURSE
14-
onnxruntime_providers_qnn_ep_cc_srcs CONFIGURE_DEPENDS
15-
"${ONNXRUNTIME_ROOT}/core/providers/qnn/*.h"
16-
"${ONNXRUNTIME_ROOT}/core/providers/qnn/*.cc"
11+
onnxruntime_providers_qnn_ep_srcs CONFIGURE_DEPENDS
12+
"${ONNXRUNTIME_ROOT}/core/providers/qnn/*.h"
13+
"${ONNXRUNTIME_ROOT}/core/providers/qnn/*.cc"
1714
)
1815

19-
file(GLOB_RECURSE
20-
onnxruntime_providers_qnn_builder_cc_srcs CONFIGURE_DEPENDS
21-
"${ONNXRUNTIME_ROOT}/core/providers/qnn/builder/*.h"
22-
"${ONNXRUNTIME_ROOT}/core/providers/qnn/builder/*.cc"
23-
)
16+
if(onnxruntime_BUILD_QNN_EP_STATIC_LIB)
17+
#
18+
# Build QNN EP as a static library
19+
#
20+
set(onnxruntime_providers_qnn_srcs ${onnxruntime_providers_qnn_ep_srcs})
21+
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_qnn_srcs})
22+
onnxruntime_add_static_library(onnxruntime_providers_qnn ${onnxruntime_providers_qnn_srcs})
23+
onnxruntime_add_include_to_target(onnxruntime_providers_qnn onnxruntime_common onnxruntime_framework onnx
24+
onnx_proto protobuf::libprotobuf-lite
25+
flatbuffers::flatbuffers Boost::mp11)
26+
add_dependencies(onnxruntime_providers_qnn onnx ${onnxruntime_EXTERNAL_DEPENDENCIES})
27+
set_target_properties(onnxruntime_providers_qnn PROPERTIES CXX_STANDARD_REQUIRED ON)
28+
set_target_properties(onnxruntime_providers_qnn PROPERTIES FOLDER "ONNXRuntime")
29+
target_include_directories(onnxruntime_providers_qnn PRIVATE ${ONNXRUNTIME_ROOT}
30+
${onnxruntime_QNN_HOME}/include/QNN
31+
${onnxruntime_QNN_HOME}/include)
32+
set_target_properties(onnxruntime_providers_qnn PROPERTIES LINKER_LANGUAGE CXX)
2433

25-
set(onnxruntime_providers_qnn_cc_srcs
26-
${onnxruntime_providers_shared_utils_cc_srcs}
27-
${onnxruntime_providers_qnn_ep_cc_srcs}
28-
${onnxruntime_providers_qnn_builder_cc_srcs}
29-
)
34+
# ignore the warning unknown-pragmas on "pragma region"
35+
if(NOT MSVC)
36+
target_compile_options(onnxruntime_providers_qnn PRIVATE "-Wno-unknown-pragmas")
37+
endif()
38+
else()
39+
#
40+
# Build QNN EP as a shared library
41+
#
42+
file(GLOB_RECURSE
43+
onnxruntime_providers_qnn_shared_lib_srcs CONFIGURE_DEPENDS
44+
"${ONNXRUNTIME_ROOT}/core/providers/shared_library/*.h"
45+
"${ONNXRUNTIME_ROOT}/core/providers/shared_library/*.cc"
46+
)
47+
set(onnxruntime_providers_qnn_srcs ${onnxruntime_providers_qnn_ep_srcs}
48+
${onnxruntime_providers_qnn_shared_lib_srcs})
49+
50+
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_qnn_srcs})
51+
onnxruntime_add_shared_library_module(onnxruntime_providers_qnn ${onnxruntime_providers_qnn_srcs})
52+
onnxruntime_add_include_to_target(onnxruntime_providers_qnn ${ONNXRUNTIME_PROVIDERS_SHARED} ${GSL_TARGET} onnx
53+
onnxruntime_common Boost::mp11 safeint_interface)
54+
target_link_libraries(onnxruntime_providers_qnn PRIVATE ${ONNXRUNTIME_PROVIDERS_SHARED} ${ABSEIL_LIBS} ${CMAKE_DL_LIBS})
55+
add_dependencies(onnxruntime_providers_qnn onnxruntime_providers_shared ${onnxruntime_EXTERNAL_DEPENDENCIES})
56+
target_include_directories(onnxruntime_providers_qnn PRIVATE ${ONNXRUNTIME_ROOT}
57+
${CMAKE_CURRENT_BINARY_DIR}
58+
${onnxruntime_QNN_HOME}/include/QNN
59+
${onnxruntime_QNN_HOME}/include)
60+
61+
# Set linker flags for function(s) exported by EP DLL
62+
if(UNIX)
63+
target_link_options(onnxruntime_providers_qnn PRIVATE
64+
"LINKER:--version-script=${ONNXRUNTIME_ROOT}/core/providers/qnn/version_script.lds"
65+
"LINKER:--gc-sections"
66+
"LINKER:-rpath=\$ORIGIN"
67+
)
68+
elseif(WIN32)
69+
set_property(TARGET onnxruntime_providers_qnn APPEND_STRING PROPERTY LINK_FLAGS
70+
"-DEF:${ONNXRUNTIME_ROOT}/core/providers/qnn/symbols.def")
71+
else()
72+
message(FATAL_ERROR "onnxruntime_providers_qnn unknown platform, need to specify shared library exports for it")
73+
endif()
74+
75+
# Set compile options
76+
if(MSVC)
77+
target_compile_options(onnxruntime_providers_qnn PUBLIC /wd4099 /wd4005)
78+
else()
79+
# ignore the warning unknown-pragmas on "pragma region"
80+
target_compile_options(onnxruntime_providers_qnn PRIVATE "-Wno-unknown-pragmas")
81+
endif()
82+
83+
set_target_properties(onnxruntime_providers_qnn PROPERTIES LINKER_LANGUAGE CXX)
84+
set_target_properties(onnxruntime_providers_qnn PROPERTIES CXX_STANDARD_REQUIRED ON)
85+
set_target_properties(onnxruntime_providers_qnn PROPERTIES FOLDER "ONNXRuntime")
3086

31-
source_group(TREE ${ONNXRUNTIME_ROOT}/core FILES ${onnxruntime_providers_qnn_cc_srcs})
32-
onnxruntime_add_static_library(onnxruntime_providers_qnn ${onnxruntime_providers_qnn_cc_srcs})
33-
onnxruntime_add_include_to_target(onnxruntime_providers_qnn onnxruntime_common onnxruntime_framework onnx onnx_proto protobuf::libprotobuf-lite flatbuffers::flatbuffers Boost::mp11)
34-
target_link_libraries(onnxruntime_providers_qnn)
35-
add_dependencies(onnxruntime_providers_qnn onnx ${onnxruntime_EXTERNAL_DEPENDENCIES})
36-
set_target_properties(onnxruntime_providers_qnn PROPERTIES CXX_STANDARD_REQUIRED ON)
37-
set_target_properties(onnxruntime_providers_qnn PROPERTIES FOLDER "ONNXRuntime")
38-
target_include_directories(onnxruntime_providers_qnn PRIVATE ${ONNXRUNTIME_ROOT} ${onnxruntime_QNN_HOME}/include/QNN ${onnxruntime_QNN_HOME}/include)
39-
set_target_properties(onnxruntime_providers_qnn PROPERTIES LINKER_LANGUAGE CXX)
40-
# ignore the warning unknown-pragmas on "pragma region"
41-
if(NOT MSVC)
42-
target_compile_options(onnxruntime_providers_qnn PRIVATE "-Wno-unknown-pragmas")
87+
install(TARGETS onnxruntime_providers_qnn
88+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
89+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
90+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
4391
endif()

cmake/onnxruntime_python.cmake

+21-4
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,7 @@ if (onnxruntime_ENABLE_LAZY_TENSOR)
169169
endif()
170170
endif()
171171

172-
target_link_libraries(onnxruntime_pybind11_state PRIVATE
173-
onnxruntime_session
174-
${onnxruntime_libs}
172+
set(onnxruntime_pybind11_state_static_providers
175173
${PROVIDERS_NNAPI}
176174
${PROVIDERS_VSINPU}
177175
${PROVIDERS_XNNPACK}
@@ -183,7 +181,16 @@ target_link_libraries(onnxruntime_pybind11_state PRIVATE
183181
${PROVIDERS_XNNPACK}
184182
${PROVIDERS_WEBGPU}
185183
${PROVIDERS_AZURE}
186-
${PROVIDERS_QNN}
184+
)
185+
186+
if(onnxruntime_BUILD_QNN_EP_STATIC_LIB)
187+
list(APPEND onnxruntime_pybind11_state_static_providers PRIVATE onnxruntime_providers_qnn)
188+
endif()
189+
190+
target_link_libraries(onnxruntime_pybind11_state PRIVATE
191+
onnxruntime_session
192+
${onnxruntime_libs}
193+
${onnxruntime_pybind11_state_static_providers}
187194
onnxruntime_optimizer
188195
onnxruntime_providers
189196
onnxruntime_util
@@ -1000,6 +1007,16 @@ if (onnxruntime_USE_COREML)
10001007
endif()
10011008

10021009
if (onnxruntime_USE_QNN)
1010+
if(NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB)
1011+
add_custom_command(
1012+
TARGET onnxruntime_pybind11_state POST_BUILD
1013+
COMMAND ${CMAKE_COMMAND} -E copy
1014+
$<TARGET_FILE:onnxruntime_providers_qnn>
1015+
$<TARGET_FILE:onnxruntime_providers_shared>
1016+
$<TARGET_FILE_DIR:${build_output_target}>/onnxruntime/capi/
1017+
)
1018+
endif()
1019+
10031020
add_custom_command(
10041021
TARGET onnxruntime_pybind11_state POST_BUILD
10051022
COMMAND ${CMAKE_COMMAND} -E copy

cmake/onnxruntime_unittests.cmake

+17-7
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,13 @@ if(onnxruntime_USE_ARMNN)
619619
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_armnn)
620620
endif()
621621

622-
set(ONNXRUNTIME_TEST_LIBS
623-
onnxruntime_session
624-
${ONNXRUNTIME_INTEROP_TEST_LIBS}
625-
${onnxruntime_libs}
626-
# CUDA, ROCM, TENSORRT, MIGRAPHX, DNNL, and OpenVINO are dynamically loaded at runtime
622+
set(ONNXRUNTIME_TEST_STATIC_PROVIDER_LIBS
623+
# CUDA, ROCM, TENSORRT, MIGRAPHX, DNNL, and OpenVINO are dynamically loaded at runtime.
624+
# QNN EP can be built as either a dynamic and static libs.
627625
${PROVIDERS_NNAPI}
628626
${PROVIDERS_VSINPU}
629627
${PROVIDERS_JS}
630628
${PROVIDERS_WEBGPU}
631-
${PROVIDERS_QNN}
632629
${PROVIDERS_SNPE}
633630
${PROVIDERS_RKNPU}
634631
${PROVIDERS_DML}
@@ -637,6 +634,17 @@ set(ONNXRUNTIME_TEST_LIBS
637634
${PROVIDERS_COREML}
638635
${PROVIDERS_XNNPACK}
639636
${PROVIDERS_AZURE}
637+
)
638+
639+
if (onnxruntime_BUILD_QNN_EP_STATIC_LIB)
640+
list(APPEND ONNXRUNTIME_TEST_STATIC_PROVIDER_LIBS onnxruntime_providers_qnn)
641+
endif()
642+
643+
set(ONNXRUNTIME_TEST_LIBS
644+
onnxruntime_session
645+
${ONNXRUNTIME_INTEROP_TEST_LIBS}
646+
${onnxruntime_libs}
647+
${ONNXRUNTIME_TEST_STATIC_PROVIDER_LIBS}
640648
onnxruntime_optimizer
641649
onnxruntime_providers
642650
onnxruntime_util
@@ -700,7 +708,9 @@ if(onnxruntime_USE_QNN AND NOT onnxruntime_MINIMAL_BUILD AND NOT onnxruntime_RED
700708
list(APPEND onnxruntime_test_framework_src_patterns ${TEST_SRC_DIR}/providers/qnn/*)
701709
list(APPEND onnxruntime_test_framework_libs onnxruntime_providers_qnn)
702710
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_qnn)
703-
list(APPEND onnxruntime_test_providers_libs onnxruntime_providers_qnn)
711+
if(NOT onnxruntime_BUILD_QNN_EP_STATIC_LIB)
712+
list(APPEND onnxruntime_test_providers_dependencies onnxruntime_providers_shared)
713+
endif()
704714
endif()
705715

706716
if(onnxruntime_USE_SNPE)

0 commit comments

Comments
 (0)