diff --git a/CMakeLists.txt b/CMakeLists.txt index b15fe7b..35fb474 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,6 +131,8 @@ if(NOT CMAKE_BUILD_TYPE) endif() set(TRITON_ONNXRUNTIME_DOCKER_BUILD OFF) +# Download onnxruntime +include(cmake/download_onnxruntime.cmake) if(TRITON_ONNXRUNTIME_LIB_PATHS STREQUAL "") set(TRITON_ONNXRUNTIME_DOCKER_BUILD ON) endif() @@ -138,7 +140,7 @@ endif() message(STATUS "Using Onnxruntime docker: ${TRITON_ONNXRUNTIME_DOCKER_BUILD}") if(NOT TRITON_ONNXRUNTIME_DOCKER_BUILD) - find_library(ONNXRUNTIME_LIBRARY NAMES onnxruntime PATHS ${TRITON_ONNXRUNTIME_LIB_PATHS}) + find_library(ONNXRUNTIME_LIBRARY NAMES onnxruntime PATHS ${TRITON_ONNXRUNTIME_LIB_PATHS} REQUIRED) if(${TRITON_ENABLE_ONNXRUNTIME_OPENVINO}) find_library(OV_LIBRARY NAMES openvino diff --git a/cmake/download_onnxruntime.cmake b/cmake/download_onnxruntime.cmake new file mode 100644 index 0000000..0c09025 --- /dev/null +++ b/cmake/download_onnxruntime.cmake @@ -0,0 +1,31 @@ +if(DEFINED TRITON_ONNXRUNTIME_PACKAGE_URL) + + set(DOWNLOAD_PATH "${CMAKE_BINARY_DIR}/_deps/downloads/onnxruntime.zip") + set(EXTRACT_DIR "${CMAKE_BINARY_DIR}/_deps/downloads/onnxruntime") + + message(NOTICE "Downloading onnxruntime: ${TRITON_ONNXRUNTIME_PACKAGE_URL}") + + file(DOWNLOAD ${TRITON_ONNXRUNTIME_PACKAGE_URL} ${DOWNLOAD_PATH} SHOW_PROGRESS STATUS DOWNLOAD_STATUS) + + # file(DOWNLOAD ... STATUS DOWNLOAD_STATUS) returns a list with 2 elements + list(GET DOWNLOAD_STATUS 0 DOWNLOAD_RESULT) + + if(NOT DOWNLOAD_RESULT EQUAL 0) + message(NOTICE "Failed to download: ${TRITON_ONNXRUNTIME_PACKAGE_URL}") + else() + message(NOTICE "Download successful: ${DOWNLOAD_PATH}" ) + + file(ARCHIVE_EXTRACT INPUT ${DOWNLOAD_PATH} DESTINATION ${EXTRACT_DIR} VERBOSE ) + + file(READ "${EXTRACT_DIR}/VERSION_NUMBER" DOWNLOADED_ONNXRUNTIME_VERSION) + if(${DOWNLOADED_ONNXRUNTIME_VERSION} VERSION_EQUAL ${TRITON_BUILD_ONNXRUNTIME_VERSION}) + message(NOTICE "Downloaded onnxruntime version: ${DOWNLOADED_ONNXRUNTIME_VERSION}") + set(TRITON_ONNXRUNTIME_INCLUDE_PATHS ${EXTRACT_DIR}/include) + set(TRITON_ONNXRUNTIME_LIB_PATHS ${EXTRACT_DIR}/lib) + else() + message(NOTICE "Downloaded onnxruntime version: ${DOWNLOADED_ONNXRUNTIME_VERSION} does not match the required version: ${TRITON_BUILD_ONNXRUNTIME_VERSION}") + endif() + + endif(NOT DOWNLOAD_RESULT EQUAL 0) + +endif(DEFINED TRITON_ONNXRUNTIME_PACKAGE_URL) \ No newline at end of file