Skip to content

Commit 9b52093

Browse files
committed
Refactor ONNX Runtime integration for platform support
Updated CMakeLists.txt to improve ONNX Runtime linking for Apple and MSVC platforms, including explicit handling of shared libraries and provider dependencies. Commented out DML provider code in ort-session-utils.cpp for Windows, likely due to build or compatibility issues.
1 parent de72cf1 commit 9b52093

File tree

2 files changed

+39
-17
lines changed

2 files changed

+39
-17
lines changed

CMakeLists.txt

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,24 +105,47 @@ if(USE_SYSTEM_ONNXRUNTIME)
105105
else()
106106
message(FATAL_ERROR "System ONNX Runtime is only supported on Linux!")
107107
endif()
108+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE onnxruntime::onnxruntime)
109+
elseif(APPLE)
110+
list(PREPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/onnxruntime")
111+
find_package(onnxruntime CONFIG REQUIRED)
112+
get_target_property(ONNXRUNTIME_DYLIB_PATH onnxruntime::onnxruntime IMPORTED_LOCATION_RELEASE)
113+
target_sources(${CMAKE_PROJECT_NAME} PRIVATE "${ONNXRUNTIME_DYLIB_PATH}")
114+
set_property(SOURCE "${ONNXRUNTIME_DYLIB_PATH}" PROPERTY MACOSX_PACKAGE_LOCATION Frameworks)
115+
set_target_properties(
116+
${CMAKE_PROJECT_NAME}
117+
PROPERTIES XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/../Frameworks"
118+
)
119+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE onnxruntime::onnxruntime)
120+
elseif(MSVC)
121+
set(ONNXRUNTIME_ROOT "${CMAKE_SOURCE_DIR}/onnxruntime")
122+
123+
add_library(onnxruntime::onnxruntime_provider_shared SHARED IMPORTED)
124+
set_target_properties(onnxruntime::onnxruntime_provider_shared PROPERTIES
125+
IMPORTED_IMPLIB "${ONNXRUNTIME_ROOT}/lib/onnxruntime_providers_shared.lib"
126+
IMPORTED_LOCATION "${ONNXRUNTIME_ROOT}/lib/onnxruntime_providers_shared.dll"
127+
INTERFACE_INCLUDE_DIRECTORIES "${ONNXRUNTIME_ROOT}/include"
128+
)
129+
130+
add_library(onnxruntime::onnxruntime SHARED IMPORTED)
131+
set_target_properties(onnxruntime::onnxruntime PROPERTIES
132+
IMPORTED_IMPLIB "${ONNXRUNTIME_ROOT}/lib/onnxruntime.lib"
133+
IMPORTED_LOCATION "${ONNXRUNTIME_ROOT}/lib/onnxruntime.dll"
134+
INTERFACE_INCLUDE_DIRECTORIES "${ONNXRUNTIME_ROOT}/include"
135+
)
136+
target_link_libraries(onnxruntime::onnxruntime INTERFACE onnxruntime::onnxruntime_provider_shared)
137+
138+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE onnxruntime::onnxruntime)
108139
else()
109140
list(PREPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/onnxruntime")
110141
find_package(onnxruntime CONFIG REQUIRED)
111-
if(APPLE)
112-
get_target_property(ONNXRUNTIME_DYLIB_PATH onnxruntime::onnxruntime IMPORTED_LOCATION_RELEASE)
113-
target_sources(${CMAKE_PROJECT_NAME} PRIVATE "${ONNXRUNTIME_DYLIB_PATH}")
114-
set_property(SOURCE "${ONNXRUNTIME_DYLIB_PATH}" PROPERTY MACOSX_PACKAGE_LOCATION Frameworks)
115-
set_target_properties(
116-
${CMAKE_PROJECT_NAME}
117-
PROPERTIES XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/../Frameworks"
118-
)
119-
endif()
142+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE onnxruntime::onnxruntime)
120143
endif()
121144

122145
add_subdirectory(src/update-checker/CurlClient)
123146
target_link_libraries(
124147
${CMAKE_PROJECT_NAME}
125-
PRIVATE CurlClient OpenCV::opencv_core OpenCV::opencv_imgproc onnxruntime::onnxruntime
148+
PRIVATE CurlClient OpenCV::opencv_core OpenCV::opencv_imgproc
126149
)
127150

128151
target_sources(

src/ort-utils/ort-session-utils.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#endif
88

99
#ifdef _WIN32
10-
#include <dml_provider_factory.h>
1110
#include <wchar.h>
1211
#include <windows.h>
1312
#endif // _WIN32
@@ -101,12 +100,12 @@ int createOrtSession(filter_data *tf)
101100
}
102101
#endif
103102
#ifdef _WIN32
104-
if (tf->useGPU == USEGPU_DML) {
105-
auto &api = Ort::GetApi();
106-
OrtDmlApi *dmlApi = nullptr;
107-
Ort::ThrowOnError(api.GetExecutionProviderApi("DML", ORT_API_VERSION, (const void **)&dmlApi));
108-
Ort::ThrowOnError(dmlApi->SessionOptionsAppendExecutionProvider_DML(sessionOptions, 0));
109-
}
103+
// if (tf->useGPU == USEGPU_DML) {
104+
// auto &api = Ort::GetApi();
105+
// OrtDmlApi *dmlApi = nullptr;
106+
// Ort::ThrowOnError(api.GetExecutionProviderApi("DML", ORT_API_VERSION, (const void **)&dmlApi));
107+
// Ort::ThrowOnError(dmlApi->SessionOptionsAppendExecutionProvider_DML(sessionOptions, 0));
108+
// }
110109
#endif
111110
#if defined(__APPLE__)
112111
if (tf->useGPU == USEGPU_COREML) {

0 commit comments

Comments
 (0)